Xgboost_lightgbm_catboost

xgboost、lightgbm和catboost是实现adaboost算法的三个常用python包。在adaboost里面介绍到其提升的损失函数为: $$L^{(t)}=\sum_{i=1}^{n}l(y_{i},\hat{y}_{i}^{(t-1)}+f^{(t)}(\vec{x}_{i}))+\Omega (f^{(t)})$$ 再根据此损失函数更新第t个学习器和此学习器的权重。上述三个包采用了计算负担更小的近似,根据泰勒展开式有: $$L^{(t)} \approx \sum_{i=1}^{n}l(y_{i},\hat{y}_{i}^{(t-1)})+g^{(t)}f^{(t)}(\vec{x}_{i})+\frac{1}{2}h^{(t)}f^{(t)}(\vec{x}_{i})+\Omega (f^{(t)})$$ $i$代表样本序号,$y_{i}$代表第i个样本目标真实值,$\hat{y}_{i}^{(t-1)}$代表前t-1个学习器对第i个样本目标的预测值,$f^{(t)}(\vec{x}_{i})$代表第t个学习器对第i个样本的目标预测乘以此学习器的权重,$\Omega (f^{(t)})$代表惩罚项,$g^{(t)}$代表损失函数的一阶导数,$h^{(t)}$代表损失函数的二阶导数。可以看出在计算第t个学习器及其权重时,$\sum_{i=1}^{n}l(y_{i},\hat{y}_{i}^{(t-1)})$$g^{(t)}$$h^{(t)}$为常数。

参考:

  1. Loss function Approximation With Taylor Expansion