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)}$
为常数。
参考: