提升
- 概念:提升可以用于回归和分类问题,它每一步产生一个弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升(Gradientboosting)。
- 理论:如果一个问题存在弱分类器,则可以通过提升的办法得到强分类器。
- 损失函数:对于每个样本,经典定义为 L ( y , F ( x ⃗ ) ) = 1 2 ( y − F ( x ⃗ ) ) 2 , 或 者 L ( y , F ( x ⃗ ) ) = ∣ y − F ( x ⃗ ) ∣ \quad L(y, F(\vec{x}))=\frac{1}{2}(y-F(\vec{x}))^{2},或者 L(y, F(\vec{x}))=|y-F(\vec{x})| L(y,F(x))=21(y−F(x))2,或者L(y,F(x))=∣y−F(x)∣
我们的目标是获取最优函数 F ∗ ( x ⃗ ) , F^{*}(\vec{x}), F∗(x), 使得: F ∗ ( x ⃗ ) = arg min F E ( x , y ) [ L ( y , F ( x ⃗ ) ) ] F^{*}(\vec{x})=\underset{F}{\arg \min } E_{(x, y)}[L(y, F(\vec{x}))] F∗(x)=FargminE(x,y)[L(y,F(x))]
若 F ( x ⃗ ) F(\vec{x}) F(x)为常数,损失函数取前者,则 F ∗ ( x ⃗ ) F^{*}(\vec{x}) F∗(x)为 y 1 , … , y n y_1,\dots,y_n y1,…,yn的均值,取后者,是中位数。
Adaboost
二分类的分类器,损失函数为指数型损失函数 exp ( y i f ( x i ) ) \exp(y_if(x_i)) exp(yif(xi)),分类器类型未规定。通过提高前一轮弱分类器错误分类 样本的权值,降低正确分类样本的权值,使未分类正确的样本获得更多的关注。
在求解弱分类器和分类器权重时采取前向分步算法。
前向分步算法
整体思路:先假定 F ( x ) F(x) F(x)是一族基函数 f i ( x ) f_i(x) fi(x) 的加权和
F ( x ⃗ ) = ∑ i = 1 M γ i f i ( x ) + const F(\vec{x})=\sum_{i=1}^{M} \gamma_{i} f_{i}(x)+\text { const } F(x)=i=1∑Mγifi(x)+ const
通过最小化损失函数 L ( y i , F m ( x ⃗ ) ) L\left(y_{i}, F_{m}(\vec{x})\right) L(yi,Fm(x))去得到局部最优的 F m ( x ⃗ ) F_{m}(\vec{x}) Fm(x),更新模型权重,得到加法模型
F m ( x ⃗ ) = F m − 1 ( x ⃗ ) + arg min γ i , f ∈ H ∑ i = 1 n L ( y i , F m − 1 ( x ⃗ i ) + γ i f ( x ⃗ i ) ) F_{m}(\vec{x})=F_{m-1}(\vec{x})+\underset{ \gamma_i,f \in H}{\arg \min } \sum_{i=1}^{n} L\left(y_{i}, F_{m-1}\left(\vec{x}_{i}\right)+\gamma_if\left(\vec{x}_{i}\right)\right) Fm(x)=Fm−1(x)+γi,f∈Hargmini=1∑nL(yi,Fm−1(xi)+γif(xi))
步骤
- 假设经过 m m m 轮迭代前向分步算法已经得到 f m ( x ) : f_{m}(x): fm(x):
f m ( x ) = f m − 1 ( x ) + α m − 1 G m ( x ) = α 1 G 1 ( x ) + ⋯ + α m G m ( x ) . \begin{aligned} f_{m}(x) &=f_{m-1}(x)+\alpha_{m-1} G_{m}(x) \\ &=\alpha_{1} G_{1}(x)+\cdots+\alpha_{m} G_{m}(x). \end{aligned} fm(x)=fm−1(x)+αm−1Gm(x)=α1G1(x)+⋯+αmGm(x). - 现在我们的目标是在第 m + 1 m+1 m+1 轮迭代得到 α m + 1 , G m + 1 ( x ) \alpha_{m+1}, G_{m+1}(x) αm+1,Gm+1(x) 和 f m + 1 ( x ) f_{m+1}(x) fm+1(x),
使得在训练数据集 T T T 上的指数损失最小,即
( α m + 1 , G m + 1 ( x ) ) = arg min α , G ∑ i = 1 N exp [ − y i ( f m ( x i ) + α G ( x i ) ) ] = arg min α , G ∑ i = 1 N w ˉ m + 1 , i exp [ − y i α G ( x i ) ] \left(\alpha_{m+1}, G_{m+1}(x)\right)=\arg \min _{\alpha, G} \sum_{i=1}^{N} \exp \left[-y_{i}\left(f_{m}\left(x_{i}\right)+\alpha G\left(x_{i}\right)\right)\right]\\ =\arg \min _{\alpha, G} \sum_{i=1}^{N} \bar{w}_{m+1, i} \exp \left[-y_{i} \alpha G\left(x_{i}\right)\right] (αm+1,Gm+1(x))=argα,Gmini=1∑Nexp[−yi(fm(xi)+αG(xi))]=argα,Gmini=1∑Nwˉm+1,iexp[−yiαG(xi)]
其中, w ˉ m + 1 , i = exp [ − y i f m ( x i ) ] \bar{w}_{m+1, i}=\exp \left[-y_{i} f_{m}\left(x_{i}\right)\right] wˉm+1,i=exp[−yifm(xi)](与该轮样本权值只差一个规范化系数,在PS中详细解释)。
该式子第一行从形式来看,是最小化未赋权样本在当前整个分类器 f m f_m fm的损失函数,第二行从结果看,是最小化赋权样本在该轮分类器 G m G_m Gm上的损失函数。
PS:
初始化训练集的权重分布 D 1 = ( w 11 , … , w 1 i , … , w 1 N ) , w 1 i = 1 N D_1=(w_{11},\dots,w_{1i},\dots,w_{1N}),w_{1i}=\frac{1}{N} D1=(w11,…,w1i,…,w1N),w1i=N1。假设经过 m m m 轮迭代,得到基于样本 D m D_m Dm分布的分类器 G m ( x i ) G_m(x_i) Gm(xi),及根据分类器 G m ( x i ) G_m(x_i) Gm(xi)误差得到的系数 α m \alpha_m αm,现在需要更新下一轮样本的权值 D m + 1 D_{m+1} Dm+1
D m + 1 = ( w m + 1 , 1 , ⋯ , w m + 1 , i , ⋯ , w m + 1 , N ) \begin{aligned} D_{m+1}&=\left(w_{m+1,1}, \cdots, w_{m+1, i}, \cdots, w_{m+1, N}\right) \end{aligned} Dm+1=(wm+1,1,⋯,wm+1,i,⋯,wm+1,N)