随机森林会过拟合吗?

数据挖掘 机器学习 随机森林
2021-10-08 21:23:34

我一直在阅读有关随机森林的信息,但我无法真正找到关于过度拟合问题的明确答案。根据 Breiman 的原始论文,他们在增加森林中的树木数量时不应过度拟合,但似乎对此并没有达成共识。这让我对这个问题有些困惑。

也许比我更专业的人可以给我一个更具体的答案,或者为我指出正确的方向以更好地理解问题。

4个回答

每个具有高复杂度的 ML 算法都可能过拟合。但是,OP 正在询问在增加森林中的树木数量时 RF 是否不会过拟合。

一般来说,集成方法将预测方差几乎减少到零,从而提高了集成的准确性。如果我们将单个随机模型的预期泛化误差的方差定义为:

这里,一个集成的预期泛化误差的方差对应于:

其中p(x)是在来自两个独立种子的相同数据上训练的两个随机模型的预测之间的 Pearson 相关系数。如果我们增加 RF 中 DT 的数量,更大M的 ,则集成的方差在 时减小ρ(x)<1因此,集成的方差严格小于单个模型的方差。

简而言之,增加集成中单个随机模型的数量永远不会增加泛化误差。

您可能需要检查cross-validated - 一个 stachexchange 网站,其中包含许多内容,包括机器学习。

特别是,这个问题(标题完全相同)已经被回答了多次。检查这些链接

但我可能会给你一个简短的答案:是的,它确实过拟合,有时你需要控制森林中树木的复杂性,甚至在它们长得太多时修剪——但这取决于你使用的库建设森林。例如在randomForestR 中你只能控制复杂度

  1. 随机森林确实过拟合。
  2. 向模型中添加更多树时,随机森林不会增加泛化误差。随着使用更多的树,泛化方差将变为零。

我做了一个非常简单的实验。我已经生成了合成数据:

y = 10 * x + noise

我训练了两个随机森林模型:

  • 一棵长满树的
  • 一棵修剪过的树

与修剪树模型相比,具有完整树的模型具有较低的训练误差但较高的测试误差。两种模型的反应:

回应

这是过度拟合的明显证据。然后我获取过拟合模型的超参数,并在每一步添加树时检查错误。我得到了以下情节:

种植树木

如您所见,添加更多树时过度拟合错误没有改变,但模型过度拟合。我的博客文章中描述了代码示例的实验

结构化数据集 -> 误导性 OOB 错误

我在工作实践中发现了有趣的 RF 过拟合案例。当数据是结构化的时,OOB 观察结果上的 RF 过拟合。

细节:

我尝试预测电力现货市场上每个小时的电价(数据集的每一行都包含该小时的价格和系统参数(负载、容量等))。
电价是分批创建的(电力市场上的 24 个价格是在一个固定的时间内创建的)。
因此,每棵树的 OOB obs 是一组小时的随机子集,但是如果您预测接下来的 24 小时,您会一次完成所有操作(在第一刻您获得所有系统参数,然后您预测 24 个价格,然后有一个修复会产生这些价格),因此更容易做出OOB预测,然后是整个第二天。OOB obs 不包含在 24 小时区块中,而是均匀分布,因为存在预测误差的自相关,因此更容易预测单个小时的价格,然后预测整个缺失小时的区块。

在错误自相关的情况下更容易预测:
已知,已知,预测,已知,预测- OBB 案例
更难的一个:
已知,已知,已知,预测,预测- 现实世界预测案例

我希望这很有趣。