【问题标题】:random forest gets worse as number of trees increases随着树木数量的增加,随机森林变得更糟
【发布时间】:2016-01-21 12:23:51
【问题描述】:

在使用randomForest(在 R 中)处理分类问题时遇到了困难。我的 R 代码、图像和数据在这里: http://www.psy.plymouth.ac.uk/research/Wsimpson/data.zip 在每次试验中,观察者看到的要么是一个微弱的图像(对比度=con),要么是隐藏在噪声中,或者只是噪声。他对这张脸存在的信心 (rating) 进行了评价。我将rating 归类为是/否判断(y)。在每个 100 次试验(一个文件)的块中,面部要么是倒置的 (invert=1),要么是不倒置的。我使用对比度(预测矩阵的第一列x)和像素(其余列)来预测y

对于我的应用程序来说,最后有一个“重要性图像”非常重要,它显示了每个像素对决策 y 的贡献程度。我有 1000 次试验(y 的长度)和 4248 像素+对比度=4249 个预测变量(x 的 ncols)。在这个问题上使用glmnet(逻辑岭回归)效果很好

fit<-cv.glmnet(x,y,family="binomial",alpha=0)

然而randomForest根本不起作用,

fit <- randomForest(x=x, y=y, ntree=100)

随着树木数量的增加,情况会变得更糟。对于invert=1randomForest 的分类错误率为 34.3%,glmnet 为 8.9%。

请让我知道我在使用 randomForest 时做错了什么,以及如何解决它。

【问题讨论】:

  • 需要注意的是,randomForest 报告的错误率是真实的样本外数据,而 cv.glmnet 则不是。 cv.glmnet 是一个寻找 lambda 最佳值的工具(并且,通过一些编码,alpha 也是如此),但错误将是乐观的。您应该将数据拆分为实际的训练集和验证集,以便在两种方法之间进行有用的比较。
  • 谢谢,这点很有帮助,Hong Ooi。我很好奇这样一个事实,即分类误差对于最少数量的树来说是最低的,并且它随着树数量的增长而增长。我看过,但在任何地方都没有看到任何提及。看起来很奇怪。
  • 这个问题可能更适合交叉验证stats.stackexchange.com
  • 好的,谢谢 Stas 我会在那里发帖

标签: r classification random-forest


【解决方案1】:

岭回归的唯一参数 lambda 是通过 cv.glmnet 中的内部交叉验证选择的,正如 Hong Ooi 所指出的那样。并且您从cv.glmnet 得到的错误率与此有关。 randomForest 为您提供类似于专用测试集上的错误的 OOB 错误(这是您感兴趣的)。

randomForest 需要您手动校准它(即有一个专门的验证集来查看哪些参数最有效)并且有一些需要考虑:树的深度(通过固定每个节点中的示例数量或节点数),在每次拆分时考虑的随机选择属性的数量和树的数量。您可以使用tuneRF 找到mtry 的最佳数量。

在训练集上进行评估时,添加的树越多,预测的效果就越好。但是,您会看到在生长一定数量的树后,测试集的预测能力开始下降——这是由于过度拟合造成的。 randomForest 通过 OOB 误差估计确定最佳树数,或者,如果您提供它,则使用测试集。如果rf.mod 是您拟合的RF 模型,那么plot(rf.mod) 将让您大致了解它在什么时候开始过度拟合。在合适的 RF 上使用 predict 函数时,它将使用最佳数量的树。

简而言之,您没有正确比较两个模型的性能(正如 Hong Ooi 指出的那样),而且您的参数可能已关闭和/或您可能过度拟合(尽管只有 100 棵树不太可能)。

【讨论】:

  • 非常感谢各位。从本质上讲,randomForest 在一棵树上表现最好,并且从那里一直下坡(随着树木的增加)!很奇怪。
  • 你试过rpart吗? (回归/分类树包)。但这听起来确实很奇怪——集成方法通常工作得非常好,我很难想象为什么在一个树上添加更多的树会损害预测能力。但如果不了解更多数据,就很难说更多。
  • stas,我已经给出了一个链接,如果你想看它们并和它们一起玩,你可以下载数据。让我说这些数据确实非常有规律,如果我忽略所有像素,只用 con 作为预测变量进行普通的逻辑回归,那么拟合非常好。 glmnet 的结果与我预期的完全一样,像素的重要性与预期的一样。我有另一种计算像素重要性的方法(不是在分类文献中,而是来自我的专业视觉领域),它与 glmnet 解决方案非常吻合。
猜你喜欢
  • 2017-12-24
  • 2017-08-29
  • 2015-10-26
  • 2019-10-23
  • 1970-01-01
  • 2016-05-02
  • 2016-10-08
  • 2014-09-19
  • 2016-07-05
相关资源
最近更新 更多