随机森林与回归

机器算法验证 r 回归 随机森林
2022-02-02 02:08:23

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

4个回答

我不确切知道你做了什么,所以你的源代码可以帮助我减少猜测。

许多随机森林本质上是一个窗口,在其中假设平均值代表系统。它是一棵过度美化的 CAR 树。

假设你有一个两叶的 CAR-tree。您的数据将分成两堆。每堆的(恒定)输出将是它的平均值。

现在让我们用数据的随机子集做 1000 次。您仍然会有不连续的区域,其输出是平均值。RF 中的获胜者是最常见的结果。那只是“模糊”类别之间的边界。

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

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

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

用琐碎的 CART 绘图

如果我们要在 CART 树上使用更多叶子再次执行此操作,那么我们可能会得到以下结果: 在此处输入图像描述

为什么选择汽车森林?

您可以看到,在无限叶的限制下,CART 树将是一个可接受的近似器。

问题是现实世界是嘈杂的。我们喜欢用均值思考,但世界既喜欢集中趋势(均值),也喜欢变异趋势(标准差)。有噪音。

赋予 CAR-tree 强大力量和处理不连续性的能力的同一件事,使它容易受到建模噪声的影响,就好像它是信号一样。

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

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

底线:

您需要每棵树有很多分支才能很好地逼近一个非常线性的函数。

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

参考:

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

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

更详细地说,回想一下用于回归的随机森林对大量分类器的预测进行平均。如果您有一个与其他点相距甚远的点,则许多分类器将看不到它,而这些分类器本质上将进行样本外预测,这可能不是很好。事实上,这些样本外预测往往会将数据点的预测拉向整体均值。

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

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

当使用随机森林进行回归时,您将看到对看不见的数据进行预测的相同模式。我不知道如何避免它。R 中的randomForest函数有一个粗略的偏差校正选项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")

在此处输入图像描述

随机森林试图在大量特征和大量数据点中找到位置。它将特征拆分并将它们提供给不同的树,因为您的特征数量很少,因此整体结果不如逻辑回归。随机森林可以处理数字和分类变量,但不擅长处理缺失值。

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