一次又一次加载模型时,当保存和加载GBM模型时,给出的预测值不同

时间:2018-11-20 17:22:33

标签: r gbm

我训练了GBM模型(分类),并使用以下方法保存了该模型:

saveRDS(gbmfit, file='E:/..../gbm_nb.rds')

当我使用上述模型对数据评分时,我使用以下方法加载数据:

gbmfit <- readRDS('E:/..../gbm_nb.rds')

并预测:

nb_lapse$PRED <- predict(gbmfit, nb_lapse, type='response', n.trees=2000)

每次我对相同的评分数据运行时,此PRED值都应该相同。但是其中一些价值观却有所不同。我已经通过以上代码的两次运行打印了这些,差异大约是记录的3%。我打印出来的区别是这样的: enter image description here

其中ID是唯一编号。 PRD_ORIG首次运行,而PRED_NEW即将第二次运行。在第二次运行中,我再次加载模型。如果我不加载模型,而是在已经加载的模型上再次对数据评分,那么我看不到PRED值有什么区别。

您看到过这种行为吗?我希望每次加载模型并对其评分时,对于相同的评分数据,它应该给出相同的PRED值。

谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了答案。我有一个类别变量,说A,有很多类别。在火车数据中,我根据数据框中的另一个变量B来为那些类别设置了上限。在评分数据帧中,不存在变量B。因此,尽管我的得分数据通过上限代码,但类别的实际上限并未发生。如果不执行代码,R不会抛出任何错误。因此,在评分数据中,我最终在分类变量A中拥有比在模型上进行训练的训练数据中更多的类别。这造成了问题,对于那些与火车数据不同或不存在的数据点,我得到了不同的预测值。一旦像火车数据一样给评分数据分类变量设置了上限,每次的预测值都会相同。