本文主要是介绍从零开始理解AdaBoost算法:前向分布算法(四)【数学推导】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
理解 AdaBoost 算法的原理
在理解 AdaBoost 算法原理的过程中,两个关键问题需要注意:
- 权重是如何由分类误差决定的。
- 如何调整前一轮错误和正确的样本的权值。
优化问题
AdaBoost 解决的是二分类问题,数据集表示为:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T = \{(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N)\} T={(x1,y1),(x2,y2),…,(xN,yN)}
其中, y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi∈{−1,+1}。
模型
AdaBoost 使用的是加法模型:
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x) = \sum_{m=1}^{M} \alpha_m G_m(x) f(x)=m=1∑MαmGm(x)
化成递推式
f m ( x ) = f m − 1 ( x ) + α m G m ( x ) f_m(x) = f_{m-1}(x) + \alpha_m G_m(x) fm(x)=fm−1(x)+αmGm(x)
最终分类器为:
G ( x ) = sign [ f ( x ) ] G(x) = \text{sign}[f(x)] G(x)=sign[f(x)]
sign 函数如下所示:
- 当 f ( x ) ≥ 0 f(x) \ge 0 f(x)≥0, G ( x ) = 1 G(x) = 1 G(x)=1
- 当 f ( x ) < 0 f(x) < 0 f(x)<0, G ( x ) = − 1 G(x) = -1 G(x)=−1
损失函数
使用的是指数损失函数:
L ( y , f ( x ) ) = exp [ − y f ( x ) ] L(y , f(x)) = \exp[-y f(x)] L(y,f(x))=exp[−yf(x)]
当 G ( x ) G(x) G(x) 分类正确时, f ( x ) f(x) f(x) 与 y y y 同号, − y f ( x ) < 0 -y f(x) < 0 −yf(x)<0 , L ( y , f ( x ) ) ≤ 1 L(y , f(x)) \le 1 L(y,f(x))≤1;
当 G ( x ) G(x) G(x) 分类错误时, f ( x ) f(x) f(x) 与 y y y 异号, − y f ( x ) > 0 -y f(x) > 0 −yf(x)>0, L ( y , f ( x ) ) > 1 L(y , f(x)) > 1 L(y,f(x))>1。
因此,指数函数的图像说明了分类正确时损失较小,分类错误时损失较大。
第一个巧思:损失函数视为权值
这个特性适合作为 AdaBoost 算法中调整权值的方法:对于 G m ( x ) G_m(x) Gm(x)如何提高前一轮错误的权值,降低正确的权值
w ˉ m i = exp [ − y i f m − 1 ( x i ) ] \bar{w}_{m i}=\exp \left[-y_{i} f_{m-1}\left(x_{i}\right)\right] wˉmi=exp[−yifm−1(xi)]
单个样本的损失函数
L ( y , f m ( x ) ) = exp [ − y f m ( x ) ] L(y , f_m(x)) = \exp[-y f_m(x)] L(y,fm(x))=exp[−yfm(x)]
带入加法模型 f ( x ) = ∑ m = 1 M α m G m ( x ) f(x) = \sum_{m=1}^{M} \alpha_m G_m(x) f(x)=∑m=1MαmGm(x) 得到,
L ( y , f m ( x ) ) = exp [ − y ∑ m = 1 M α m G m ( x ) ] L(y , f_m(x)) = \exp[-y \sum_{m=1}^{M} \alpha_m G_m(x)] L(y,fm(x))=exp[−ym=1∑MαmGm(x)]
展开后得到,
L ( y , f m ( x ) ) = exp [ − y ( f m − 1 ( x ) + α m G m ( x ) ) ] L(y , f_m(x)) = \exp[-y ( f_{m-1}(x) + \alpha_m G_m(x))] L(y,fm(x))=exp[−y(fm−1(x)+αmGm(x))]
总体损失函数
将所有样本放进去:
∑ i = 1 N exp [ − y i ( f m − 1 ( x i ) + α G m ( x i ) ) ] \sum_{i = 1}^{N} \exp[-y_i ( f_{m-1}(x_i) + \alpha G_m(x_i))] i=1∑Nexp[−yi(fm−1(xi)+αGm(xi))]
前向分布算法
理解损失函数后,需要使用前向分布算法对其进行优化:
( β m , γ m ) = arg min β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; γ ) ) (\beta_m, \gamma_m) = \arg\min_{\beta,\gamma} \sum_{i=1}^{N} L(y_i, f_{m-1}(x_i) + \beta b(x_i;\gamma)) (βm,γm)=argβ,γmini=1∑NL(yi,fm−1(xi)+βb(xi;γ))
在第 m 轮时,
( α m , γ m ) = arg min α , γ ∑ i = 1 N exp [ − y i ( f m − 1 ( x i ) + α G m ( x i ) ) ] (\alpha_m, \gamma_m) = \arg\min_{\alpha,\gamma} \sum_{i = 1}^{N} \exp[-y_i ( f_{m-1}(x_i) + \alpha G_m(x_i))] (αm,γm)=argα,γmini=1∑Nexp[−yi(fm−1(xi)+αGm(xi))]
式子变换
使用指数运算法则 e a + b = e a ∗ e b e^{a+b} = e^a * e^b ea+b=ea∗eb 进行变换,得到:
( α m , γ m ) = arg min α , γ ∑ i = 1 N exp [ − y i ( f m − 1 ( x i ) ) ] exp [ − y i α G m ( x i ) ] (\alpha_m, \gamma_m) = \arg\min_{\alpha,\gamma} \sum_{i = 1}^{N} \exp[-y_i ( f_{m-1}(x_i))] \exp[-y_i \alpha G_m(x_i)] (αm,γm)=argα,γmini=1∑Nexp[−yi(fm−1(xi))]exp[−yiαGm(xi)]
将 exp [ − y i ( f m − 1 ( x i ) ) ] \exp[-y_i ( f_{m-1}(x_i))] exp[−yi(fm−1(xi))] 视为权值:
( α m , γ m ) = arg min α , γ ∑ i = 1 N w ˉ m i exp [ − y i α G m ( x i ) ] (\alpha_m, \gamma_m) = \arg\min_{\alpha,\gamma} \sum_{i = 1}^{N} \bar{w}_{m i} \exp[-y_i \alpha G_m(x_i)] (αm,γm)=argα,γmini=1∑Nwˉmiexp[−yiαGm(xi)]
继续分析式子, G m ( x i ) G_m(x_i) Gm(xi) 有两个取值可能:
- G m ( x i ) = y i G_m(x_i) = y_i Gm(xi)=yi
- G m ( x i ) ≠ y i G_m(x_i) \ne y_i Gm(xi)=yi
进一步展开,划分为两类:
( α m , γ m ) = arg min α , γ ( ∑ y i = G ( x i ) w ˉ m i exp ( − α ) + ∑ y i ≠ G ( x i ) w ˉ m i exp ( α ) ) (\alpha_m, \gamma_m) = \arg\min_{\alpha,\gamma} (\sum_{y_i = G(x_i)} \bar{w}_{m i} \exp(-\alpha) + \sum_{y_i \ne G(x_i)} \bar{w}_{m i} \exp(\alpha)) (αm,γm)=argα,γmin(yi=G(xi)∑wˉmiexp(−α)+yi=G(xi)∑wˉmiexp(α))
化简得到,
( α m , γ m ) = arg min α , γ ( exp ( − α ) ∑ y i = G ( x i ) w ˉ m i + exp ( α ) ∑ y i ≠ G ( x i ) w ˉ m i ) (\alpha_m, \gamma_m) = \arg\min_{\alpha,\gamma} (\exp(-\alpha) \sum_{y_i = G(x_i)} \bar{w}_{m i} + \exp(\alpha) \sum_{y_i \ne G(x_i)} \bar{w}_{m i}) (αm,γm)=argα,γmin(exp(−α)yi=G(xi)∑wˉmi+exp(α)yi=G(xi)∑wˉmi)
求解
优化 G m ( x ) G_m(x) Gm(x)
当分类误差率最小时,得到最优的 (G_m(x)):
G m ∗ ( x ) = arg min G ∑ i = 1 N w ˉ m i I ( y i ≠ G ( x i ) ) G_m^*(x) = \arg\min_{G} \sum_{i = 1}^{N} \bar{w}_{m i} I (y_i \ne G(x_i)) Gm∗(x)=argGmini=1∑NwˉmiI(yi=G(xi))
其中 I I I 函数在条件 y i ≠ G ( x i ) y_i \ne G(x_i) yi=G(xi) 成立时为 1。
- G m ∗ ( x ) G_m^*(x) Gm∗(x): 表示在第 (m) 轮迭代中找到的最优分类器。
- arg min G \arg\min_{G} argminG: 表示找到使目标函数达到最小值的 G G G。
- ∑ i = 1 N w ˉ m i I ( y i ≠ G ( x i ) ) \sum_{i = 1}^{N} \bar{w}_{m i} I (y_i \ne G(x_i)) ∑i=1NwˉmiI(yi=G(xi)): 表示加权分类误差率的总和。
公式的目标是通过选择合适的分类器 G ( x ) G(x) G(x) 来最小化加权分类误差率。其中,加权分类误差率由权重 w ˉ m i \bar{w}_{m i} wˉmi 和指标函数 I ( y i ≠ G ( x i ) ) I(y_i \ne G(x_i)) I(yi=G(xi)) 决定。
具体步骤
- 权重 w ˉ m i \bar{w}_{m i} wˉmi: 每个样本 x i x_i xi 在第 m m m 轮迭代中的权重,表示该样本的重要性。权重越大,分类器 (G) 对该样本分类错误的代价越高。
- 指标函数 I ( y i ≠ G ( x i ) ) I(y_i \ne G(x_i)) I(yi=G(xi)): 如果 y i y_i yi(实际标签)不等于 G ( x i ) G(x_i) G(xi)(分类器的预测标签),则 I I I 函数的值为 1,否则为 0。换句话说, I ( y i ≠ G ( x i ) ) I(y_i \ne G(x_i)) I(yi=G(xi)) 表示分类错误的样本数。
- 最小化加权分类误差率: 通过调整分类器 G ( x ) G(x) G(x),使得加权分类误差率(即权重和分类错误样本数的乘积的总和)最小化。
因此,这个公式表示在所有可能的分类器 G ( x ) G(x) G(x) 中,找到一个分类器 G m ∗ ( x ) G_m^*(x) Gm∗(x),使得在加权数据集上的分类错误最少。
示例扩展
为了更好地理解这个公式,可以考虑一个简单的例子:
假设我们有一个包含 5 个样本的数据集,每个样本的初始权重 w ˉ 1 i \bar{w}_{1i} wˉ1i 均为 0.2(即每个样本权重相等)。在第一轮迭代中,我们要找到一个分类器 G 1 ( x ) G_1(x) G1(x),使得加权分类误差率最小。
假设我们有以下数据集:
- 样本 x 1 , x 2 , x 3 , x 4 , x 5 x_1, x_2, x_3, x_4, x_5 x1,x2,x3,x4,x5
- 标签 y 1 = 1 , y 2 = − 1 , y 3 = 1 , y 4 = − 1 , y 5 = 1 y_1 = 1, y_2 = -1, y_3 = 1, y_4 = -1, y_5 = 1 y1=1,y2=−1,y3=1,y4=−1,y5=1
假设一个分类器 G ( x ) G(x) G(x) 预测 y i y_i yi 为 y ^ i \hat{y}_i y^i。我们需要计算加权分类误差率:
∑ i = 1 5 w ˉ 1 i I ( y i ≠ G ( x i ) ) \sum_{i = 1}^{5} \bar{w}_{1i} I(y_i \ne G(x_i)) i=1∑5wˉ1iI(yi=G(xi))
假设分类器 G 1 ( x ) G_1(x) G1(x) 的预测结果如下:
- y ^ 1 = 1 , y ^ 2 = 1 , y ^ 3 = − 1 , y ^ 4 = − 1 , y ^ 5 = 1 \hat{y}_1 = 1, \hat{y}_2 = 1, \hat{y}_3 = -1, \hat{y}_4 = -1, \hat{y}_5 = 1 y^1=1,y^2=1,y^3=−1,y^4=−1,y^5=1
根据公式,分类误差率计算为:
w ˉ 11 ⋅ 0 + w ˉ 12 ⋅ 1 + w ˉ 13 ⋅ 1 + w ˉ 14 ⋅ 0 + w ˉ 15 ⋅ 0 \bar{w}_{11} \cdot 0 + \bar{w}_{12} \cdot 1 + \bar{w}_{13} \cdot 1 + \bar{w}_{14} \cdot 0 + \bar{w}_{15} \cdot 0 wˉ11⋅0+wˉ12⋅1+wˉ13⋅1+wˉ14⋅0+wˉ15⋅0
即:
0.2 ⋅ 0 + 0.2 ⋅ 1 + 0.2 ⋅ 1 + 0.2 ⋅ 0 + 0.2 ⋅ 0 = 0.4 0.2 \cdot 0 + 0.2 \cdot 1 + 0.2 \cdot 1 + 0.2 \cdot 0 + 0.2 \cdot 0 = 0.4 0.2⋅0+0.2⋅1+0.2⋅1+0.2⋅0+0.2⋅0=0.4
我们通过选择不同的分类器 G ( x ) G(x) G(x),使加权分类误差率最小化。例如,如果选择另一个分类器 G 2 ( x ) G_2(x) G2(x) 的预测结果如下:
- y ^ 1 = 1 , y ^ 2 = − 1 , y ^ 3 = 1 , y ^ 4 = − 1 , y ^ 5 = 1 \hat{y}_1 = 1, \hat{y}_2 = -1, \hat{y}_3 = 1, \hat{y}_4 = -1, \hat{y}_5 = 1 y^1=1,y^2=−1,y^3=1,y^4=−1,y^5=1
计算误差率:
w ˉ 11 ⋅ 0 + w ˉ 12 ⋅ 0 + w ˉ 13 ⋅ 0 + w ˉ 14 ⋅ 0 + w ˉ 15 ⋅ 0 = 0 \bar{w}_{11} \cdot 0 + \bar{w}_{12} \cdot 0 + \bar{w}_{13} \cdot 0 + \bar{w}_{14} \cdot 0 + \bar{w}_{15} \cdot 0 = 0 wˉ11⋅0+wˉ12⋅0+wˉ13⋅0+wˉ14⋅0+wˉ15⋅0=0
在这种情况下,分类器 G 2 ( x ) G_2(x) G2(x) 使加权分类误差率为 0,因此 G 2 ( x ) G_2(x) G2(x) 比 G 1 ( x ) G_1(x) G1(x) 更优。
第二个巧思:优化 α m \alpha_m αm
α m \alpha_m αm 由 G m ( x ) G_m(x) Gm(x) 的分类误差率决定:
arg min α m ( exp ( − α ) ∑ i = 1 N w ˉ m i + ( exp ( α ) − exp ( − α ) ) ∑ y i ≠ G ( x i ) w ˉ m i ) \arg\min_{\alpha_m} (\exp(-\alpha) \sum_{i = 1}^N \bar{w}_{m i} + (\exp(\alpha) - \exp(-\alpha)) \sum_{y_i \ne G(x_i)} \bar{w}_{m i}) argαmmin(exp(−α)i=1∑Nwˉmi+(exp(α)−exp(−α))yi=G(xi)∑wˉmi)
求导
∂ ( e − α m ∑ i = 1 N w ˉ m i + ( e α m − e − α m ) ∑ y i ≠ G ( x i ) w ˉ m i ) ∂ α m = − e − α m ∑ i = 1 N w ˉ m i + e α m ∑ y i ≠ G ( x i ) w ˉ m i + e − α m ∑ y i ≠ G ( x i ) w ˉ m i ) \frac{\partial (\ e^{-\alpha_m} \sum_{i = 1}^N \bar{w}_{m i} + (e^{\alpha_m} - e^{-\alpha_m} ) \sum_{y_i \ne G(x_i)} \bar{w}_{m i} \ )}{\partial \alpha_m} = -e^{-\alpha_m} \sum_{i = 1}^N \bar{w}_{m i} + e^{\alpha_m} \sum_{y_i \ne G(x_i)} \bar{w}_{m i} + e^{-\alpha_m} \sum_{y_i \ne G(x_i)} \bar{w}_{m i} ) ∂αm∂( e−αm∑i=1Nwˉmi+(eαm−e−αm)∑yi=G(xi)wˉmi )=−e−αmi=1∑Nwˉmi+eαmyi=G(xi)∑wˉmi+e−αmyi=G(xi)∑wˉmi)
合并同类项得到,
= − e − α m ( ∑ i = 1 N w ˉ m i − ∑ y i ≠ G ( x i ) w ˉ m i ) + e α m ∑ y i ≠ G ( x i ) w ˉ m i = -e^{-\alpha_m} ( \sum_{i = 1}^N \bar{w}_{m i} - \sum_{y_i \ne G(x_i)} \bar{w}_{m i} ) + e^{\alpha_m} \sum_{y_i \ne G(x_i)} \bar{w}_{m i} =−e−αm(i=1∑Nwˉmi−yi=G(xi)∑wˉmi)+eαmyi=G(xi)∑wˉmi
第一个式子中的 ∑ i = 1 N w ˉ m i − ∑ y i ≠ G ( x i ) w ˉ m i \sum_{i = 1}^N \bar{w}_{m i} - \sum_{y_i \ne G(x_i)} \bar{w}_{m i} ∑i=1Nwˉmi−∑yi=G(xi)wˉmi意味着,全样本减去错误分类的样本,最后得到的就是分类正确的样本,因此。
= − e − α m ∑ y i = G ( x i ) w ˉ m i + e α m ∑ y i ≠ G ( x i ) w ˉ m i = -e^{-\alpha_m} \sum_{y_i = G(x_i)} \bar{w}_{m i} + e^{\alpha_m} \sum_{y_i \ne G(x_i)} \bar{w}_{m i} =−e−αmyi=G(xi)∑wˉmi+eαmyi=G(xi)∑wˉmi
导数为0
令求导结果为0,得到,
e α m ∑ y i ≠ G ( x i ) w ˉ m i = e − α m ∑ y i = G ( x i ) w ˉ m i e^{\alpha_m} \sum_{y_i \ne G(x_i)} \bar{w}_{m i} = e^{-\alpha_m} \sum_{y_i = G(x_i)} \bar{w}_{m i} eαmyi=G(xi)∑wˉmi=e−αmyi=G(xi)∑wˉmi
化简并求解,得到:
α m = 1 2 ln ∑ y i = G ( x i ) w ˉ m i ∑ y i ≠ G ( x i ) w ˉ m i \alpha_m = \frac{1}{2} \ln \frac{\sum_{y_i = G(x_i)} \bar{w}_{m i}}{\sum_{y_i \ne G(x_i)} \bar{w}_{m i}} αm=21ln∑yi=G(xi)wˉmi∑yi=G(xi)wˉmi
进一步,分子分母同除 所有样本的权值之和 ∑ i = 1 N w ˉ m i \sum_{i = 1}^{N} \bar{w}_{m i} ∑i=1Nwˉmi ,得到;
α m = 1 2 ln ∑ i = 1 N w ˉ m i ∑ i = 1 N w ˉ m i − ∑ y i ≠ G ( x i ) w ˉ m i ∑ i = 1 N w ˉ m i ∑ y i ≠ G ( x i ) w ˉ m i ∑ i = 1 N w ˉ m i \alpha_m = \frac{1}{2} \ln \frac{ \frac{\sum_{i = 1}^{N} \bar{w}_{m i}}{\sum_{i = 1}^{N} \bar{w}_{m i}} - \frac{\sum_{y_i \ne G(x_i)} \bar{w}_{m i} }{\sum_{i = 1}^{N} \bar{w}_{m i}} }{ \frac{\sum_{y_i \ne G(x_i)} \bar{w}_{m i} }{\sum_{i = 1}^{N} \bar{w}_{m i}}} αm=21ln∑i=1Nwˉmi∑yi=G(xi)wˉmi∑i=1Nwˉmi∑i=1Nwˉmi−∑i=1Nwˉmi∑yi=G(xi)wˉmi
其中 ∑ y i ≠ G ( x i ) w ˉ m i ∑ i = 1 N w ˉ m i \frac{\sum_{y_i \ne G(x_i)} \bar{w}_{m i} }{\sum_{i = 1}^{N} \bar{w}_{m i}} ∑i=1Nwˉmi∑yi=G(xi)wˉmi为分类错误的点的权值之和 除以 所有样本的权值——分类误差率 e m e_m em,最终得到
1 2 l n 1 − e m e m \frac{1}{2} ln\frac{1-e_m}{e_m} 21lnem1−em
因此,
α m = 1 2 l n 1 − e m e m \alpha_m = \frac{1}{2} ln\frac{1-e_m}{e_m} αm=21lnem1−em
满足我们的要求:分类误差率越大, α m \alpha_m αm越小;
前向更新 f m ( x ) f_m(x) fm(x)
f m ( x ) = f m − 1 ( x ) + α m G m ( x ) f_m(x) = f_{m-1}(x) + \alpha_m G_m(x) fm(x)=fm−1(x)+αmGm(x)
在前一步的基础上,加上当前的训练的权重
更新训练数据权值 w ˉ m + 1 , i \bar{w}_{m+1,i} wˉm+1,i
前面我们说过,我们是使用指数损失函数来替代权值的,所以我们直接带入即可求得;
根据原始公式
w ˉ m i = exp [ − y i f m − 1 ( x i ) ] \bar{w}_{m i}=\exp \left[-y_{i} f_{m-1}\left(x_{i}\right)\right] wˉmi=exp[−yifm−1(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)]
带入 f m ( x ) = f m − 1 ( x ) + α m G m ( x ) f_m(x) = f_{m-1}(x) + \alpha_m G_m(x) fm(x)=fm−1(x)+αmGm(x),得到
w ˉ m + 1 , i = exp − y i ( f m − 1 ( x i ) + α m G m ( x i ) ) \bar{w}_{m+1, i}=\exp -y_{i} ( f_{m-1}(x_i) + \alpha_m G_m(x_i) ) wˉm+1,i=exp−yi(fm−1(xi)+αmGm(xi))
展开得到,
w ˉ m + 1 , i = exp [ − y i f m − 1 ( x i ) ] ∗ exp − y i α m G m ( x i ) \bar{w}_{m+1, i}=\exp [-y_{i} f_{m-1}(x_i)] * \exp -y_{i} \alpha_m G_m(x_i) wˉm+1,i=exp[−yifm−1(xi)]∗exp−yiαmGm(xi)
带入原始式子 w ˉ m i = exp [ − y i f m − 1 ( x i ) ] \bar{w}_{m i}=\exp \left[-y_{i} f_{m-1}\left(x_{i}\right)\right] wˉmi=exp[−yifm−1(xi)] ,我们得到
w ˉ m + 1 , i = w ˉ m i ∗ [ exp − y i α m G m ( x i ) ] \bar{w}_{m+1, i}=\bar{w}_{m i} * [ \exp -y_{i} \alpha_m G_m(x_i) ] wˉm+1,i=wˉmi∗[exp−yiαmGm(xi)]
参考链接:6.【Adaboost】算法原理解析_哔哩哔哩_bilibili
这篇关于从零开始理解AdaBoost算法:前向分布算法(四)【数学推导】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!