R线性回归中的随机森林

R线性回归中的随机森林,r,statistics,regression,random-forest,R,Statistics,Regression,Random Forest,我使用R中的randomForest软件包(R版本2.13.1,randomForest版本4.6-2)进行回归,并注意到我的结果中存在一个显著的偏差:预测误差取决于响应变量的值。高值预测不足,低值预测过高。起初我怀疑这是我的数据造成的,但下面的简单示例表明,这是随机林算法固有的: n = 50; x1 = seq(1,n) x2 = matrix(1, n, 1) predictors = data.frame(x1=x1, x2=x2) response = x2 + x1 rf = r

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

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")
毫无疑问,树方法在线性方面有其局限性,但即使是最简单的回归树,例如R中的tree(),也不会表现出这种偏差。我无法想象社区会不知道这一点,但没有发现任何提及,它通常是如何纠正的?谢谢你的评论


编辑:这个问题的例子是有缺陷的,请参阅stack exchange上的“R中回归的随机森林-响应分布依赖性偏差”以获得改进的处理

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

使用您的示例数据:

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

当然,对于您的真实数据而言,改进不太可能如此明显,我敢打赌您将从
nodesize
中获得比
mtry
更多的里程数(
mtry
完成了这里的大部分工作)


常规树没有表现出这种“偏差”的原因是,默认情况下,它们会搜索所有变量以获得最佳分割。

谢谢Joran。有些事情感觉不对劲,我很高兴看到有解决办法。不幸的是,对于我的工作,我已经调整了参数,但效果甚微(当然nTrees除外),因此我在这个“简单”的例子中基本上忽略了它们-我想在我的案例中确实存在偏差,这要感谢againFair…尽管它仅限于您的数据,但在RFs中并不是真正的偏差,是吗?;)你只是有一些难以建模的数据!是的,RF中的偏差是可以避免的-我已经更改了这个问题的标题,以便将来它可能对人们更有帮助