# 集成学习
集成学习是机器学习中通过组合多个基学习器(弱学习器)来提升模型性能的核心思想。本文将系统梳理集成学习的核心算法,包括Bagging、Boosting、随机森林、AdaBoost、GBDT和XGBoost,结合数学公式与示例,帮助读者深入理解其原理与应用。
集成学习:从Bagging到XGBoost的全面解析
集成学习是机器学习中通过组合多个基学习器(弱学习器)来提升模型性能的核心思想。本文将系统梳理集成学习的核心算法,包括Bagging、Boosting、随机森林、AdaBoost、GBDT和XGBoost,结合数学公式与示例,帮助读者深入理解其原理与应用。
一、集成学习基础
1. 核心思想
集成学习通过组合多个弱学习器(如决策树、逻辑回归等)形成强学习器,其核心优势在于降低方差(Bagging)或减少偏差(Boosting)。
公式表示:
最终预测结果为多个基学习器的联合输出:
H(x)=∑t=1Tht(x) H(x) = \sum_{t=1}^T h_t(x) H(x)=t=1∑Tht(x)
其中,ht(x)h_t(x)ht(x)为第t个弱学习器,T为基学习器总数。
2. 分类与对比
| 类别 | Bagging | Boosting |
|---|---|---|
| 数据采样 | 有放回随机采样(Bootstrap) | 全量数据,调整样本权重 |
| 权重分配 | 平权投票 | 加权投票(根据错误率调整) |
| 训练顺序 | 并行训练 | 串行训练(依赖前序模型) |
二、Bagging典型算法:随机森林
1. 算法思想
随机森林通过双重随机性构建多棵决策树:
- 样本随机性:有放回采样生成训练子集。
- 特征随机性:每棵树分裂时仅随机选择k个特征。
公式表示:
预测结果为所有树的投票结果:
H(x)=MajorityVote(h1(x),h2(x),…,hT(x)) H(x) = \text{MajorityVote}\left( h_1(x), h_2(x), \dots, h_T(x) \right) H(x)=MajorityVote(h1(x),h2(x),…,hT(x))
2. 示例:泰坦尼克号生存预测
- 数据预处理:填充缺失值(如年龄用均值填充)、对性别进行One-Hot编码。
- 模型对比:
结论:随机森林通过集成多棵树,准确率显著高于单棵决策树。# 随机森林 vs 决策树 rf = RandomForestClassifier(n_estimators=100) rf.score(x_test, y_test) # 输出:0.82 dt = DecisionTreeClassifier() dt.score(x_test, y_test) # 输出:0.78
三、Boosting典型算法
1. AdaBoost
核心思想:逐步关注被前序模型误分类的样本,通过加权投票提升性能。
公式推导:
- 错误率:ϵt=∑i=1Nwi(t)⋅I(ht(xi)≠yi)∑i=1Nwi(t) \epsilon_t = \frac{\sum_{i=1}^N w_i^{(t)} \cdot \mathbb{I}(h_t(x_i) \neq y_i)}{\sum_{i=1}^N w_i^{(t)}} ϵt=∑i=1Nwi(t)∑i=1Nwi(t)⋅I(ht(xi)=yi)
- 模型权重:αt=12ln(1−ϵtϵt)\alpha_t = \frac{1}{2} \ln\left( \frac{1-\epsilon_t}{\epsilon_t} \right)αt=21ln(ϵt1−ϵt)
- 样本权重更新:
wi(t+1)=wi(t)⋅exp(−αtyiht(xi))Zt w_i^{(t+1)} = \frac{w_i^{(t)} \cdot \exp(-\alpha_t y_i h_t(x_i))}{Z_t} wi(t+1)=Ztwi(t)⋅exp(−αtyiht(xi))
其中,ZtZ_tZt为归一化因子。
示例:
假设初始样本权重均为1/N1/N1/N,若第一个弱分类器在阈值8.5处错误分类3个样本,则:
ϵ1=310=0.3,α1=0.5ln(0.70.3)≈0.42 \epsilon_1 = \frac{3}{10} = 0.3, \quad \alpha_1 = 0.5 \ln\left( \frac{0.7}{0.3} \right) \approx 0.42 ϵ1=103=0.3,α1=0.5ln(0.30.7)≈0.42
误分类样本的权重将增大,后续模型更关注这些样本。
2. GBDT(梯度提升树)
核心思想:每棵树拟合前序模型的残差(负梯度),逐步优化损失函数。
公式表示:
- 残差计算:
ri(t)=−[∂L(yi,f(xi))∂f(xi)]f=ft−1 r_{i}^{(t)} = -\left[ \frac{\partial L(y_i, f(x_i))}{\partial f(x_i)} \right]_{f=f_{t-1}} ri(t)=−[∂f(xi)∂L(yi,f(xi))]f=ft−1 - 强学习器:
Ft(x)=Ft−1(x)+η⋅ht(x) F_t(x) = F_{t-1}(x) + \eta \cdot h_t(x) Ft(x)=Ft−1(x)+η⋅ht(x)
其中,η\etaη为学习率。
示例:
假设真实值为[5.5, 5.7, 6.4],初始预测为均值5.87,则残差为[-0.37, -0.17, 0.53]。第二棵树拟合这些残差,最终预测值为初始值+残差预测。
3. XGBoost
改进点:在GBDT基础上引入二阶泰勒展开和正则化项,提升效率与泛化能力。
目标函数:
Obj(θ)=∑i=1NL(yi,y^i)+∑t=1TΩ(ft) \text{Obj}(\theta) = \sum_{i=1}^N L(y_i, \hat{y}_i) + \sum_{t=1}^T \Omega(f_t) Obj(θ)=i=1∑NL(yi,y^i)+t=1∑TΩ(ft)
其中,正则化项Ω(ft)=γT+12λ∥w∥2\Omega(f_t) = \gamma T + \frac{1}{2}\lambda \|w\|^2Ω(ft)=γT+21λ∥w∥2,T为叶子节点数,w为叶子输出值。
示例:
在泰坦尼克号案例中,XGBoost通过调整max_depth和learning_rate,在测试集上准确率可达0.85,优于随机森林(0.82)。
四、算法对比与选择
| 算法 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| 随机森林 | 高维数据、防过拟合 | 并行训练、鲁棒性强 | 可解释性差 |
| AdaBoost | 数据分布不均衡 | 简单高效 | 对噪声敏感 |
| XGBoost | 大规模结构化数据 | 高精度、支持自定义损失 | 调参复杂 |
更多推荐



所有评论(0)