最近使用foreach以及doParallel这个包进行并行计算。使用GBM包中gbm函数进行GBDT算法。想用此算法实现GBDT算法的预测,虽然GBDT算法是递归的算法,但是我在进行计算时,是对决策树的数目进行每台机器的树的数量的分配。我的疑问是GBM函数是否可以向randomforest算法一样使用:
model<-foreach(ntree=rep(,n.cores),.combine=,.packages="randomForest")%dopar%randomForest(x,y,ntree)
这样的形式进行计算,我自己拿数据进行验证时,发现在使用GBM算法进行计算时,ntree不进行每天机器上的均匀分配,即不使用rep函数,直接用数值表示,比如ntree=1000,这样进行计算时,模型的运行内存不能平均分配,大都在一台机器上运行;如果使用rep函数,比如ntree=4000颗树,我将其设置为4台服务器上分别1000棵树(rep(1000,4)),这样设置模型运行不会出错,运行速率会加快一倍左右,但是进行回归预测时,认为该模型不是gbm的对象,无法进行预测?
这个该怎么解,有没有可以在gbm模型上使用并行算法的计算?谢谢!请各位见多识广的朋友,多多提想法,我会一一去验证,谢谢!