我一直在阅读有关随机森林的信息,但我无法真正找到关于过度拟合问题的明确答案。根据 Breiman 的原始论文,他们在增加森林中的树木数量时不应过度拟合,但似乎对此并没有达成共识。这让我对这个问题有些困惑。
也许比我更专业的人可以给我一个更具体的答案,或者为我指出正确的方向以更好地理解问题。
我一直在阅读有关随机森林的信息,但我无法真正找到关于过度拟合问题的明确答案。根据 Breiman 的原始论文,他们在增加森林中的树木数量时不应过度拟合,但似乎对此并没有达成共识。这让我对这个问题有些困惑。
也许比我更专业的人可以给我一个更具体的答案,或者为我指出正确的方向以更好地理解问题。
每个具有高复杂度的 ML 算法都可能过拟合。但是,OP 正在询问在增加森林中的树木数量时 RF 是否不会过拟合。
一般来说,集成方法将预测方差几乎减少到零,从而提高了集成的准确性。如果我们将单个随机模型的预期泛化误差的方差定义为:
从这里,一个集成的预期泛化误差的方差对应于:
其中p(x)
是在来自两个独立种子的相同数据上训练的两个随机模型的预测之间的 Pearson 相关系数。如果我们增加 RF 中 DT 的数量,更大M
的 ,则集成的方差在 时减小ρ(x)<1
。因此,集成的方差严格小于单个模型的方差。
简而言之,增加集成中单个随机模型的数量永远不会增加泛化误差。
您可能需要检查cross-validated - 一个 stachexchange 网站,其中包含许多内容,包括机器学习。
特别是,这个问题(标题完全相同)已经被回答了多次。检查这些链接。
但我可能会给你一个简短的答案:是的,它确实过拟合,有时你需要控制森林中树木的复杂性,甚至在它们长得太多时修剪——但这取决于你使用的库建设森林。例如在randomForest
R 中你只能控制复杂度
我做了一个非常简单的实验。我已经生成了合成数据:
y = 10 * x + noise
我训练了两个随机森林模型:
与修剪树模型相比,具有完整树的模型具有较低的训练误差但较高的测试误差。两种模型的反应:
这是过度拟合的明显证据。然后我获取过拟合模型的超参数,并在每一步添加树时检查错误。我得到了以下情节:
如您所见,添加更多树时过度拟合错误没有改变,但模型过度拟合。我的博客文章中描述了代码示例的实验。
结构化数据集 -> 误导性 OOB 错误
我在工作实践中发现了有趣的 RF 过拟合案例。当数据是结构化的时,OOB 观察结果上的 RF 过拟合。
细节:
我尝试预测电力现货市场上每个小时的电价(数据集的每一行都包含该小时的价格和系统参数(负载、容量等))。
电价是分批创建的(电力市场上的 24 个价格是在一个固定的时间内创建的)。
因此,每棵树的 OOB obs 是一组小时的随机子集,但是如果您预测接下来的 24 小时,您会一次完成所有操作(在第一刻您获得所有系统参数,然后您预测 24 个价格,然后有一个修复会产生这些价格),因此更容易做出OOB预测,然后是整个第二天。OOB obs 不包含在 24 小时区块中,而是均匀分布,因为存在预测误差的自相关,因此更容易预测单个小时的价格,然后预测整个缺失小时的区块。
在错误自相关的情况下更容易预测:
已知,已知,预测,已知,预测- OBB 案例
更难的一个:
已知,已知,已知,预测,预测- 现实世界预测案例
我希望这很有趣。