Skip to content

Bagging 与随机森林 (Random Forest)

Bagging (Bootstrap Aggregating)

核心思想

Bagging 通过自举采样 (Bootstrap) 构建多个独立的基学习器,再通过投票(分类)或平均(回归)进行集成,以降低方差

Bootstrap 采样

从大小为 N 的训练集中有放回地抽取 N 个样本,形成一个 Bootstrap 样本集。每个样本被抽中的概率为:

P(被选中)=1(11N)NN11e0.632

约 36.8% 的样本未被选中(称为 OOB, Out-Of-Bag 样本),可用于评估。

方差缩减

假设 T 个基学习器 h1,,hT 的预测方差均为 σ2,两两相关系数为 ρ,集成后方差:

Var[1Tt=1Tht]=ρσ2+1ρTσ2
  • 第一项 ρσ2 不可消除(受相关性限制)
  • 第二项随 T 增大而趋近于零

随机森林 (Random Forest)

改进:特征随机化

在 Bagging 的基础上,随机森林在每次节点分裂时,只从随机抽取的 m 个特征中选择最优分裂特征,进一步降低基学习器的相关性 ρ

推荐值:

任务m 的推荐值
分类m=d
回归m=d/3

特征重要性

基于不纯度(MDI):特征 j 在所有树中被用于分裂时带来的不纯度减少之和。

Imp(j)=t=1Tnode v splits on jΔGini(v)

代码对应

bash
python -m pipelines.classification.random_forest
python -m pipelines.ensemble.bagging