【问题标题】:When GBM model saved and loaded doesn't give same predicted values when model loaded again and again当GBM模型保存和加载时,模型一次又一次加载时没有给出相同的预测值
【发布时间】:2018-11-21 05:22:11
【问题描述】:

我训练了一个 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% 的记录。我这样打印的区别:

其中 ID 是唯一编号。 PRD_ORIG 在第一次运行中出现,PRED_NEW 在第二次运行中出现。在第二次运行中,我再次加载模型。如果我没有加载模型,而是在已加载的模型上再次对数据进行评分,那么我看不到 PRED 值有任何差异。

你见过这种行为吗?我期望每次加载模型并对其进行评分时,对于相同的评分数据,这应该给出相同的 PRED 值。

谢谢。

【问题讨论】:

    标签: r gbm


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 2018-06-30
      • 2013-05-24
      • 1970-01-01
      • 2016-04-09
      • 2023-03-18
      • 2020-03-16
      • 1970-01-01
      • 2021-07-07
      相关资源
      最近更新 更多