我尝试了几次将 pmml 函数从包 pmml 应用到由包 randomForest 创建的随机森林模型('model.rf'):
> library(randomForest)
> dim(data)
[1] 32000 76
> model.rf <- randomForest(x=data[,2:76],y=data[,1],type='regression',ntree=150)
> library(pmml)
> model.rf.pmml<-pmml(model.rf)
每次在我的 Windows 8 系统(i7-4500U / 8gb RAM)上花费几个小时,直到 R 崩溃。
模型相当大。.RData 文件(仅包含模型)约为。10mb 磁盘和:
> model.rf$forest$nrnodes
[1] 5819
是内存不足导致的崩溃?我意识到 R 进程在崩溃之前几乎占用了所有可用内存。如果是这样,将我的模型转换为 pmml 需要什么系统?
同样从 iris 示例看来,磁盘上的大小增加了约 15 倍,因为与 R 数据文件相比,XML 不是压缩格式:
> library(randomForest)
> iris.rf <- randomForest(Species ~ ., data=iris, ntree=20)
> save(iris.rf,file='iris.rf.RData')
> iris.rf.pmml<-pmml(iris.rf)
> saveXML(iris.rf.pmml,file='iris.rf.xml')
iris.rf.RData --> 4kb iris.rf.xml --> 59kb
这个因素是恒定的吗?我的模型的 pmml 版本会在磁盘上约为 150mb 吗?