跳到主内容

什么是随机森林?为什么一堆树更稳

2026-10-06 发布 来源:我告诉你AI导航 阅读

把一张三千行、四十列的业务表交给 AI 挑模型,逻辑回归跑出来欠拟合,换成很深的决策树又过拟合,验证集分数像心电图一样上下跳。这种时候多数人会试随机森林,通常第一次就能拿到一个不难看的分数。它不新,十多年前就已经是表格数据的默认选择...

把一张三千行、四十列的业务表交给 AI 挑模型,逻辑回归跑出来欠拟合,换成很深的决策树又过拟合,验证集分数像心电图一样上下跳。这种时候多数人会试随机森林,通常第一次就能拿到一个不难看的分数。它不新,十多年前就已经是表格数据的默认选择,今天在结构化数据上仍然经常赢过神经网络。理解它只要抓住一件事:单棵树的毛病是方差大,而方差可以通过「多种几棵、让它们彼此不一样」压下去。

单棵树的问题不在准确率,在方差

决策树每次分裂都在找一个让不纯度下降最多的切分点。训练集上一点扰动——换一批样本、少一个特征——就可能让顶层的分裂条件换掉,整棵树的结构随之改变。表现是训练集上几乎完美,换一份同分布的测试集,分数掉十几个点。

这种不稳定来自它的灵活性。树可以拟合任意形状的边界,包括噪声造成的偶然形状。灵活性是它的能力,也正是方差大的来源。

两个随机,把树之间的相关性压下来

「多训练几棵树再投票」这件事本身不够,关键在树之间要有差异。如果每棵树都在同一份数据上训练,它们会犯同样的错,投票等于没投。随机森林用两处随机制造差异:每棵树用有放回抽样得到的一份自助样本,每次分裂只从随机抽出的若干特征里挑最优。

模型适合谁代价失效条件
单棵决策树需要把判断规则讲给业务方听的人方差大,换一批数据结论就变数据有噪声或样本偏少时,结构随样本剧烈变化
Bagging 树(不随机选特征)特征少、彼此接近独立的场景树之间相关性高,降方差的效果有限存在少数极强的特征时,每棵树都先拿它分裂
随机森林表格数据、混合类型特征、想要一个稳的基线模型体积大,单次预测比单棵树慢几十倍需要外推、需要精细概率、特征极稀疏时
梯度提升树追求表格数据上的最高分数调参成本高,训练慢,容易过拟合噪声大或标签有错时,会沿着错误一路放大

第三行和第四行的差别值得记住:随机森林是并行地降方差,梯度提升是串行地降偏差。前者几乎不用调参就能用,后者调好了更强、调不好更差。

投票为什么能抵消错误

假设每棵树的误差方差是 σ²,树之间的平均相关系数是 ρ,那么 B 棵树取平均后的方差约等于 ρσ² + (1−ρ)σ²/B。这个式子说明两件事:树越多,第二项越小;第一项不随 B 变化,真正决定上限的是 ρ。

所以增加树的数量只能消除「彼此独立」的那部分误差,消除不了「共同犯」的那部分。这也解释了随机选特征为什么有效——它人为压低了树之间的相关性,把 ρ 拉下来。反过来,如果数据里有一个压倒性的强特征,每棵树都会先用它,ρ 就降不下去,加树的效果会很快饱和。

它拿可解释性换稳定性

单棵树可以画出来,从根到叶一条路径就是一条规则,业务方看得懂,也敢质疑。随机森林有几百棵树,画不出来,也给不出一句「因为 A 所以 B」的解释。

替代品是特征重要性:看每个特征在所有分裂中平均降低了多少不纯度。这个数字有用,但容易被误读——它衡量的是「这个特征被用来分裂得多有效」,而不是「它导致结果变化多少」。两个高度相关的特征同时存在时,重要性会被摊薄,看起来都不重要。单棵树的规则怎么读是理解这件事的基础。

几处它明显不擅长

外推是最硬的一条。树的分裂只做比较,输出永远是训练集里见过的叶子均值;输入超出训练范围时它给不出趋势,只会停在边界值上。用随机森林预测逐年增长的销量,它在历史最高点之后会走平。

其次是线性关系。如果目标几乎是特征的线性组合,线性模型用几十个参数就能拟合,随机森林要靠很多次切分去逼近一条斜线,效果不差但没必要。高维稀疏数据也一样:文本特征动辄几万维,随机抽特征时大部分抽到的是零,树很难切出有用的结构。

还有概率。它输出的投票比例不是校准过的概率。想要「这条记录有 30% 的风险」这种数字,需要额外做校准;样本不均衡时,这个比例会明显偏向多数类。

参数只需要动三个

树的数量设大基本无害,只是训练和预测变慢,几百棵通常够用。真正影响效果的是每次分裂考虑的特征数,分类任务常用总特征数的平方根,回归任务常用三分之一。叶子节点的最小样本数决定平滑程度,调大能压住过拟合。最大深度一般不用限,让树长满,靠前两个参数控制复杂度。

调这三个参数的顺序也有讲究:先定叶子最小样本数,把噪声压住;再调每次分裂的特征数,看验证集能不能再涨;树的数量最后加,加到分数不再变化为止。反过来先堆树,只会把过拟合藏得更深。

把它当尺子,别当终点

新项目拿到一份表格数据,先跑一个随机森林,十分钟内能知道这份数据大概能到什么水平,以及哪些特征有信号。这个基线比任何论文里的数字都有用,因为它是在你的数据上测出来的。

它的重要性排序还能反过来指导特征工程:排在前面的特征值得做交叉、做分箱;长期排在末尾甚至为负的,可以直接删掉,让后续模型轻一点。真要往上冲分数,再转梯度提升这类串行集成;想理解集成方法的整体版图,几类集成思路的分工可以对照着看。

速查:随机森林的用法与红线

  • 两个随机:样本有放回抽样、分裂时随机选特征
  • 加树只降独立误差,相关性 ρ 决定效果上限
  • 只动三个参数:叶子最小样本、每次分裂特征数、树的数量
  • 不能外推,输入超出训练范围只会停在边界值
  • 投票比例不是概率,要概率得另外校准

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]