Ch04 机器学习修订于 二〇二六年七月二日

概念-随机森林

一句话理解

随机森林(Random Forest)是多棵决策树的 Bagging 集成:每棵树用随机抽样的样本和随机选择的特征训练,最终通过投票(分类)或平均(回归)输出结果。它是快速获得可靠 baseline 的首选算法,也是工业界最常用的可解释性模型之一。

核心原理

Bagging:Bootstrap Aggregating

随机森林的基础是 Bagging(Bootstrap 聚合):

  1. Bootstrap 采样:从原始数据集中有放回地随机抽取 N 个样本,形成训练子集。每棵树得到一个不同的训练子集,平均每棵树只用了约 63.2% 的原始数据(剩余的 36.8% 称为 Out-of-Bag 数据)。

  2. 训练多棵树:对每个训练子集独立训练一棵决策树(通常不剪枝,允许树长到最大深度)。

  3. 聚合(Aggregating):

    • 分类:多数投票(Majority Voting)
    • 回归:简单平均(Simple Averaging)

双重随机性

随机森林的”随机”来自两个层面:

层面随机化方式目的
样本随机Bootstrap 采样(有放回)每棵树看到不同的数据,减少方差
特征随机每个分裂节点随机选择 m 个特征(m ≈ sqrt(p) 或 p/3)降低树之间的相关性,进一步减少方差

这种双重随机性使得随机森林的方差远低于单棵决策树,同时保持很低的偏差。

为什么集成有效?

单棵决策树的问题:

  • 高方差:对训练数据的微小变化敏感,容易过拟合
  • 不稳定:不同的训练集可能产生完全不同的树结构

Bagging 的解决方案:

  • 通过平均多棵树,抵消了单棵树的随机波动
  • 只要树之间不完全相关,集成的方差随树的数量增加而降低
  • 方差 = σ²/N + (1-1/N)ρσ²(N 为树数量,ρ 为树间相关性)

随机森林 vs 单棵决策树 vs XGBoost 对比

维度随机森林单棵决策树XGBoost
训练方式并行(Bagging)单棵树串行(Boosting)
树之间关系独立,投票不适用依赖,每棵树修正前一棵的误差
偏差(Bias)低低低 → 极低
方差(Variance)低高极低
过拟合风险低高中(需调参)
训练速度快(可并行)极快慢(串行)
可解释性中等(特征重要性)高(可视化整棵树)低(黑盒集成)
超参数敏感度低低高
默认参数效果好差一般
小数据表现好差容易过拟合
大数据表现好差极好
缺失值处理需预处理需预处理原生支持
类别特征需编码需编码需编码

特征重要性(Feature Importance)

随机森林的一大优势是能提供可靠的特征重要性评估,这是工业界非常看重的能力。

两种计算方法

1. 平均不纯度减少(Mean Decrease in Impurity, MDI)

在构建树时,每个分裂节点记录该特征带来的不纯度减少量(分类用 Gini,回归用 MSE),对所有树取平均。计算快,但偏向高基数特征。

2. 排列重要性(Permutation Importance)

对每个特征,随机打乱其值,观察模型性能下降多少。性能下降越多,特征越重要。计算慢,但更准确,不受特征基数影响。

特征重要性的应用

  • 特征选择:剔除重要性低的特征,简化模型
  • 业务洞察:理解哪些因素对预测结果影响最大
  • 模型解释:向非技术人员解释模型决策逻辑
  • 数据质量检查:如果某个特征重要性异常高,可能是数据泄露

Out-of-Bag(OOB)误差

随机森林的独特优势:无需单独的验证集就能评估模型性能。

OOB 误差原理:

  • 每棵树只用了约 63.2% 的样本训练
  • 剩余 36.8% 的样本(OOB)对该树是”未见过”的
  • 用所有树的 OOB 预测结果的聚合,可以无偏估计模型泛化性能
  • 等同于交叉验证,但计算成本几乎为零

2026 年地位

2026 年,随机森林仍保持以下核心地位:

  1. 快速 baseline 首选:任何新任务,先用随机森林跑一个 baseline,参数少、训练快、效果好
  2. 可解释性需求场景:金融风控、医疗诊断等需要解释模型决策的场景,随机森林比 XGBoost 更直观
  3. 特征重要性探索:在新数据集上,用随机森林的特征重要性快速了解哪些特征有用
  4. 小数据场景:样本量小(< 1000)时,随机森林比深度学习稳定得多
  5. 异常检测:Isolation Forest(基于随机森林的异常检测算法)广泛用于工业异常检测

关键超参数

参数含义典型值说明
n_estimators树的数量100-500越多越好,但收益递减
max_depth树最大深度None(不限制)随机森林通常不限制深度
max_features每节点分裂时考虑的特征数sqrt(p) 或 p/3分类用 sqrt,回归用 p/3
min_samples_split内部节点最小样本数2-10越大越保守
min_samples_leaf叶子节点最小样本数1-5增大可防止过拟合
bootstrap是否使用 BootstrapTrue随机森林核心参数
oob_score是否计算 OOB 分数True建议开启

相关笔记

来源

关联12

知识图谱

局部图谱 · 点节点跳转