【机器学习】Adaboost多类分类——SAMME算法,SAMME.R算法

前言

根据Adaboost算法更新权重的原理我们知道想要在下一轮训练中使误分类的样本的权重增加,每一轮训练的错误率都必须小于0.5,包括初始化分类器时也是如此。初始化一般都是随机初始化,对于二分类任务,每个样本都有0.5的概率被预测正确,要达到0.5以上的正确率还是比较容易的,但是对于多分类问题就不一样了,在多分类问题中如果有 K K K个不同的类别,那么随机猜测只有 1 / K 1/K 1/K 的概率预测正确,因此若直接将Adaboost算法应用于多类分类问题往往不能得到令人满意的结果。针对这个问题,Zhu Ji等人在2009年提出了SAMME及SAMME.R算法,这也是sklearn中用Adaboost做多类分类问题时采用的算法。

算法原理

首先我们约定以下符号用法:

  • x , y x, y x,y 表示一个标量
  • x , y \bf{x}, \bf{y} x,y 表示一个矢量
  • N N N 表示样本数量
  • K K K 表示不同的类别的数量

SAMME算法

1. 标签和输出的向量化

在传统的 Adaboost 算法中样本的标签是数值,表示它所属的类别,模型的输出同样也是数值;而在这个算法中两者都被推广为 1 × K 1\times K 1×K 维的向量,即任意一个样本可表示为 ( x i , y i ) (\textbf{x}_i, \textbf{y}_i) (xi,yi),其中 x i \textbf{x}_i xi 是样本的特征向量, y i \textbf{y}_i yi 是样本的标签向量, y i = ( y i 1 , y i 2 , . . . , y i K ) \textbf{y}_i = (y_{i1}, y_{i2}, ..., y_{iK}) yi=(yi1,yi2,...,yiK),其分量定义如下:

y i k = { 1 , 如 果 x i 属 于 第 k 类 − 1 K − 1 , 如 果 x i 不 属 于 第 k 类 y_{ik} = \begin{cases}1, & 如果x_{i} 属于第 k 类\\ -\frac{1}{K-1}, & 如果x_{i} 不属于第 k 类\end{cases} yik={1,K11,xikxik

例如,假设训练集第一个样本 ( x 1 , y 1 ) (\textbf{x}_1, \textbf{y}_1) (x1,y1) 属于第一类,那么 y 1 = ( 1 , − 1 K − 1 , − 1 K − 1 , . . . , − 1 K − 1 ) \textbf{y}_1=(1, -\frac{1}{K-1}, -\frac{1}{K-1}, ..., -\frac{1}{K-1}) y1=(1,K11,K11,...,K11)

在这个算法中分类器依然采用加法模型,我们将训练好的分类器记为 f m ( x ) \textbf{f}_m(\textbf{x}) fm(x),那么它可以写成如下形式:

f m ( x ) = ∑ i m β i g i ( x ) \textbf{f}_m(\textbf{x})=\sum_i^m\beta_i\textbf{g}_i(\textbf{x}) fm(x)=imβigi(x)

其中 g i ( x ) \textbf{g}_i(\textbf{x}) gi(x) 是基分类器(弱分类器);它的输出也是向量:

f m ( x ) = ( f m 1 ( x ) , f m 2 ( x ) , . . . , f m K ( x ) ) \textbf{f}_m(\textbf{x})=(f_{m1}(\textbf{x}), f_{m2}(\textbf{x}), ..., f_{mK}(\textbf{x})) fm(x)=(fm1(x),fm2(x),...,fmK(x))

为了保证求解得到的 f m ( x ) \textbf{f}_m(\textbf{x}) fm(x) 唯一,作者给它加上了一个对称约束条件:

f m 1 ( x ) + f m 2 ( x ) + . . . + f m K ( x ) = 0 f_{m1}(\textbf{x}) + f_{m2}(\textbf{x}) + ... + f_{mK}(\textbf{x}) = 0 fm1(x)+fm2(x)+...+fmK(x)=0

即限制 f m ( x ) \textbf{f}_m(\textbf{x}) fm(x) 各分量之和为0;这里的思想和电磁学中为了使给定边界条件下求得的电磁场唯一而引入规范的概念是一样的。由于 f m ( x ) \textbf{f}_m(\textbf{x}) fm(x) 可表示为 m m m 个基分类器之和, 而 f m ( x ) \textbf{f}_m(\textbf{x}) fm(x) 的输出是向量,那么 g ( x ) \textbf{g}(\textbf{x}) g(x) 的输出也应该是向量:

g ( x ) = ( g 1 ( x ) , g 2 ( x ) , . . . , g K ( x ) ) \textbf{g}(\textbf{x})=(g_{1}(\textbf{x}), g_{2}(\textbf{x}), ..., g_{K}(\textbf{x})) g(x)=(g1(x),g2(x),...,gK(x))

并且我们可以强制 g ( x ) \textbf{g}(\textbf{x}) g(x) 也满足对称约束条件,此时我们注意到如果 g ( x ) \textbf{g}(\textbf{x}) g(x) 满足对称约束条件,那么由加法模型 f m ( x ) \textbf{f}_m(\textbf{x}) fm(x) 自然也满足对称约束条件,于是对 f m ( x ) \textbf{f}_m(\textbf{x}) fm(x) 的约束可以转为对 g ( x ) \textbf{g}(\textbf{x}) g(x) 的约束。进一步我们注意到 g ( x ) \textbf{g}(\textbf{x}) g(x) 作为一个分类器,可以看成一个函数,该函数的定义域为样本的特征空间,值域为标签构成的集合,即:

g ( x ) : R ∣ f e a t u r e ∣ → Y \textbf{g}(\textbf{x}): R^{|feature|}\rightarrow Y g(x):RfeatureY

Y = { ( 1 , − 1 K − 1 , − 1 K − 1 , . . . , − 1 K − 1 ) , ( − 1 K − 1 , 1 , − 1 K − 1 , . . . , − 1 K − 1 ) , . . . , ( − 1 K − 1 , − 1 K − 1 , − 1 K − 1 , . . . , 1 ) } Y=\{(1, -\frac{1}{K-1}, -\frac{1}{K-1}, ..., -\frac{1}{K-1}), (-\frac{1}{K-1}, 1, -\frac{1}{K-1}, ..., -\frac{1}{K-1}), ..., (-\frac{1}{K-1}, -\frac{1}{K-1}, -\frac{1}{K-1}, ..., 1)\} Y={(1,K11,K11,...,K11),(K11,1,K11,...,K11),...,(K11,K11,K11,...,1)}

其中 ∣ f e a t u r e ∣ |feature| feature 表示特征数量, ( 1 , − 1 K − 1 , − 1 K − 1 , . . . , − 1 K − 1 ) (1, -\frac{1}{K-1}, -\frac{1}{K-1}, ..., -\frac{1}{K-1}) (1,K11,K11,...,K11) 为第一类的类标签, ( − 1 K − 1 , 1 , − 1 K − 1 , . . . , − 1 K − 1 ) (-\frac{1}{K-1}, 1, -\frac{1}{K-1}, ..., -\frac{1}{K-1}) (K11,1,K11,...,K11) 为第二类的标签,……, ( − 1 K − 1 , − 1 K − 1 , − 1 K − 1 , . . . , 1 ) (-\frac{1}{K-1}, -\frac{1}{K-1}, -\frac{1}{K-1}, ..., 1) (K11,K11,K11,...,1) 为第 K K K 类的标签;考虑到这一点后,根据一开始对标签向量的定义,我们发现它刚好是满足对称约束条件的,即各分量相加为0,因此在这个定义下对称约束自动被满足了

2. 求解模型

该算法的损失函数依然沿用了传统 Adaboost 的指数损失函数,只要我们把标量换成向量就行了:

L ( y , f ( x ) ) = ∑ i e x p ( − 1 K y i ⋅ f m ( x i ) ) L(\textbf{y}, \textbf{f}(\textbf{x}))=\sum_iexp(-\frac{1}{K}\textbf{y}_i \cdot\textbf{f}_m(\textbf{x}_i)) L(y,f(x))=iexp(K1yifm(xi))

其中为了后面计算方便,作者引入了一个常数 1 K \frac{1}{K} K1 。和 Adaboost 算法的推导一样,我们只关注当前轮的训练,因此将 f m ( x ) \textbf{f}_m(\textbf{x}) fm(x) 拆成 f m − 1 ( x ) + β m g m ( x ) \textbf{f}_{m-1}(\textbf{x})+\beta_m\textbf{g}_m(\textbf{x}) fm1(x)+βmgm(x) ,并将上一轮训练结果 f m − 1 ( x ) \textbf{f}_{m-1}(\textbf{x}) fm1(x) 吸收进样本权重项 ω \omega ω

L ( y , f ( x ) ) = ∑ i e x p ( − 1 K y i ⋅ f m ( x i ) ) = ∑ i e x p ( − 1 K y i ⋅ ( f m − 1 ( x i ) + β m g m ( x i ) ) ) = ∑ i ω i e x p ( − β m K y i ⋅ g m ( x i ) ) \begin{aligned}L(\textbf{y}, \textbf{f}(\textbf{x}))&=\sum_iexp(-\frac{1}{K}\textbf{y}_i \cdot\textbf{f}_m(\textbf{x}_i))\\ &=\sum_iexp(-\frac{1}{K}\textbf{y}_i \cdot(\textbf{f}_{m-1}(\textbf{x}_i)+\beta_m\textbf{g}_m(\textbf{x}_i)))\\ &=\sum_i\omega_i exp(-\frac{\beta_m}{K}\textbf{y}_i \cdot\textbf{g}_m(\textbf{x}_i))\end{aligned} L(y,f(x))=iexp(K1yifm(xi))=iexp(K1yi(fm1(xi)+βmgm(xi)))=iωiexp(Kβmyigm(xi))

下面我们单独考察一下 y i ⋅ g m ( x i ) \textbf{y}_i \cdot\textbf{g}_m(\textbf{x}_i) yigm(xi) 的结果;如前所述, y i \textbf{y}_i yi g m ( x i ) \textbf{g}_m(\textbf{x}_i) gm(xi) 都是 1 × K 1\times K 1×K 维的向量,当它表示第 j j j 类时则第 j j j 个分量为1 ,其余分量为 − 1 K − 1 -\frac{1}{K-1} K11 ,因此当分类器预测正确时, g m ( x i ) = y i \textbf{g}_m(\textbf{x}_i)=\textbf{y}_i gm(xi)=yi y i ⋅ g m ( x i ) \textbf{y}_i \cdot\textbf{g}_m(\textbf{x}_i) yigm(xi) 的结果就是 y i \textbf{y}_i yi 的模的平方;如果分类器预测错误,可以预见 y i \textbf{y}_i yi g m ( x i ) \textbf{g}_m(\textbf{x}_i) gm(xi) 的1不在同一个分量,而其他分量还是相等的,都是 − 1 K − 1 -\frac{1}{K-1} K11 ;经过简单的计算可得两种情况下的内积结果:

预 测 正 确 时 : y i ⋅ g m ( x i ) = 1 + ( − 1 K − 1 ) 2 ( K − 1 ) = K K − 1 预测正确时:\textbf{y}_i \cdot\textbf{g}_m(\textbf{x}_i)=1+(-\frac{1}{K-1})^2(K-1)=\frac{K}{K-1} yigm(xi)=1+(K11)2(K1)=K1K
预 测 错 误 时 : y i ⋅ g m ( x i ) = − 2 K − 1 + ( − 1 K − 1 ) 2 ( K − 2 ) = − K ( K − 1 ) 2 预测错误时:\textbf{y}_i \cdot\textbf{g}_m(\textbf{x}_i)=-\frac{2}{K-1}+(-\frac{1}{K-1})^2(K-2)=-\frac{K}{(K-1)^2} yigm(xi)=K12+(K11)2(K2)=(K1)2K

将以上结果带入损失函数表达式可得:

L ( y , f ( x ) ) = ∑ i ω i e x p ( − β m K y i ⋅ g m ( x i ) ) = ∑ g m = y i ω i e x p ( − β m K − 1 ) + ∑ g m ≠ y i ω i e x p ( β m ( K − 1 ) 2 ) = ∑ g m = y i ω i e x p ( − β m K − 1 ) + ∑ g m ≠ y i ω i e x p ( β m ( K − 1 ) 2 ) + ∑ g m ≠ y i ω i e x p ( − β m K − 1 ) − ∑ g m ≠ y i ω i e x p ( − β m K − 1 ) = e x p ( − β m K − 1 ) ∑ i ω i + ( e x p ( β m ( K − 1 ) 2 ) − e x p ( − β m K − 1 ) ) ∑ i ω i I ( g m ≠ y i ) \begin{aligned}L(\textbf{y}, \textbf{f}(\textbf{x}))&=\sum_i\omega_i exp(-\frac{\beta_m}{K}\textbf{y}_i \cdot\textbf{g}_m(\textbf{x}_i))\\ &=\sum_{g_m=y_i}\omega_i exp(-\frac{\beta_m}{K-1})+\sum_{g_m\neq y_i}\omega_i exp\left(\frac{\beta_m}{(K-1)^2}\right)\\ &=\sum_{g_m=y_i}\omega_i exp(-\frac{\beta_m}{K-1})+\sum_{g_m\neq y_i}\omega_i exp\left(\frac{\beta_m}{(K-1)^2}\right)+\sum_{g_m\neq y_i}\omega_i exp(-\frac{\beta_m}{K-1})-\sum_{g_m\neq y_i}\omega_i exp(-\frac{\beta_m}{K-1})\\ &=exp(-\frac{\beta_m}{K-1})\sum_i\omega_i+\left(exp\left(\frac{\beta_m}{(K-1)^2}\right)-exp(-\frac{\beta_m}{K-1})\right)\sum_i\omega_iI(\textbf{g}_m\neq \textbf{y}_i)\end{aligned} L(y,f(x))=iωiexp(Kβmyigm(xi))=gm=yiωiexp(K1βm)+gm=yiωiexp((K1)2βm)=gm=yiωiexp(K1βm)+gm=yiωiexp((K1)2βm)+gm=yiωiexp(K1βm)gm=yiωiexp(K1βm)=exp(K1βm)iωi+(exp((K1)2βm)exp(K1βm))iωiI(gm=yi)

其中第三步用到了添凑项技巧,最后一步的 I ( g m ≠ y i ) I(\textbf{g}_m\neq \textbf{y}_i) I(gm=yi) 是示性函数,只有 g m ≠ y i \textbf{g}_m\neq \textbf{y}_i gm=yi 时取1,其他情况取0。我们希望损失函数的值尽量小,因此我们令损失函数对 β m \beta_m βm 的导数等于0可得:

∂ L ∂ β m = ( − 1 K − 1 ) e x p ( − β m K − 1 ) ∑ i ω i + ( 1 ( K − 1 ) 2 e x p ( β m ( K − 1 ) 2 ) + 1 K − 1 e x p ( − β m K − 1 ) ) ∑ i ω i I ( f m ≠ y i ) = 0 \begin{aligned}\frac{\partial L}{\partial \beta_m}&=(-\frac{1}{K-1})exp(-\frac{\beta_m}{K-1})\sum_i\omega_i+\left(\frac{1}{(K-1)^2}exp\left(\frac{\beta_m}{(K-1)^2}\right)+\frac{1}{K-1}exp(-\frac{\beta_m}{K-1})\right)\sum_i\omega_iI(\textbf{f}_m\neq \textbf{y}_i)\\ &=0\end{aligned} βmL=(K11)exp(K1βm)iωi+((K1)21exp((K1)2βm)+K11exp(K1βm))iωiI(fm=yi)=0

1 K − 1 e x p ( − β m K − 1 ) ∑ i ω i = ( 1 ( K − 1 ) 2 e x p ( β m ( K − 1 ) 2 ) + 1 K − 1 e x p ( − β m K − 1 ) ) ∑ i ω i I ( f m ≠ y i ) e x p ( − β m K − 1 ) = ( 1 K − 1 e x p ( β m ( K − 1 ) 2 ) + e x p ( − β m K − 1 ) ) r e r r o r 1 − r e r r o r r e r r o r = 1 K − 1 e x p ( K β m ( K − 1 ) 2 ) β m = ( K − 1 ) 2 K ( l o g ( 1 − r e r r o r r e r r o r ) + l o g ( K − 1 ) ) \begin{aligned}\frac{1}{K-1}exp(-\frac{\beta_m}{K-1})\sum_i\omega_i&=\left(\frac{1}{(K-1)^2}exp\left(\frac{\beta_m}{(K-1)^2}\right)+\frac{1}{K-1}exp(-\frac{\beta_m}{K-1})\right)\sum_i\omega_iI(\textbf{f}_m\neq \textbf{y}_i)\\ exp(-\frac{\beta_m}{K-1})&=\left(\frac{1}{K-1}exp\left(\frac{\beta_m}{(K-1)^2}\right)+exp(-\frac{\beta_m}{K-1})\right)r_{error}\\ \frac{1-r_{error}}{r_{error}}&=\frac{1}{K-1}exp\left(\frac{K\beta_m}{(K-1)^2}\right)\\ \beta_m&=\frac{(K-1)^2}{K}\left(log\left(\frac{1-r_{error}}{r_{error}}\right)+log(K-1)\right)\end{aligned} K11exp(K1βm)iωiexp(K1βm)rerror1rerrorβm=((K1)21exp((K1)2βm)+K11exp(K1βm))iωiI(fm=yi)=(K11exp((K1)2βm)+exp(K1βm))rerror=K11exp((K1)2Kβm)=K(K1)2(log(rerror1rerror)+log(K1))

其中 r e r r o r = ∑ i ω i I ( f m ≠ y i ) / ∑ i ω i r_{error}=\sum_i\omega_iI(\textbf{f}_m\neq \textbf{y}_i)/\sum_i\omega_i rerror=iωiI(fm=yi)/iωi 是模型的错误率;于是我们得到了 SAMME 算法:

  1. 初始化权重 ω i \omega_i ωi
  2. 在权重 ω i \omega_i ωi 下训练分类器 g m ( x i ) \textbf{g}_m(\textbf{x}_i) gm(xi)
  3. 计算这个分类器的错误率 r e r r o r = ∑ i ω i I ( g m ≠ y i ) / ∑ i ω i r_{error}=\sum_i\omega_iI(\textbf{g}_m\neq \textbf{y}_i)/\sum_i\omega_i rerror=iωiI(gm=yi)/iωi
  4. 计算 α m = l o g ( 1 − r e r r o r r e r r o r ) + l o g ( K − 1 ) \alpha_m=log\left(\frac{1-r_{error}}{r_{error}}\right)+log(K-1) αm=log(rerror1rerror)+log(K1)
  5. 更新样本权重 ω i = ω i e x p ( α m I ( g m ≠ y i ) ) i = 1 , 2 , . . . , N \omega_i=\omega_iexp(\alpha_mI(\textbf{g}_m\neq \textbf{y}_i))\\ i=1, 2, ..., N ωi=ωiexp(αmI(gm=yi))i=1,2,...,N
  6. 归一化权重 ω i \omega_i ωi
  7. 转到步骤 2,直到错误率小于阈值

注意对于一个具体的问题 K K K 是确定的,所以 ( K − 1 ) 2 K \frac{(K-1)^2}{K} K(K1)2 是一个常数,而乘以一个常数对归一化过程没有影响,因此作者在算法中没有计算 β m \beta_m βm 的系数,而是将去掉系数之后的部分记作 α m \alpha_m αm ,每一轮计算只求 α m \alpha_m αm 的值

SAMME.R算法

作者在 SAMME 算法的基础上还提出了一种变体:SAMME.R 算法。和 SAMME 算法不同的是,该算法采用加权概率估计(weighted probability estimates)的方法更新加法模型,假设我们当前的分类器是 f m − 1 ( x ) \textbf{f}_{m-1}(\textbf{x}) fm1(x) ,我们希望加入一个新的基分类器使它的表现更好: f m − 1 ( x ) + h ( x ) \textbf{f}_{m-1}(\textbf{x})+\textbf{h}(\textbf{x}) fm1(x)+h(x) ;首先我们把损失函数写成期望的形式:

L ( y , f ( x ) ) = E ( e x p ( − 1 K y ⋅ ( f m − 1 ( x ) + h ( x ) ) ) ∣ x ) L(\textbf{y}, \textbf{f}(\textbf{x}))=E\left(exp(-\frac{1}{K}\textbf{y} \cdot(\textbf{f}_{m-1}(\textbf{x})+\textbf{h}(\textbf{x})))|\textbf{x}\right) L(y,f(x))=E(exp(K1y(fm1(x)+h(x)))x)

我们依然要求 h ( x ) \textbf{h}(\textbf{x}) h(x) 满足对称约束条件:
h 1 ( x ) + h 2 ( x ) + . . . + h K ( x ) = 0 h_1(\textbf{x})+h_2(\textbf{x})+...+h_K(\textbf{x}) = 0 h1(x)+h2(x)+...+hK(x)=0
这里的损失函数是对所有样本求期望,我们可以将它改写成对每个类求期望再求和,结果是一样的:
L ( y , f ( x ) ) = e x p ( − h 1 ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = 1 ∣ x ) + e x p ( − h 2 ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = 2 ∣ x ) + . . . + e x p ( − h K ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = K ∣ x ) L(\textbf{y}, \textbf{f}(\textbf{x}))=exp\left(-\frac{h_1(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y} \cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=1}|\textbf{x}\right)+\\ exp\left(-\frac{h_2(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=2}|\textbf{x}\right)+...+\\exp\left(-\frac{h_K(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=K}|\textbf{x}\right) L(y,f(x))=exp(K1h1(x))E(exp(K1yfm1(x))Ic=1x)+exp(K1h2(x))E(exp(K1yfm1(x))Ic=2x)+...+exp(K1hK(x))E(exp(K1yfm1(x))Ic=Kx)

这里 I c = i I_{c=i} Ic=i 同样是示性函数,当 x \textbf{x} x 属于第 i i i 类时取1,其他情况取0;我们以第一项为例简单说明计算过程:
E ( e x p ( − 1 K y ⋅ ( f m − 1 ( x ) + h ( x ) ) ) I c = 1 ∣ x ) = E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) − 1 K y ⋅ h ( x ) ) I c = 1 ∣ x ) = E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) e x p ( − 1 K y ⋅ h ( x ) ) I c = 1 ∣ x ) \begin{aligned}E\left(exp(-\frac{1}{K}\textbf{y}\cdot(\textbf{f}_{m-1}(\textbf{x})+\textbf{h}(\textbf{x})))I_{c=1}|\textbf{x}\right)&=E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x})-\frac{1}{K}\textbf{y}\cdot\textbf{h}(\textbf{x}))I_{c=1}|\textbf{x}\right)\\ &=E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))exp(-\frac{1}{K}\textbf{y} \cdot\textbf{h}(\textbf{x}))I_{c=1}|\textbf{x}\right)\end{aligned} E(exp(K1y(fm1(x)+h(x)))Ic=1x)=E(exp(K1yfm1(x)K1yh(x))Ic=1x)=E(exp(K1yfm1(x))exp(K1yh(x))Ic=1x)

我们只关注 y ⋅ h ( x ) \textbf{y}\cdot\textbf{h}(\textbf{x}) yh(x) 的计算,注意此时我们是在属于第一类的样本上求期望,因此 y = ( 1 , − 1 K − 1 , . . . , − 1 K − 1 ) \textbf{y}=(1, -\frac{1}{K-1}, ..., -\frac{1}{K-1}) y=(1,K11,...,K11),于是可以得到:
y ⋅ h ( x ) = h 1 ( x ) − h 2 ( x ) K − 1 − h 3 ( x ) K − 1 − . . . − h K ( x ) K − 1 \begin{aligned}\textbf{y}\cdot\textbf{h}(\textbf{x})&=h_1(\textbf{x})-\frac{h_2(\textbf{x})}{K-1}-\frac{h_3(\textbf{x})}{K-1}-...-\frac{h_K(\textbf{x})}{K-1}\end{aligned} yh(x)=h1(x)K1h2(x)K1h3(x)...K1hK(x)
又注意到 h ( x ) \textbf{h}(\textbf{x}) h(x) 满足对称约束条件,所以 h 2 ( x ) + . . . + h K ( x ) = − h 1 ( x ) h_2(\textbf{x})+...+h_K(\textbf{x}) = -h_1(\textbf{x}) h2(x)+...+hK(x)=h1(x),将它带入上式即可得:
y ⋅ h ( x ) = K h 1 ( x ) K − 1 \textbf{y}\cdot\textbf{h}(\textbf{x})=\frac{Kh_1(\textbf{x})}{K-1} yh(x)=K1Kh1(x)
因此:
E ( e x p ( − 1 K y ⋅ ( f m − 1 ( x ) + h ( x ) ) ) I c = 1 ∣ x ) = E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) e x p ( − 1 K y ⋅ h ( x ) ) I c = 1 ∣ x ) = E ( e x p ( − h 1 ( x ) K − 1 ) e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = 1 ∣ x ) = e x p ( − h 1 ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = 1 ∣ x ) \begin{aligned}E\left(exp(-\frac{1}{K}\textbf{y}\cdot(\textbf{f}_{m-1}(\textbf{x})+\textbf{h}(\textbf{x})))I_{c=1}|\textbf{x}\right)&=E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))exp(-\frac{1}{K}\textbf{y}\cdot\textbf{h}(\textbf{x}))I_{c=1}|\textbf{x}\right)\\ &=E\left(exp\left(-\frac{h_1(\textbf{x})}{K-1}\right)exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=1}|\textbf{x}\right)\\ &=exp\left(-\frac{h_1(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=1}|\textbf{x}\right)\end{aligned} E(exp(K1y(fm1(x)+h(x)))Ic=1x)=E(exp(K1yfm1(x))exp(K1yh(x))Ic=1x)=E(exp(K1h1(x))exp(K1yfm1(x))Ic=1x)=exp(K1h1(x))E(exp(K1yfm1(x))Ic=1x)
同理可得:
E ( e x p ( − 1 K y ⋅ ( f m − 1 ( x ) + h ( x ) ) ) I c = 2 ∣ x ) = e x p ( − h 2 ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = 2 ∣ x ) E ( e x p ( − 1 K y ⋅ ( f m − 1 ( x ) + h ( x ) ) ) I c = 3 ∣ x ) = e x p ( − h 3 ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = 3 ∣ x ) … E ( e x p ( − 1 K y ⋅ ( f m − 1 ( x ) + h ( x ) ) ) I c = K ∣ x ) = e x p ( − h K ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = K ∣ x ) \begin{aligned}E\left(exp(-\frac{1}{K}\textbf{y}\cdot(\textbf{f}_{m-1}(\textbf{x})+\textbf{h}(\textbf{x})))I_{c=2}|\textbf{x}\right) &=exp\left(-\frac{h_2(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=2}|\textbf{x}\right)\\ E\left(exp(-\frac{1}{K}\textbf{y}\cdot(\textbf{f}_{m-1}(\textbf{x})+\textbf{h}(\textbf{x})))I_{c=3}|\textbf{x}\right) &=exp\left(-\frac{h_3(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=3}|\textbf{x}\right)\\ \ldots\\ E\left(exp(-\frac{1}{K}\textbf{y}\cdot(\textbf{f}_{m-1}(\textbf{x})+\textbf{h}(\textbf{x})))I_{c=K}|\textbf{x}\right) &=exp\left(-\frac{h_K(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=K}|\textbf{x}\right)\end{aligned} E(exp(K1y(fm1(x)+h(x)))Ic=2x)E(exp(K1y(fm1(x)+h(x)))Ic=3x)E(exp(K1y(fm1(x)+h(x)))Ic=Kx)=exp(K1h2(x))E(exp(K1yfm1(x))Ic=2x)=exp(K1h3(x))E(exp(K1yfm1(x))Ic=3x)=exp(K1hK(x))E(exp(K1yfm1(x))Ic=Kx)

将这些结果带入损失函数表达式即得:
L ( y , f ( x ) ) = e x p ( − h 1 ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = 1 ∣ x ) + e x p ( − h 2 ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = 2 ∣ x ) + . . . + e x p ( − h K ( x ) K − 1 ) E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = K ∣ x ) = e x p ( − h 1 ( x ) K − 1 ) P r o b w ( c = 1 ∣ x ) + e x p ( − h 2 ( x ) K − 1 ) P r o b w ( c = 2 ∣ x ) + . . . + e x p ( − h K ( x ) K − 1 ) P r o b w ( c = K ∣ x ) \begin{aligned}L(\textbf{y}, \textbf{f}(\textbf{x}))&=exp\left(-\frac{h_1(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y} \cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=1}|\textbf{x}\right)+exp\left(-\frac{h_2(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=2}|\textbf{x}\right)+...+exp\left(-\frac{h_K(\textbf{x})}{K-1}\right)E\left(exp(-\frac{1}{K}\textbf{y}\cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=K}|\textbf{x}\right)\\ &=exp\left(-\frac{h_1(\textbf{x})}{K-1}\right)Prob_w(c=1|\textbf{x})+exp\left(-\frac{h_2(\textbf{x})}{K-1}\right)Prob_w(c=2|\textbf{x})+...+exp\left(-\frac{h_K(\textbf{x})}{K-1}\right)Prob_w(c=K|\textbf{x})\end{aligned} L(y,f(x))=exp(K1h1(x))E(exp(K1yfm1(x))Ic=1x)+exp(K1h2(x))E(exp(K1yfm1(x))Ic=2x)+...+exp(K1hK(x))E(exp(K1yfm1(x))Ic=Kx)=exp(K1h1(x))Probw(c=1x)+exp(K1h2(x))Probw(c=2x)+...+exp(K1hK(x))Probw(c=Kx)

其中 P r o b w ( c = k ∣ x ) = E ( e x p ( − 1 K y ⋅ f m − 1 ( x ) ) I c = k ∣ x ) Prob_w(c=k|\textbf{x})=E\left(exp(-\frac{1}{K}\textbf{y} \cdot\textbf{f}_{m-1}(\textbf{x}))I_{c=k}|\textbf{x}\right) Probw(c=kx)=E(exp(K1yfm1(x))Ic=kx)

这时我们得到了一个约束优化问题:
min ⁡     e x p ( − h 1 ( x ) K − 1 ) P r o b w ( c = 1 ∣ x ) + e x p ( − h 2 ( x ) K − 1 ) P r o b w ( c = 2 ∣ x ) + . . . + e x p ( − h K ( x ) K − 1 ) P r o b w ( c = K ∣ x ) s . t .     h 1 ( x ) + h 2 ( x ) + . . . + h K ( x ) = 0 \min\ \ \ exp\left(-\frac{h_1(\textbf{x})}{K-1}\right)Prob_w(c=1|\textbf{x})+exp\left(-\frac{h_2(\textbf{x})}{K-1}\right)Prob_w(c=2|\textbf{x})+...+exp\left(-\frac{h_K(\textbf{x})}{K-1}\right)Prob_w(c=K|\textbf{x})\\ s.t.\ \ \ h_1(\textbf{x})+h_2(\textbf{x})+...+h_K(\textbf{x}) = 0 min   exp(K1h1(x))Probw(c=1x)+exp(K1h2(x))Probw(c=2x)+...+exp(K1hK(x))Probw(c=Kx)s.t.   h1(x)+h2(x)+...+hK(x)=0

这类问题可以用拉格朗日乘子法解决,首先构造拉格朗日函数:

L = ∑ i e x p ( − h i ( x ) K − 1 ) P r o b w ( c = i ∣ x ) − λ ( h 1 ( x ) + h 2 ( x ) + . . . + h K ( x ) ) \mathcal{L}=\sum_iexp\left(-\frac{h_i(\textbf{x})}{K-1}\right)Prob_w(c=i|\textbf{x})-\lambda(h_1(\textbf{x})+h_2(\textbf{x})+...+h_K(\textbf{x})) L=iexp(K1hi(x))Probw(c=ix)λ(h1(x)+h2(x)+...+hK(x))
令拉格朗日函数对 h i ( x ) h_i(\textbf{x}) hi(x) 偏导等于0可得:
− 1 K − 1 e x p ( − h 1 ( x ) K − 1 ) P r o b w ( c = 1 ∣ x ) − λ = 0 − 1 K − 1 e x p ( − h 2 ( x ) K − 1 ) P r o b w ( c = 2 ∣ x ) − λ = 0 … − 1 K − 1 e x p ( − h K ( x ) K − 1 ) P r o b w ( c = K ∣ x ) − λ = 0 \begin{aligned}-\frac{1}{K-1}exp\left(-\frac{h_1(\textbf{x})}{K-1}\right)Prob_w(c=1|\textbf{x})-\lambda&=0\\ -\frac{1}{K-1}exp\left(-\frac{h_2(\textbf{x})}{K-1}\right)Prob_w(c=2|\textbf{x})-\lambda&=0\\ \ldots\\ -\frac{1}{K-1}exp\left(-\frac{h_K(\textbf{x})}{K-1}\right)Prob_w(c=K|\textbf{x})-\lambda&=0\end{aligned} K11exp(K1h1(x))Probw(c=1x)λK11exp(K1h2(x))Probw(c=2x)λK11exp(K1hK(x))Probw(c=Kx)λ=0=0=0
然后我们需要将 h i ( x ) h_i(\textbf{x}) hi(x) 解出来,这里以 h 1 ( x ) h_1(\textbf{x}) h1(x) 的求解为例;首先我们将第一式与第二式联立得:
− 1 K − 1 e x p ( − h 1 ( x ) K − 1 ) P r o b w ( c = 1 ∣ x ) = − 1 K − 1 e x p ( − h 2 ( x ) K − 1 ) P r o b w ( c = 2 ∣ x ) − h 1 ( x ) K − 1 + ln ⁡ P r o b w ( c = 1 ∣ x ) = − h 2 ( x ) K − 1 + ln ⁡ P r o b w ( c = 2 ∣ x ) h 1 ( x ) − h 2 ( x ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = 1 ∣ x ) − ln ⁡ P r o b w ( c = 2 ∣ x ) ) \begin{aligned}-\frac{1}{K-1}exp\left(-\frac{h_1(\textbf{x})}{K-1}\right)Prob_w(c=1|\textbf{x})&=-\frac{1}{K-1}exp\left(-\frac{h_2(\textbf{x})}{K-1}\right)Prob_w(c=2|\textbf{x})\\ -\frac{h_1(\textbf{x})}{K-1}+\ln Prob_w(c=1|\textbf{x})&=-\frac{h_2(\textbf{x})}{K-1}+\ln Prob_w(c=2|\textbf{x})\\ h_1(\textbf{x})-h_2(\textbf{x})&=(K-1)(\ln Prob_w(c=1|\textbf{x})-\ln Prob_w(c=2|\textbf{x}))\end{aligned} K11exp(K1h1(x))Probw(c=1x)K1h1(x)+lnProbw(c=1x)h1(x)h2(x)=K11exp(K1h2(x))Probw(c=2x)=K1h2(x)+lnProbw(c=2x)=(K1)(lnProbw(c=1x)lnProbw(c=2x))
同理分别联立第一式和其他各式可得:
h 1 ( x ) − h 3 ( x ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = 1 ∣ x ) − ln ⁡ P r o b w ( c = 3 ∣ x ) ) h 1 ( x ) − h 4 ( x ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = 1 ∣ x ) − ln ⁡ P r o b w ( c = 4 ∣ x ) ) … h 1 ( x ) − h K ( x ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = 1 ∣ x ) − ln ⁡ P r o b w ( c = K ∣ x ) ) \begin{aligned} h_1(\textbf{x})-h_3(\textbf{x})&=(K-1)(\ln Prob_w(c=1|\textbf{x})-\ln Prob_w(c=3|\textbf{x}))\\ h_1(\textbf{x})-h_4(\textbf{x})&=(K-1)(\ln Prob_w(c=1|\textbf{x})-\ln Prob_w(c=4|\textbf{x}))\\ \ldots\\ h_1(\textbf{x})-h_K(\textbf{x})&=(K-1)(\ln Prob_w(c=1|\textbf{x})-\ln Prob_w(c=K|\textbf{x}))\end{aligned} h1(x)h3(x)h1(x)h4(x)h1(x)hK(x)=(K1)(lnProbw(c=1x)lnProbw(c=3x))=(K1)(lnProbw(c=1x)lnProbw(c=4x))=(K1)(lnProbw(c=1x)lnProbw(c=Kx))

我们将这 K − 1 K-1 K1 个式子相加得:
( K − 1 ) 2 ln ⁡ P r o b w ( c = 1 ∣ x ) − ( K − 1 ) ( ∑ i = 2 K ln ⁡ P r o b w ( c = i ∣ x ) ) = ( K − 1 ) h 1 ( x ) − ( h 2 ( x ) + . . . + h K ( x ) ) = K h 1 ( x ) − ( h 1 ( x ) + h 2 ( x ) + . . . + h K ( x ) ) = K h 1 ( x ) \begin{aligned}(K-1)^2\ln Prob_w(c=1|\textbf{x})-(K-1)(\sum_{i=2}^K\ln Prob_w(c=i|\textbf{x}))&=(K-1)h_1(\textbf{x})-(h_2(\textbf{x})+...+h_K(\textbf{x}))\\ &=Kh_1(\textbf{x})-(h_1(\textbf{x})+h_2(\textbf{x})+...+h_K(\textbf{x}))\\ &=Kh_1(\textbf{x})\end{aligned} (K1)2lnProbw(c=1x)(K1)(i=2KlnProbw(c=ix))=(K1)h1(x)(h2(x)+...+hK(x))=Kh1(x)(h1(x)+h2(x)+...+hK(x))=Kh1(x)
从而可以解出 h 1 ( x ) h_1(\textbf{x}) h1(x)
h 1 ( x ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = 1 ∣ x ) − 1 K ( ln ⁡ P r o b w ( c = 1 ∣ x ) + ln ⁡ P r o b w ( c = 2 ∣ x ) + ln ⁡ P r o b w ( c = 3 ∣ x ) + . . . + ln ⁡ P r o b w ( c = K ∣ x ) ) ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = 1 ∣ x ) − 1 K ( ∑ i ln ⁡ P r o b w ( c = i ∣ x ) ) ) \begin{aligned}h_1(\textbf{x})&=(K-1)\left(\ln Prob_w(c=1|\textbf{x})-\frac{1}{K}(\ln Prob_w(c=1|\textbf{x})+\ln Prob_w(c=2|\textbf{x})+\ln Prob_w(c=3|\textbf{x})+...+\ln Prob_w(c=K|\textbf{x}))\right)\\ &=(K-1)\left(\ln Prob_w(c=1|\textbf{x})-\frac{1}{K}(\sum_i\ln Prob_w(c=i|\textbf{x}))\right)\end{aligned} h1(x)=(K1)(lnProbw(c=1x)K1(lnProbw(c=1x)+lnProbw(c=2x)+lnProbw(c=3x)+...+lnProbw(c=Kx)))=(K1)(lnProbw(c=1x)K1(ilnProbw(c=ix)))
同理可得:
h 2 ( x ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = 2 ∣ x ) − 1 K ( ∑ i ln ⁡ P r o b w ( c = i ∣ x ) ) ) h 3 ( x ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = 3 ∣ x ) − 1 K ( ∑ i ln ⁡ P r o b w ( c = i ∣ x ) ) ) … h K ( x ) = ( K − 1 ) ( ln ⁡ P r o b w ( c = K ∣ x ) − 1 K ( ∑ i ln ⁡ P r o b w ( c = i ∣ x ) ) ) \begin{aligned}h_2(\textbf{x})&=(K-1)\left(\ln Prob_w(c=2|\textbf{x})-\frac{1}{K}(\sum_i\ln Prob_w(c=i|\textbf{x}))\right)\\ h_3(\textbf{x})&=(K-1)\left(\ln Prob_w(c=3|\textbf{x})-\frac{1}{K}(\sum_i\ln Prob_w(c=i|\textbf{x}))\right)\\ \ldots\\ h_K(\textbf{x})&=(K-1)\left(\ln Prob_w(c=K|\textbf{x})-\frac{1}{K}(\sum_i\ln Prob_w(c=i|\textbf{x}))\right)\end{aligned} h2(x)h3(x)hK(x)=(K1)(lnProbw(c=2x)K1(ilnProbw(c=ix)))=(K1)(lnProbw(c=3x)K1(ilnProbw(c=ix)))=(K1)(lnProbw(c=Kx)K1(ilnProbw(c=ix)))
于是我们得到了 SAMME.R 算法:

  1. 初始化权重 ω i \omega_i ωi
  2. 在权重 ω i \omega_i ωi 下训练分类器 g m ( x ) \textbf{g}_m(\textbf{x}) gm(x)
  3. 计算加权类概率估计(weighted class probability estimates):
    p k m ( x ) = P r o b w ( c = k ∣ x )     k = 1 , 2 , . . . , K p_k^m(\textbf{x})=Prob_w(c=k|\textbf{x}) \ \ \ k=1, 2, ..., K pkm(x)=Probw(c=kx)   k=1,2,...,K
  4. 计算 h ( x ) \textbf{h}(\textbf{x}) h(x) h k m ( x ) = ( K − 1 ) ( ln ⁡ p k m ( x ) − 1 K ∑ i ln ⁡ p i m ( x ) ) h_k^m(\textbf{x})=(K-1)\left(\ln p_k^m(\textbf{x})-\frac{1}{K}\sum_i\ln p_i^m(\textbf{x})\right) hkm(x)=(K1)(lnpkm(x)K1ilnpim(x))
  5. 更新样本权重 ω i = ω i e x p ( − K − 1 K y i ln ⁡ p m ( x i ) )     i = 1 , 2 , . . . , N \omega_i=\omega_iexp(-\frac{K-1}{K}\textbf{y}_i \ln\textbf{p}^m(\textbf{x}_i))\ \ \ i=1, 2, ..., N ωi=ωiexp(KK1yilnpm(xi))   i=1,2,...,N
  6. 归一化权重 ω i \omega_i ωi
  7. 转到步骤 2,直到每一类的概率估计大于阈值

注意第5步更新样本权重时由于 h k m ( x ) h_k^m(\textbf{x}) hkm(x) 的第二项是对所有 p k m ( x ) p_k^m(\textbf{x}) pkm(x) 求和,在每一轮训练中都可以看成是一个常数,对权重的更新没有影响(因为权重需要归一化),因此这一步只取 h k m ( x ) h_k^m(\textbf{x}) hkm(x) 的第一项计算

参考文献

Zhu, H. Zou, S. Rosset, T. Hastie, “Multi-class AdaBoost”, 2009.

你可能感兴趣的:(机器学习,机器学习,python,算法)