集成学习通过组合多个基学习器来获得比单一学习器更好的性能。
强学习器=组合(多个弱学习器)
理论保证:如果每个弱学习器的准确率略高于随机猜测(ϵ<0.5),则随着弱学习器数量增加,集成的错误率指数下降:
P(error)≤exp(−12Tγ2)
其中 γ=0.5−ϵ 为优势度,T 为基学习器数量。
| 来源 | 方法 | 代表算法 |
|---|
| 数据扰动 | Bootstrap采样 | Bagging |
| 特征扰动 | 随机特征子集 | Random Forest |
| 算法扰动 | 不同算法/参数 | 异质集成 |
| 标签扰动 | 样本权重调整 | Boosting |
Bootstrap Aggregating:通过有放回采样生成多个子训练集,分别训练基学习器,最后投票/平均。
graph TB
D["原始训练集 D (n个样本)"]
D --> B1["Bootstrap采样"]
D --> B2["Bootstrap采样"]
D --> BT["Bootstrap采样"]
B1 --> D1["D1"]
B2 --> D2["D2"]
BT --> DT["DT"]
D1 --> H1["训练 h1"]
D2 --> H2["训练 h2"]
DT --> HT["训练 hT"]
H1 --> Vote["投票/平均"]
H2 --> Vote
HT --> Vote
采样比例:每个Bootstrap样本约包含 63.2% 的原始样本:
P(样本被选中)=1−(1−n1)nn→∞1−e−1≈0.632
Out-of-Bag(OOB)估计:未被采样的 36.8% 样本可作为验证集,无需额外划分。
在Bagging基础上增加特征随机性:
| 参数 | 说明 | 典型值 |
|---|
n_estimators | 树的数量 | 100~500 |
max_features | 每次分裂考虑的特征数 | d(分类)/ d/3(回归) |
max_depth | 树的最大深度 | 不限制或较大值 |
min_samples_split | 分裂最小样本数 | 2~10 |
特征重要性:
Importance(j)=T1∑t=1T∑node using jΔGini(j)
Boosting 通过序列训练基学习器,每个新学习器重点关注前一轮的错误样本:
h1 → 评估 → 更新样本权重 → h2 → 评估 → 更新样本权重 → h3 → ... → 组合
指数损失函数:
L(y,f(x))=exp(−yf(x))
算法流程:
- 初始化样本权重 wi(1)=1/n
- 对于 t=1,2,…,T:
- 用权重 w(t) 训练弱学习器 ht
- 计算加权错误率:ϵt=∑iwi(t)I(ht(xi)=yi)
- 计算学习器权重:αt=21lnϵt1−ϵt
- 更新样本权重:wi(t+1)=wi(t)exp(−αtyiht(xi))
- 归一化权重
最终预测:
H(x)=sign(∑t=1Tαtht(x))
梯度提升决策树:用负梯度近似残差,每棵树拟合当前模型的负梯度:
rti=−∂f(xi)∂L(yi,f(xi))f=ft−1
回归(MSE损失):负梯度恰好等于残差 rti=yi−ft−1(xi)
学习率收缩:
ft(x)=ft−1(x)+ν⋅ht(x)
ν∈(0,1] 为学习率,通常取 0.01∼0.3。
XGBoost 在损失函数中加入正则化项:
Obj(t)=∑i=1nL(yi,y^i(t−1)+ft(xi))+Ω(ft)
正则化项:
Ω(f)=γT+21λ∥w∥2
其中 T 为叶节点数,w 为叶节点权重。
Obj(t)≈∑i=1n[gift(xi)+21hift2(xi)]+Ω(ft)
其中:
gi=∂y^(t−1)L(yi,y^(t−1)),hi=∂y^(t−1)2L(yi,y^(t−1))
叶节点最优权重:
wj∗=−Hj+λGj
分裂增益:
Gain=21[HL+λGL2+HR+λGR2−HL+HR+λ(GL+GR)2]−γ
| 特性 | 说明 |
|---|
| 二阶优化 | 利用二阶导数更精确 |
| 正则化 | L1+L2正则化防止过拟合 |
| 列采样 | 类似RF的特征随机 |
| 稀疏感知 | 自动处理缺失值 |
| 并行化 | 特征粒度并行 |
| 缓存优化 | 缓存感知访问模式 |
GOSS(Gradient-based One-Side Sampling):
- 保留大梯度样本(对学习贡献大)
- 随机丢弃小梯度样本
- 对小梯度样本乘以放大系数 b1−a
方差增益=n1(nlA+b1−anlB(∑xi∈Algi+b1−a∑xi∈Blgi)2)
EFB(Exclusive Feature Bundling):
- 将互斥特征(很少同时非零)捆绑为一个特征
- 减少特征数量,加速训练
| 策略 | 说明 | 优点 | 缺点 |
|---|
| Level-wise (XGBoost) | 层级生长 | 不易过拟合 | 低效(不必要分裂) |
| Leaf-wise (LightGBM) | 叶节点最大增益优先 | 更高效 | 可能过拟合 |
| 维度 | XGBoost | LightGBM | CatBoost |
|---|
| 树生长策略 | Level-wise | Leaf-wise | Level-wise |
| 特征直方图 | 支持 | 默认 | 支持 |
| 类别特征 | 需编码 | 原生支持 | 原生支持 |
| 缺失值处理 | 自动 | 自动 | 自动 |
| 训练速度 | 中 | 快 | 慢 |
| 内存占用 | 高 | 低 | 中 |
| 过拟合风险 | 中 | 较高 | 低 |
| 适用场景 | 通用 | 大数据 | 类别特征多 |