1.模型要素
1.提升模型(加法模型)
Fm(xi)=∑j=1mαjGj(xi)=Fm−1(xi)+αmGm(xi)
Fm(xi)=∑j=1mTj=Fm−1(xi)+Tm(xi)
公式1是Adaboost模型,
Gm∈{1,−1}
,
αm
是公式的权重(唯一)。公式2是提升树模型,
Tm=∑Kk=1αmkI(xi∈Rmk)
输出是某叶节点
Rmk
的取值
αmk
(数量由叶节点数目决定)。对于二分类问题,提升树是Adabost的一种特殊情况,提升树叶节点的取值为带符号的Adaboost权重
±αm
2.参数
- 二分类(以Adaboost为例): 基函数(分类器) Gm(x) (输出为-1,1),权重 αm (每个分类器唯一)
- 提升树(以回归树为例):树结构 Rmk (对应叶子节点,类似 Gm ),节点权重 αmk
3.目标函数(此处即为损失函数)
提升模型有三种损失函数,对于分类问题(adaboost)用指数损失函数
L(y,Fm)=∑i=1nexp(−yiFm(xi))
回归问题(提升回归树)用平方差损失函数
L(y,Fm)=∑i=1n(yi−Fm(xi))2
一般决策问题用一般损失函数。
2.模型训练(求解参数)
- 模型目标函数为其损失函数,训练目的是使的目标函数最小。此模型使用梯度提升算法,每一步弱预测模型依据损失函数的梯度方向)
- 思想:对目标函数泰勒展开,仅考虑一阶导数的情况。对
L(y,Fm(x))
使用泰勒展开近似
L(y,Fm(x))=L(y,Fm−1(x)+fm(x))≃L(y,Fm−1)+∂L(y,Fm−1)∂Fm−1fm(x)当 fm(x) 方向取 −[∂L(y,Fx)∂Fx]Fx=Fm−1 时,梯度下降最快(因为正交,梯度下降法),此时更新后的模型应为Fm(x)=Fm−1−λm∂L(y,Fm−1)∂Fm−1其中 λm 为步长,最终 fm=−λm∂L(y,Fm−1)∂Fm−1 ,在回归问题中 fm 为基函数,分类问题为基函数+分类器权重
- 由上面的分析可得提升方法的一般步骤为:
1)计算伪残差 rmi=−[∂L(yi,Fx)∂Fx]Fx=Fm−1 ,其中i表示样本号,m表示基函数(分类器)号
2)基于 rmi,i∈1,2,..,n ,构建新函数 f¯m (分类问题为基函数,CART回归树输出为叶子节点)
3)将 f¯m 带入损失函数,求解步长 λm=argminλL(y,Fm−1−λf¯m) (分类:分类器权重;回归:叶节点取值)
4)更新 Fm=Fm−1+λf¯m
3. Adaboost推导
- 模型为加法模型,损失函数为指数损失函数,参数为分类器 Gm(x)∈{−1,1} 和分类器权重 αm
- 梯度提升推导:
1)对损失函数 L(y,fm−1) 求梯度:rmi=yiexp(−yifm−1)=yiw¯mi可理解为带权重的样本,对模型影响度不同
2)根据 rm 创建新的基函数 Gm ,使 Gm 与 rm 尽量接近Gm=argminG∑i=1nw¯miI(yi≠G(xi))
3)将基函数 Gm 带入损失函数求分类器权重(步长) αm
αm=argminα∑i=1nw¯miexp(−yiαGm(xi))损失函数变为仅关于 α 的函数,对 α 求导得αm=12log1−ememem=∑ni=1w¯miI(yi≠Gm(xi))∑i=1nw¯mi=∑i=1nwmiI(yi≠Gm(xi))3)更新模型 fm(x)=fm−1(x)+αmGm(x) ,继续重复1),其中 w¯m+1,i=w¯m,iexp(−yiαmGm(xi)) - 前向分布算法推导
损失函数可写为:L(y,fm)=L(y,fm−1+αmGm)=∑i=1nexp(−yi(fm−1+αmGm(xi)))=∑i=1nw¯miexp(−yiαG(xi))w¯mi=exp(−yifm−1(xi)然后最小化损失函数,与2中2)形式相同 - 算法性能:误差率与分类器个数成指数关系
4.GBDT回归树推导
1)损失函数为平方损失,对损失函数求梯度,得到伪残差:
rmi=yi−Fm−1(xi)
2)对 rmi 拟合一个回归树,得到第m棵树的叶节点区域 Rmk
(Rm,αm)=argminR,α∑i=1n(rmi−Tm(xi))2
3)将给出的
Rmk
带入损失函数,求极小值
(αm1,αm2)=argminα[∑xi∈Rm1(yi−α1)2+∑xi∈Rm2(yi−α2)2]
得到
α
为每个叶节点区域中所有
yi
的均值.
4)遍历所有可能的切分点(将所有 yi 都尝试作为切分点),得到所有叶节点区域 Rmk ,重复2)3)步,找到最优解。合并形式为 (Rm,αm)=argminR∑ni=1[∑Kk=1minα∑xi∈Rk(yi−αk)2]
5)更新 Fm(xi)=Fm−1+Tm=Fm−1(xi)+∑Kk=1αmkI(xi∈Rmk)
6)其中2)同样可用前向分布算法得出