1. 集成算法总结

1.1 Bagging

  1. 随机森林:多个基模型的构建是基于不同数据来构建的,各个模型是独立,不提提高准确度,但是可以降低过拟合;

1.2 Boosting

  1. 通过迭代的形式,基于之前构建好的模型,对样本数据做一定的修正【或者改变权重/标签值】然后影响之后模型的构建。不断迭代构建的目的是:让预测更加准确,提升准确度,降低偏差;
  2. Adaboost
    1. 通过修正样本的权重
  3. GBDT
    1. 通过修正样本的预测值label标签值;

2. XGBoost的基本概述

  1. XGBoost是GBDT算法的一种变种优化,是一种有监督的集成学习算法;是一种伸缩性强、便捷的可并行构建模型的Gradient Boosting算法;
  2. XGBoost的官网:http://xgboost.readthedocs.io
  3. XGBoost的Github源码位置:
  4. XGBoost支持的开发语言:Python、R、Java、Scala、C++等。

3. XGBoost的原理

3.1 CART、GBDT

机器学习 7 XGBoost

3.2 模型

  1. 目标函数
    1. Obj(θ)=L(θ)+Ω(θ)Obj(\theta)=L(\theta) + \Omega(\theta)
    2. L(θ)L(\theta)是误差函数,体现的是模型有多拟合数据;
    3. Ω(θ)\Omega(\theta)正则化项:惩罚复杂模型的参数用于解决过拟合;

3.3 GBDT的目标函数

  1. obj=i=1nl(yi,yi(t))obj=\sum_{i=1}^nl(y_i, y_i^-(t))
  2. 逐步迭代
    1. yi(0)=0y_i^-(0)=0
    2. yi(1)=yi(0)+f1(xi)y_i^-(1)=y_i^-(0)+f_1(x_i)
    3. yi(2)=yi(1)+f2(xi)y_i^-(2)=y_i^-(1)+f_2(x_i)
    4. yi(t)=yi(t1)+ft(xi)y_i^-(t)=y_i^-(t-1)+f_t(x_i)
  3. 并没有考虑模型的复杂程度

3.4 XGBoost的目标函数

  1. 在GBDT的目标函数上增加正则化项[主要考虑基函数的复杂度]
  2. obj=i=1nl(yi,yi(t))+i=1tΩ(fi)obj=\sum_{i=1}^nl(y_i, y_i^-(t))+\sum_{i=1}^t\Omega(f_i)
  3. 逐步迭代
    1. yi(0)=0y_i^-(0)=0
    2. yi(1)=yi(0)+f1(xi)y_i^-(1)=y_i^-(0)+f_1(x_i)
    3. yi(2)=yi(1)+f2(xi)y_i^-(2)=y_i^-(1)+f_2(x_i)
    4. yi(t)=yi(t1)+ft(xi)y_i^-(t)=y_i^-(t-1)+f_t(x_i)
  4. 假设ft(x)=ωq(x)f_t(x)=\omega_q(x),ωq(x)\omega_q(x)表示第q个叶子节点的预测值
  5. $\Omega(f)=\gamma T+\frac{1}{2}\lambda \sum_{j=1}^T \omega_j^2 $,T表示当前这棵树的叶子节点数,后面表示叶子节点的预测值不能太大【相当于模型的复杂度有两部分组成:叶子节点数(分的太细)和叶子节点的预测值不能太大】

3.5 XGBoost公式的推导

  1. 第t次迭代之后,模型的预测等于前t-1次的模型加上第t棵树的预测结果:yi(t)=yi(t1)+ft(xi)y_i^-(t)=y_i^-(t-1)+f_t(x_i)
  2. 目标函数可以写成:loss=i=1nl(yi,yit1+ft(xi))+t=1t1Ω(fi)+Ω(ft)loss=\sum_{i=1}^nl(y_i, y_i^{t-1}+f_t(x_i))+\sum_{t=1}^{t-1}\Omega(f_i)+\Omega(f_t)
  3. 将误差函数中的yit1+ft(xi)y_i^{t-1}+f_t(x_i)当成一个整体在yit1y_i^{t-1}初进行二阶泰勒展开
    1. lossin[l(yi,yit1)+gift(xi)+12hift2(xi)]+i=1t1Ω(fi)+Ω(ft)loss\approx \sum_i^n [l(y_i,y_i^{t-1})+g_i f_t(x_i)+\frac{1}{2}h_i f_t^2(x_i)]+\sum_{i=1}^{t-1}\Omega(f_i)+\Omega(f_t)
    2. gi=yit1l(yi,yit1)g_i=\partial_{y_i^{t-1}}l(y_i, y_i^{t-1})
    3. hi=yit12l(yi,yit1)h_i=\partial_{y_i^{t-1}}^2l(y_i, y_i^{t-1})
  4. t=yi+ft(x),t0=ft1(x)t=y_i+f_t(x), t_0=f_{t-1}(x)
    5.机器学习 7 XGBoost
    机器学习 7 XGBoost
    机器学习 7 XGBoost
    机器学习 7 XGBoost

3.6 GBDT和XGBoost的比较

  1. XGBoost在GBDT的基础上加入了正则化项,防止模型过拟合;

相关文章:

  • 2021-04-11
  • 2022-01-19
  • 2021-07-16
  • 2021-09-03
  • 2021-09-14
  • 2021-08-24
  • 2021-10-07
猜你喜欢
  • 2018-12-25
  • 2022-02-15
  • 2021-12-29
  • 2021-08-06
  • 2021-05-15
  • 2021-04-08
相关资源
相似解决方案