【发布时间】: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=1,randomForest 的分类错误率为 34.3%,glmnet 为 8.9%。
请让我知道我在使用 randomForest 时做错了什么,以及如何解决它。
【问题讨论】:
-
需要注意的是,randomForest 报告的错误率是真实的样本外数据,而 cv.glmnet 则不是。 cv.glmnet 是一个寻找 lambda 最佳值的工具(并且,通过一些编码,alpha 也是如此),但错误将是乐观的。您应该将数据拆分为实际的训练集和验证集,以便在两种方法之间进行有用的比较。
-
谢谢,这点很有帮助,Hong Ooi。我很好奇这样一个事实,即分类误差对于最少数量的树来说是最低的,并且它随着树数量的增长而增长。我看过,但在任何地方都没有看到任何提及。看起来很奇怪。
-
这个问题可能更适合交叉验证stats.stackexchange.com
-
好的,谢谢 Stas 我会在那里发帖
标签: r classification random-forest