随机森林回归 - 与响应相关的残差

机器算法验证 r 回归 机器学习 随机森林 集成学习
2022-03-03 15:32:12

我正在尝试使用随机森林回归。我有一个响应变量:

y = rnorm(10000, mean=0, sd=3)

还有一些预测变量(只是添加了噪声的响应):

x = data.frame(v1=y + rnorm(10000, mean=0, sd=3), v2=y + rnorm(10000, mean=0, sd=3), v3=y + rnorm(10000, mean=0, sd=3))

我建立随机森林:

r = randomForest(x, y)

该模型很好,解释了约 73% 的方差。但是,当我查看残差时:

plot(y, y - r$predicted)

残差不是以零为中心,而是与响应变量相关

它们不是以零为中心,而是与响应变量相关。模型似乎应该纠正这一点。也许,由于每个 OOB 预测都是平均值,这种行为是某种“回归均值”?有谁知道为什么会这样?我能做些什么吗?

我正在尝试建立一个模型并使用残差来估计一些东西。现在,它们毫无用处,因为它们只反映了我试图预测的价值。如果有人可以提供帮助,我将不胜感激!

1个回答

这正是您应该期望看到的。

你会看到与普通回归模型完全相同的东西;如果模型的大于 0,则残差与响应相关。这是与残差不相关的拟合值。R2

具体来说,每个回归都捕获了预测变量解释的这样做意味着与残差不相关——因为如果它不是不相关的,就会有可以捕获的未捕获的变化。由于捕获了可以在回归模型中捕获的所有内容,因此残差必须与实际值相关:yy^xxy

Cov(y,yy^)=Cov(yy^,yy^)+Cov(y^,yy^)=Var(yy^)+0=σ2

- 由于该协方差是正的,因此相关性将是。

正则化在某种程度上改变了事情,但出现了相同的相关性。

[模型未捕获的分量,即使它只是纯噪声,显然与自身相关这就是我们在这里看到的全部]y

这种相关性将存在于每一个回归中,因此相关性将延续到整个随机森林。

这里没有什么可修复的,它实际上应该这样做。即使您完全符合生成数据的模型,您也会看到它。

 x = rbeta(1000,1.8,1.8)*20+5     # make some x variable
 y = 0.8+0.3*x+rnorm(1000,0,1.5)  # simulate a regression model
 lmfit = lm(y~x)                  # fit the true regression model
 plot(y,lmfit$residual)           # voila!                             $
 cor(y,lmfit$residual)

在此处输入图像描述

对于此示例,您将看到 70% 附近的相关性。

事实上,如果你增加噪声项的方差(其他条件相同),相关性更强尝试以上噪音更大的方法:

 y = 0.8+0.3*x+rnorm(1000,0,2.5)  # simulate a regression model

看看会发生什么!

您可能会想问另一个问题来解释您试图解决的原始问题,因为您选择如何解决它可能并不理想(很难从这里判断出来)。