写在开头:如果大家有时间,还是比较推荐研读xgboost原论文和作者的slide讲解,本文主要讲解XGB的原理,让大家能明白XGB算法模型的框架就可以,具体实现细节可以看帮助文档。XGBoost通常使用的工具包有两种:一个是XGBoost原生的包,一个是接口sklearn-learn的包,两种包的使用方法大同小异,推荐使用原生的包。
一、目标函数:
了解一个算法,首选要先看目标函数(损失函数)的定义。然后再研究其工作原理,本文也会依照这个逻辑讲解XGB。
XGB可以选择的弱学习器有三种,设定的参数:booster [default= gbtree ] Can be gbtree, gblinear or dart; gbtree and dart 用于分类树模型, gblinear 用于线性模型.
以下以线性模型为例进行讲解,可以拓展到分类模型上,主要是便于推导。
loss损失函数部分:回归问题的代价函数是均方误差(残差损失)L函数部分
φ代表弱学习器,m越大,树越深,弱学习器是基于计算w特征权重建立的模型。然后组合弱学习器,即可以求得强学习器。i可以理解为item,即一行数据。
正则项部分:树的复杂度定义(正则项),如下公式也可以自己定义
T:叶子节点的个数,官方称为L1正则(也有人称为L0正则),下图为3个叶子节点
w:叶子的权重(分数),其实就是L2正则项