【问题标题】:Confusing confusion matrix parameters changing output混淆矩阵参数改变输出
【发布时间】:2017-02-18 15:40:45
【问题描述】:

我运行了一个预测随机森林模型。当我运行下面的代码时,我得到两个不同的混淆矩阵 - 唯一的区别是我在预测函数中使用 data = train 和一个我只使用“train”。为什么这会产生如此大的影响——一个人的召回率要差得多。

conf.matrix <- table(train$Status,predict(fit2,train))

               Pred:Churn Pred:Current
  Actual:Churn         2543          984
  Actual:Current         44        27206

conf.matrix <- table(train$Status,predict(fit2,data = train))

                Pred:Churn Pred:Current
  Actual:Churn         1609         1918
  Actual:Current        464        26786

非常感谢。

【问题讨论】:

  • 参数的名称是newdata = 而不是data = 。
  • 好的,谢谢,那么为什么 data = 会起作用并影响结果呢?
  • 您可能调用的predict() 与predict.randomForest() 不同,后者具有data = 参数。

标签: r machine-learning random-forest confusion-matrix


【解决方案1】:

第二个示例中的data 参数被忽略,因为@mtoto 和@agenis 指出正确的参数名称是newdata。在没有 newdata 的情况下,predict.randomForest 将返回模型的 out-of-bag 预测。

这就是你想要做的。

来自我在CrossValidated:的帖子

请注意两者之间存在差异

predict(model)

和

predict(model, newdata=train)

在获取训练数据集的预测时。第一个选项从随机森林中获取袋外预测。在将预测值与训练数据的实际值进行比较时,这通常是您想要的。

第二个将您的训练数据视为一个新数据集,并沿每棵树运行观察结果。这将导致预测值和实际值之间人为地密切相关,因为 RF 算法通常不会修剪单个树,而是依靠树的集合来控制过度拟合。因此,如果您想对训练数据进行预测,请不要这样做。

【讨论】:

  • 啊,好的,非常感谢。所以当我想用新数据测试模型时应该使用 newdata = test 吗?
猜你喜欢
  • 1970-01-01
  • 2018-11-27
  • 2021-09-29
  • 2016-09-19
  • 1970-01-01
  • 2015-12-17
  • 2020-10-01
  • 2012-01-20
  • 2019-11-23
相关资源
最近更新 更多