随着森林数量的增加,随机森林变得越来越糟

时间:2015-10-22 09:12:35

标签: r classification random-forest

在使用randomForest(在R中)进行分类问题时,我遇到了困难。我的R代码,图像和数据在这里: http://www.psy.plymouth.ac.uk/research/Wsimpson/data.zip 向观察者呈现隐藏在噪声中的微弱图像(对比度= con)或每次试验中的噪声。他评价面部存在的信心(rating)。我已将rating归类为是/否判断(y)。在100个试验的每个块(一个文件)中,面部要么倒置(invert=1)要么不倒置。我使用对比度(预测变量矩阵的第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我做错了什么,以及如何解决。

1 个答案:

答案 0 :(得分:1)

正如Hong Ooi所指出的那样,

岭回归的唯一参数lambda是通过cv.glmnet中的内部交叉验证来选择的。以及从cv.glmnet个实际中获得的错误率。 randomForest给出OOB错误,类似于专用测试集上的错误(这是您感兴趣的内容)。

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

在火车组上进行评估时,添加的树越多,预测得到的效果就越好。然而,在一定数量的树木生长之后,你会发现测试集上的预测能力开始减少 - 这是由于过度拟合。 randomForest通过OOB错误估计确定最佳树数,或者,如果提供,则使用测试集确定树的最佳数量。如果rf.mod是你拟合的射频模型,那么plot(rf.mod)将允许你看到它大致开始过度拟合的点。当在适合的RF上使用predict函数时,它将使用最佳树数。

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