集成学习:从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=1Tht(x)
其中,ht(x)h_t(x)ht(x)为第t个弱学习器,T为基学习器总数。

2. 分类与对比

类别 Bagging Boosting
数据采样 有放回随机采样(Bootstrap) 全量数据,调整样本权重
权重分配 平权投票 加权投票(根据错误率调整)
训练顺序 并行训练 串行训练(依赖前序模型)

二、Bagging典型算法:随机森林

1. 算法思想

随机森林通过双重随机性构建多棵决策树:

  1. 样本随机性:有放回采样生成训练子集。
  2. 特征随机性:每棵树分裂时仅随机选择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=ft1
  • 强学习器
    Ft(x)=Ft−1(x)+η⋅ht(x) F_t(x) = F_{t-1}(x) + \eta \cdot h_t(x) Ft(x)=Ft1(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=1NL(yi,y^i)+t=1TΩ(ft)
其中,正则化项Ω(ft)=γT+12λ∥w∥2\Omega(f_t) = \gamma T + \frac{1}{2}\lambda \|w\|^2Ω(ft)=γT+21λw2,T为叶子节点数,w为叶子输出值。

示例
在泰坦尼克号案例中,XGBoost通过调整max_depthlearning_rate,在测试集上准确率可达0.85,优于随机森林(0.82)。


四、算法对比与选择

算法 适用场景 优势 劣势
随机森林 高维数据、防过拟合 并行训练、鲁棒性强 可解释性差
AdaBoost 数据分布不均衡 简单高效 对噪声敏感
XGBoost 大规模结构化数据 高精度、支持自定义损失 调参复杂
Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐