R线性回归中的RandomForest尾部mtry

rum*_*leB 6 statistics regression r random-forest

我在R(R版本2.13.1,randomForest版本4.6-2)中使用randomForest包进行回归,并注意到我的结果存在显着偏差:预测误差取决于响应变量的值.高值低于预测值,低值超出预测值.起初我怀疑这是我的数据的结果,但下面的简单示例表明这是随机森林算法固有的:

n = 50; 
x1 = seq(1,n) 
x2 = matrix(1, n, 1)
predictors = data.frame(x1=x1, x2=x2)
response = x2 + x1
rf = randomForest(x=predictors, y=response)
plot(x1, response)
lines(x1, predict(rf, predictors), col="red")
Run Code Online (Sandbox Code Playgroud)

毫无疑问树方法在线性方面有其局限性,但即使是最简单的回归树,例如R中的树(),也没有表现出这种偏差.我无法想象社区会不会意识到这一点,但没有找到任何提及,它一般如何纠正?谢谢你的评论

编辑:对于这个问题的例子是有缺陷的,请参阅"随机森林对中的R回归-响应分布依赖偏压"在堆栈交换的改进的治疗https://stats.stackexchange.com/questions/28732/randomforest-for-regression -in-R-响应分布依赖偏压

jor*_*ran 5

您发现的并不是随机森林中的固有偏差,而只是未能正确调整模型上的调整参数.

使用您的示例数据:

rf = randomForest(x=predictors, y=response,mtry = 2,nodesize = 1)
plot(x1, response)
lines(x1, predict(rf, predictors), col="red")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

对于你的真实数据,改进当然不会那么明显,我敢打赌你会获得更多的里程nodesizemtry(mtry这里的大部分工作).

常规树没有表现出这种"偏见"的原因是因为它们默认搜索所有变量以获得最佳分割.