随机森林与回归


21

我对具有5个独立变量的数据集运行了OLS回归模型。自变量和因变量都是连续的并且线性相关。R平方约为99.3%。但是,当我在R中使用随机森林运行相同的结果时,结果是“%Var解释为:88.42”。为什么随机森林结果不如回归?我的假设是,随机森林至少与OLS回归一样好。


4
如果您的目标是预测,则较高的R平方可能是由于过度拟合。尝试使用交叉验证将RN预测与回归预测进行比较。
2013年

Answers:


27

我不知道您到底做了什么,因此您的源代码将帮助我减少猜测。

实际上,许多随机森林都是窗口,在其中假定平均值代表该系统。这是过度夸张的CAR树。

假设您有两叶CAR树。您的数据将分为两堆。每堆的(恒定)输出将为其平均值。

现在,对数据的随机子集进行1000次处理。您仍将具有不连续区域,其输出为平均值。RF中的赢家是最常见的结果。那只是“模糊”类别之间的边界。

CART树的分段线性输出示例:

例如,让我们说我们的函数是y = 0.5 * x + 2。它的图如下所示: 图1

如果要使用只有两个叶子的单个分类树对此模型建模,那么我们将首先找到最佳分割点,在该点处分割,然后将每个叶子处的函数输出近似为叶子上的平均输出。

用简单的CART绘制

如果我们使用CART树上的更多叶子再次进行此操作,则可能会得到以下结果: 在此处输入图片说明

为什么选择汽车森林?

您可以看到,在无限树叶的限制内,CART树将是可接受的近似值。

问题在于现实世界是嘈杂的。我们喜欢思考方式,但是世界既喜欢中心趋势(均值),也喜欢变化趋势(std dev)。有噪音。

赋予CAR-tree强大的强度和处理不连续性的能力的同一件事,使得它很容易像信号一样对噪声建模。

因此,Leo Breimann提出了一个简单而强大的命题:使用Ensemble方法使分类树和回归树变得健壮。他采用随机子集(引导重采样的表亲),并使用它们来训练CAR树的森林。当您询问森林问题时,整个森林都会说话,最常见的答案将作为输出。如果要处理数字数据,将期望值作为输出很有用。

因此,对于第二个图,请考虑使用随机森林进行建模。每棵树将具有数据的随机子集。这意味着“最佳”分割点的位置会因树而异。如果要绘制随机森林的输出图,则在您接近不连续点时,前几个分支将指示一个跳跃,然后是多个。该区域中的平均值将穿过一条平滑的S形路径。自举正在与高斯卷积,该阶跃函数上的高斯模糊变为S形。

底线:

每棵树需要很多分支才能很好地近似线性函数。

您可以更改许多“拨号”以影响答案,并且不太可能将它们全部设置为正确的值。

参考文献:


难道不是用分段常数函数执行RANDOM森林回归,这显然不适合线性相关数据吗?
seanv507

我想我们在说同样的话。使用哪个常数?对。
EngrStudent-恢复莫妮卡

如果我以为我们在说同样的话,那我会把它作为评论。我不明白你的答案。我的答案解释说,OPs数据是线性的,因此很难通过分段常数函数进行拟合。
seanv507

@ seanv507 RF的好处是,适合于数据的扰动版本(的随机子集)的多个树将不连续性平均化。与单棵树所产生的结果相比,结果是对基础平滑线的更好近似。
Hong Ooi 2013年

本质上,它是在回归树上进行引导重采样。关于引导程序,我不喜欢的一件事是,统一分发被视为信息丰富的先验。理想情况是不是非情报先验?
EngrStudent-恢复莫妮卡

7

我注意到这是一个古老的问题,但是我认为应该添加更多内容。正如@Manoel Galdino在评论中所说,通常您对看不见的数据的预测感兴趣。但是这个问题是关于训练数据的性能,而问题是为什么随机森林在训练数据上表现不佳?答案凸显了袋装分类器的一个有趣问题,该问题经常给我带来麻烦:回归均值。

问题在于,袋装分类器(如随机森林)是通过从数据集中获取引导样本而制成的,它们在极端情况下往往表现不佳。由于极端情况下没有太多数据,因此它们倾向于被平滑掉。

更详细地讲,请记住,用于回归的随机森林对大量分类器的预测取平均值。如果您有一个与其他点相距甚远的单点,则许多分类器将看不到它,并且这些分类器实际上将做出样本外预测,这可能不是很好。实际上,这些样本外预测将趋向于将数据点的预测拉向总体均值。

如果使用单个决策树,则极值不会有相同的问题,但是拟合的回归也不是很线性。

这是R中的一个示例。生成的一些数据是y五个x变量的完美衬里组合。然后使用线性模型和随机森林进行预测。然后将y训练数据上的值与预测值作图。您可以清楚地看到,随机森林在极端情况下表现不佳,因为具有非常大或非常小的值的数据点y很少。

当使用随机森林进行回归时,对于看不见的数据进行预测时,您将看到相同的模式。我不确定如何避免这种情况。randomForestR中的函数有一个粗略的偏差校正选项corr.bias,该选项对偏差使用线性回归,但实际上并不起作用。

欢迎提出建议!

beta <- runif(5)
x <- matrix(rnorm(500), nc=5)
y <- drop(x %*% beta)
dat <- data.frame(y=y, x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4], x5=x[,5])
model1 <- lm(y~., data=dat)
model2 <- randomForest(y ~., data=dat)
pred1 <- predict(model1 ,dat)
pred2 <- predict(model2 ,dat)
plot(y, pred1)
points(y, pred2, col="blue")

在此处输入图片说明


我同意您的观察,但是在数据点很少的区域,我已成为RF回归均值的粉丝。好吧,如果非常确定要找到一个很好的整体线性结构,直到训练集的边界一直只有很少的数据点支持,那么只需进行线性校正并让RF处理残差即可。
Soren Havelund Welling 2015年

2
感谢您的评论!我有一个令人讨厌的经历,其中给出的预测非常糟糕,这使我看起来很糟糕。但是也许没有办法在不增加方差的情况下获得更准确的边界点预测。
Flounderer 2015年

几年后的另一条评论是,我注意到在数据中存在微小差距的任何地方,RF的表现都往往很差。当然,在数据集的最末端通常会出现较少的数据,但是有时您可能偶尔会在中间出现空白。RF可以正确处理具有任何空白的数据集。
SeldomSeenSlim

2

随机森林试图在许多要素和许多数据点之间找到位置。它会将要素拆分并提供给不同的树,因为要素数量少,总体效果不如逻辑回归。随机森林可以处理数字和分类变量,但不擅长处理缺失值。


0

我认为,当Xs和y之间的关系的函数形式复杂时(由于非线性关系和交互作用),随机森林(RF)是一个很好的工具。RF根据最佳切点(按最小SSE)对Xs进行分类,并且不应用研究人员有关关系的功能形式的信息。另一方面,OLS回归使用此信息。在您的示例中,您知道Xs和y之间的关系的确切类型,并在回归模型中使用所有这些信息,但是RF不使用此信息。


-2

从根本上讲,回归在连续变量上表现出色,而回归林在离散变量上表现出色。

您需要提供有关问题和变量性质的更多详细信息,以便更具体...


所有变量的股票每日收益(金融时间序列)...
user28906

3
“回归在连续变量上表现良好,而随机森林在离散变量上表现良好。”:通常情况并非如此。推论和预测有区别,甚至在进行预测的情况下,在某些情况下,回归比RF更可取。
AdamO
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.