boosting方法
1. AdaBoost
样本集: {(x1,y1),⋯,(xm,ym)} , where xi∈X,yi∈{−1,+1}
初始化样本权重: D1(i)=1m,i=1,⋯,m
遍历 T 棵树:for
t=1,⋯,T :
第 t 个分类器为
ht:X→{−1,1} 。分类器的损失定义为误分类的(加权)个数:
ϵ[h]=∑iDt(i)|yi≠h(xi)|
找到最小化这个误差的分类器:
ht=argminhϵt[h]
这样得到的分类误差为 ϵt=ϵ[ht]t 的分类器权重:
αt=12ln1−ϵtϵt 更新每个样本权重(为下一轮使用)( Zt 是归一化因子):
Dt+1(i)=1ZtDt(i)exp[−αtyiht(xi)]输出最终分类器:
sign(H(x)=∑tαtht(x))
2. Gradient boost Regression Tree
预测函数:
F(x)
损失函数:
L(yi,F(xi))
Gradient Boost
类目: k=1→K 初始化: Fk0(x)=0 依次生成 M 棵树: for
m=1→M :
第 k 类的预测值:
pk(x)=−eFk(x)∑leFl(x).k=1→K 遍历 K 个分类: for
k=1→K :
2.1 计算梯度(残差):gik=yik−pk(xi).i=1→N
2.2 以上面的残差为目标,生成 J 个叶子节点的树:
{Rjkm}Jj=1=J−terminal nodetree({gik,xi}Nn)
2.3 计算每个叶子的增益:
γjkm=K−1K∑xi∈Rjkmgik∑xi∈Rjkm|gik|(1−|gik|).j=1→J
2.4 更新预测函数:
Fkm(x)=Fk,m−1(x)+∑j=1JγjkmI(x∈Rjkm)