1. 集成算法总结
1.1 Bagging
- 随机森林:多个基模型的构建是基于不同数据来构建的,各个模型是独立,不提提高准确度,但是可以降低过拟合;
1.2 Boosting
- 通过迭代的形式,基于之前构建好的模型,对样本数据做一定的修正【或者改变权重/标签值】然后影响之后模型的构建。不断迭代构建的目的是:让预测更加准确,提升准确度,降低偏差;
- Adaboost
- 通过修正样本的权重
- GBDT
- 通过修正样本的预测值label标签值;
2. XGBoost的基本概述
- XGBoost是GBDT算法的一种变种优化,是一种有监督的集成学习算法;是一种伸缩性强、便捷的可并行构建模型的Gradient Boosting算法;
- XGBoost的官网:http://xgboost.readthedocs.io
- XGBoost的Github源码位置:
- XGBoost支持的开发语言:Python、R、Java、Scala、C++等。
3. XGBoost的原理
3.1 CART、GBDT

3.2 模型
- 目标函数
- Obj(θ)=L(θ)+Ω(θ)
-
L(θ)是误差函数,体现的是模型有多拟合数据;
-
Ω(θ)正则化项:惩罚复杂模型的参数用于解决过拟合;
3.3 GBDT的目标函数
- obj=∑i=1nl(yi,yi−(t))
- 逐步迭代
- yi−(0)=0
- yi−(1)=yi−(0)+f1(xi)
- yi−(2)=yi−(1)+f2(xi)
- …
- yi−(t)=yi−(t−1)+ft(xi)
- 并没有考虑模型的复杂程度
3.4 XGBoost的目标函数
- 在GBDT的目标函数上增加正则化项[主要考虑基函数的复杂度]
- obj=∑i=1nl(yi,yi−(t))+∑i=1tΩ(fi)
- 逐步迭代
- yi−(0)=0
- yi−(1)=yi−(0)+f1(xi)
- yi−(2)=yi−(1)+f2(xi)
- …
- yi−(t)=yi−(t−1)+ft(xi)
- 假设ft(x)=ωq(x),ωq(x)表示第q个叶子节点的预测值
- $\Omega(f)=\gamma T+\frac{1}{2}\lambda \sum_{j=1}^T \omega_j^2 $,T表示当前这棵树的叶子节点数,后面表示叶子节点的预测值不能太大【相当于模型的复杂度有两部分组成:叶子节点数(分的太细)和叶子节点的预测值不能太大】
3.5 XGBoost公式的推导
- 第t次迭代之后,模型的预测等于前t-1次的模型加上第t棵树的预测结果:yi−(t)=yi−(t−1)+ft(xi)
- 目标函数可以写成:loss=∑i=1nl(yi,yit−1+ft(xi))+∑t=1t−1Ω(fi)+Ω(ft)
- 将误差函数中的yit−1+ft(xi)当成一个整体在yit−1初进行二阶泰勒展开
- loss≈∑in[l(yi,yit−1)+gift(xi)+21hift2(xi)]+∑i=1t−1Ω(fi)+Ω(ft)
- gi=∂yit−1l(yi,yit−1)
- hi=∂yit−12l(yi,yit−1)
-
t=yi+ft(x),t0=ft−1(x)
5.


3.6 GBDT和XGBoost的比较
- 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
相关资源
-
下载
2023-01-15
-
下载
2023-01-05
-
下载
2023-01-08