XGBoost算法
XGBoost是2016年由华盛顿大学陈天奇老师带领开发的一个可扩展机器学习系统。严格意义上讲XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。它内部实现了梯度提升树(GBDT)模型,并对模型中的算法进行了诸多优化,在取得高精度的同时又保持了极快的速度,在一段时间内成为了国内外数据挖掘、机器学习领域中的大规模杀伤性武器。
此笔记主要为三部分:原理简述;实战预测;优缺总结。
原理简述
- GDBT(梯度提升树):XGBoost底层实现了GBDT算法
并对GBDT算法做了一系列优化:
- 对目标函数进行了泰勒展示的二阶展开,可以更加高效拟合误差。
- 提出了一种估计分裂点的算法加速CART树的构建过程,同时可以处理稀疏数据。
- 提出了一种树的并行策略加速迭代。
- 为模型的分布式算法进行了底层优化。
GDBT原理.
- XGBoost:XGBoost是基于CART树的集成模型,它的思想是串联多个决策树模型共同进行决策。
XGBoost原理.
- XGBoost模型可以表示为以下形式,我们约定 f t ( x ) f_t(x) ft(x)表示前 t t t颗树的和, h t ( x ) h_t(x) ht(x)表示第 t t t颗决策树,模型定义如下:
f t ( x ) = ∑ t = 1 T h t ( x ) f_{t}(x)=\sum_{t=1}^{T} h_{t}(x) ft(x)=t=1∑Tht(x) - 由于模型递归生成,第 t t t步的模型由第 t − 1 t-1 t−1步的模型形成,可以写成:
f t ( x ) = f t − 1 ( x ) + h t ( x ) f_{t}(x)=f_{t-1}(x)+h_{t}(x) ft(x)=f