我正在使用R(2.1.3版,4.6-2版的ForestForest)中的randomForest软件包进行回归,并注意到我的结果存在明显偏差:预测误差取决于响应变量的值。高值被低估,而低值被高估。起初,我怀疑这是我的数据的结果,但是以下简单示例表明这是随机森林算法所固有的:
n = 1000;
x1 = rnorm(n, mean = 0, sd = 1)
response = x1
predictors = data.frame(x1=x1)
rf = randomForest(x=predictors, y=response)
error = response-predict(rf, predictors)
plot(x1, error)
我怀疑偏差取决于响应的分布,例如,如果x1
是均匀分布的,则没有偏差;如果x1
是指数分布,则偏差是单边的。本质上,正态分布尾部的响应值是异常值。模型很难预测离群值也就不足为奇了。在randomForest的情况下,来自分布尾部的极高幅度的响应值不太可能最终出现在末端叶片中,并且其效果将在集合平均中被淘汰。
请注意,我尝试在前面的示例“ R线性回归尾部mtry中的RandomForest”中捕获此效果。这是一个不好的例子。如果以上示例中的偏差确实是该算法固有的,则可以得出这样的偏差校正值:给定一个正试图预测的响应分布,从而可以进行更准确的预测。
基于树的方法(例如随机森林)是否受到响应分布偏差的影响?如果是这样,这是统计界先前所知的,通常如何进行校正(例如,使用偏倚模型的残差作为输入的第二个模型)?
校正依赖于响应的偏差很困难,因为从本质上来说,响应是未知的。不幸的是,估计/预测响应通常与偏见没有相同的关系。