machine-learning
  • Welcome
  • 动手学深度学习
    • 1. 前言
    • 2. 预备知识
    • 3. 线性神经网络
    • 4. 多层感知机
    • 5. 深度学习计算
    • 6. 卷积神经网络
    • 7. 现代卷积神经网络
    • 8. 循环神经网络
    • 9. 现代循环神经网络
    • 10. 注意力机制
    • 11. 优化算法
    • 12. 计算性能
    • 13. 计算机视觉
    • 14. 自然语言处理:预训练
    • 15. 自然语言处理:应用
    • 16. 附录:深度学习工具
  • 百面机器学习
    • 1. 特征工程
    • 2. 模型评估
    • 3. 经典算法
    • 4. 降维
    • 5. 非监督学习
    • 6. 概率图模型
    • 7. 优化算法
    • 8. 采样
    • 9. 前向神经网络
    • 10. 循环神经网络
    • 11. 强化学习
    • 12. 集成学习
    • 13. 生成式对抗网络
    • 14. 人工智能的热门应用
  • 百面深度学习
    • 1. 卷积神经网络 CNN
    • 2. 循环神经网络 RNN
    • 3. 图神经网络 GNN
    • 4. 生成模型
    • 5. 生成式对抗网络 GAN
    • 6. 强化学习 RL
    • 7. 元学习
    • 8. 自动化机器学习 AutoML
    • 9. 计算机视觉 CV
    • 10. 自然语言处理 NLP
    • 11. 推荐系统
    • 12. 计算广告
    • 13. 视频处理
    • 14. 计算机听觉
    • 15. 自动驾驶
  • 统计学习方法
  • 推荐系统实践
    • 1. 推荐系统
    • 2. 特征工程
    • 3. Embedding
    • 4. 精排
    • 5. 召回
    • 6. 粗排/重排
    • 7. 多任务/多场景
    • 8. 冷启动
    • 9. 评估调试
    • 10. 自我修养
  • 深度学习推荐系统
    • 1. 推荐系统
    • 2. 进化之路
    • 3. 深度学习的应用
    • 4. Embedding
    • 5. 多角度审视
    • 6. 工程实现
    • 7. 评估方法
    • 8. 前沿实践
    • 9. 知识框架
  • 强化学习的数学原理
    • 1. 基础概念
    • 2. 贝尔曼公式
    • 3. 贝尔曼最优公式
    • 4. 值迭代与策略迭代
    • 5. 蒙特卡洛方法
    • 6. 随机近似与随机梯度下降
    • 7. 时序差分方法
    • 8. 值函数近似
    • 9. 策略梯度方法
    • 10. Actor-Critic方法
Powered by GitBook
On this page
  • 12.1 集成学习的种类 *
  • 12.2 集成学习的步骤和例子 **
  • 12.3 基分类器 **
  • 12.4 Bias & Variance ***
  • 12.5 梯度决策提升树 GBDT **
  • 12.6 XGBoost 与 GBDT 的联系与区别
  1. 百面机器学习

12. 集成学习

12.1 集成学习的种类 *

  • Boosting(迭代式学习,减小 bias)

    • 串行,基学习器层层叠加

    • 训练时,对前一层分错的样本,给予更高的权重

    • 测试时,根据各层分类器的结果,加权得到最终结果

  • Bagging(集体投票决策,减小 variance)

    • 并行,基学习器无强依赖

    • e.g. Random Forest

  • Stacking(异质基学习器,元模型组合)

12.2 集成学习的步骤和例子 **

  • 集成学习一般步骤

    • 找到误差 相互独立 的基分类器

    • 训练基分类器

    • 合并基分类器结果(voting, stacking)

  • Adaboost(对正确样本降低权重,对错误样本升高权重)

    • 确定基分类器:ID3 决策树

    • 训练基分类器:初始化采样分布 D1(i)=1/ND_1(i)=1/ND1​(i)=1/N

      • 按照 DtD_tDt​ 分布,采样子集 StS_tSt​

      • 训练基分类器 hth_tht​,计算错误率 ϵt\epsilon_tϵt​

      • 计算权重 at=log⁡1−ϵtϵta_t=\log\frac{1-\epsilon_t}{\epsilon_t}at​=logϵt​1−ϵt​​

      • 更新采样分布 Dt+1={Dt(i),ht(xi)≠yiDt(i)ϵt1−ϵt,ht(xi)=yiD_{t+1}=\begin{cases}D_t(i)&,h_t(x_i)\neq y_i \\ \frac{D_t(i)\epsilon_t}{1-\epsilon_t}&,h_t(x_i)=y_i\end{cases}Dt+1​={Dt​(i)1−ϵt​Dt​(i)ϵt​​​,ht​(xi​)=yi​,ht​(xi​)=yi​​,并归一化

    • 合并基分类器:Sign(∑t=1Tht(z)at)Sign(\sum_{t=1}^T h_t(z)a_t)Sign(∑t=1T​ht​(z)at​)

  • 梯度提升决策树 GBDT(每棵树学习之前的残差)

12.3 基分类器 **

  • 决策树

    • 方便将 样本权重 整合到训练过程中,不需要 过采样 调整样本权重

    • 表达能力 vs. 泛化能力,可以通过 层数 来折中

    • 样本的扰动,对决策树影响,不稳定学习器 更适合,feature_fraction 也引入随机性

  • 其他模型

    • NN 也适合作为基学习器(不稳定)

    • KNN 不适合,线性分类器 / KNN 较为稳定,方差不大

12.4 Bias & Variance ***

  • 定义

    • bias:通常由于对学习算法做了 错误假设,e.g. 用 一次函数 拟合 二次函数

    • variance

  • 解释 Boosting, Bagging 原理

    • Bagging:降低 variance,Bootstrap Aggregating,如果相互独立,方差为 σ2n\frac{\sigma^2}{n}nσ2​

    • Boosting:降低 bias,但不降 variance,因为基学习器之间 强相关

12.5 梯度决策提升树 GBDT **

  • 基本原理

    • 思想:根据当前模型 损失函数的负梯度 来训练新加入的模型

    • GBDT(MART)中使用的决策树通常为 CART

  • 梯度提升 vs. 梯度下降

    • Gradient Boosting(函数空间 F)L=∑il(yi,F(xi))L=\sum_i l(y_i,F(x_i))L=∑i​l(yi​,F(xi​))

      • F=Ft−1−ρt∇FL∣F=Ft−1F=F_{t-1}-\rho_t\nabla_F L|_{F=F_{t-1}}F=Ft−1​−ρt​∇F​L∣F=Ft−1​​

    • Gradient Descent(参数空间 W)L=∑il(yi,fw(wi))L=\sum_i l(y_i,f_w(w_i))L=∑i​l(yi​,fw​(wi​))

      • w=wt−1−ρt∇wL∣w=wt−1w=w_{t-1}-\rho_t\nabla_w L|_{w=w_{t-1}}w=wt−1​−ρt​∇w​L∣w=wt−1​​

  • GBDT 优点和局限

    • 优点

      • 预测 计算快,可并行计算

      • 分布稠密 的数据集上,泛化能力和表达能力都很好

      • 解释性、鲁棒性,自动发现特征间 高阶关系,不需要 预处理

    • 局限

      • 在 高维稀疏 的数据集上,不如 SVM / NN

      • 文本特征,优势不如 数值特征

      • 串行训练,只能决策树内局部并行

12.6 XGBoost 与 GBDT 的联系与区别

  • XGBoost

    • GBDT 后剪枝,XGBoost 构建阶段加入正则项

    • Lt=∑il(yi,Ft−1(xi)+ft(xi))+Ω(ft)L_t=\sum_i l(y_i,F_{t-1}(x_i)+f_t(x_i))+\Omega(f_t)Lt​=∑i​l(yi​,Ft−1​(xi​)+ft​(xi​))+Ω(ft​)

    • 正则项 Ω(ft)=γT+12λ∑j=1Twj2\Omega(f_t)=\gamma T+\frac12 \lambda \sum_{j=1}^T w_j^2Ω(ft​)=γT+21​λ∑j=1T​wj2​

    • 二阶泰勒展开推导出 Lt≈L~t=∑j=1T[Gjwj+12(Hj+λ)wj2]=γTL_t\approx\tilde L_t=\sum_{j=1}^T[G_j w_j+\frac12(H_j+\lambda)w_j^2]=\gamma TLt​≈L~t​=∑j=1T​[Gj​wj​+21​(Hj​+λ)wj2​]=γT

    • Gj=∑i∈Ij∇Ft−1l(yi,Ft−1(xi))G_j=\sum_{i\in I_j}\nabla_{F_{t-1}} l(y_i,F_{t-1}(x_i))Gj​=∑i∈Ij​​∇Ft−1​​l(yi​,Ft−1​(xi​))

    • Hj=∑i∈Ij∇Ft−12l(yi,Ft−1(xi)H_j=\sum_{i\in I_j}\nabla^2_{F_{t-1}} l(y_i,F_{t-1(x_i)}Hj​=∑i∈Ij​​∇Ft−1​2​l(yi​,Ft−1(xi​)​

    • 假设决策树结构已知,叶子节点预测值 wj∗=−GjHj+λw_j^*=-\frac{G_j}{H_j+\lambda}wj∗​=−Hj​+λGj​​(NP-hard)

    • 预测值带入损失函数,得到差分 Gain=GL2HL+λ+GR2HR+λ+(GL+GR)2HL+HR+λ−γGain=\frac{G_L^2}{H_L+\lambda}+\frac{G_R^2}{H_R+\lambda}+\frac{(G_L+G_R)^2}{H_L+H_R+\lambda}-\gammaGain=HL​+λGL2​​+HR​+λGR2​​+HL​+HR​+λ(GL​+GR​)2​−γ(γ\gammaγ 有预剪枝效果)

  • 区别和联系

    • GBDT 是机器学习算法,XGBoost 是其 工程实现

    • 使用 CART 树时,XGBoost 加入 正则项,防止过拟合,提高泛化能力

    • GBDT 使用一阶导数,XGBoost 二阶泰勒展开,同时使用 一阶二阶导数

    • GBDT 采用 CART 树,XGBoost 支持多种 基分类器,如 线性分类器

    • GBDT 使用全部数据,XGBoost 支持 数据采样(类似于 Random Forest)

    • GBDT 没有缺失值处理,XGBoost 自动学习 缺失值处理策略

Previous11. 强化学习Next13. 生成式对抗网络

Last updated 3 years ago