机器学习 Boosting 和 xgboost
Boosting
工作机制:先从初始训练集练出一个基学习器,再根据基学习器的表现对训练的样本分布进行调整,使得先前基学习器的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此循环往复,直至学习器达到事先指定的值T,最终将这T个基学习器进行加权结合。
Boosting有很多实现版本,比如Adaboost,GBDT 和XGBoost,由于书中已经详细的讲解了Adaboost,我们将主要介绍GBDT 和XGBoost。
1. CART——Boost的基础
CART(回归树, regressiontree)是xgboost最基本的组成部分。其根据训练特征及训练数据构建分类树,判定每条数据的预测结果。其中构建树使用gini指数计算增益,即进行构建树的特征选取。
一个CART往往过于简单,并不能有效地做出预测,为此,采用更进一步的模型boosting tree,利用多棵树来进行组合预测。
输入:训练集T={(x_1,y_1 ),(x_2,y_2 ),…(x_n,y_n ),)}
输出:提升树f_M (x)
步骤(1):初始化f_0 (x)=0
(2)、对m=1,2,3,…M(a)计算残差r_mi=y_i-f_((m-1) ) (x_i ),i=1,2,…,n
(b)拟合残差r_mi学习一个回归树,得到T(x:θ_M) 更新f_m (x)=f_((m-1) ) (x)+T(x:θ_m)
(3)、得到回归提升树:f_M (x)=∑_(m=1)^M▒〖T(x:θ_m)〗
2、gbdt算法
gbdt的算法可以总结为:
a、算法在拟合的每一步都新生成一颗决策树;
b、在拟合这棵树之前,需要计算损失函数在每个样本上的一阶导和二阶导,即 g_i 和 h_i ;
c、通过贪心策略生成一颗树,计算每个叶子结点的的G_i 和 H_i ,利用等式 〖w_j〗^*=G_j/(H_j+λ)计算预测值 w ;
d、把新生成的决策树 f_t (x) 加入 〖y ̂_i〗^t=〖y ̂_i〗^(t-1)+ϵf_t (x_i) ,其中ϵ 为学习率,主要为了抑制模型的过拟合。