
☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython
一. AdaBoost概述
AdaBoost从弱学习算法出发,通过多轮迭代,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合这些弱分类器,构成一个强分类器,具体算法和原理请参考《提升方法AdaBoost自适应提升算法(https://blog.csdn.net/LaoYuanPython/article/details/148452847)》。
二、AdaBoost中的权重更新
为了便于后文的理解,将AdaBoost算法中涉及的相关符号在此重新介绍一下:
- w m , i : w_{m,i}: wm,i:第 m m m轮第 i i i个样本的权重
- Z m Z_m Zm:第m轮的归一化因子(使权重和为1)
- α m \alpha_m αm:是弱分类器 G m ( x ) G_m(x) Gm(x)的权重
- y i ∈ { − 1 , + 1 } y_i \in \{-1,+1\} yi∈{−1,+1}是真实标签
- G m ( x ) G_m(x) Gm(x):第 m 个弱分类器
- F m − 1 ( x ) F_{m-1}(x) Fm−1(x):前 m-1 个弱分类器的加权组合,即第 m 次迭代之前的强分类器
- α m \alpha_m αm:第 m 个弱分类器的权重
- e m e_m em :第m轮迭代的分类类误差率记为
- exp(x):指数函数 e x e^x ex
AdaBoost的样本权重更新遵循以下递推关系:
公式 1 : w m + 1 , i = w m , i Z m ⋅ e − α m y i G m ( x i ) 公式1:w_{m+1,i} = \frac{w_{m,i}}{Z_m} \cdot e^{-\alpha_m y_i G_m(x_i)} 公式1:wm+1,i=Zmwm,i⋅e−αmyiGm(xi)
第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)\\[10pt]
Fm(x)=Fm−1(x)+αmGm(x)
三、样本权重与第m-1轮的强分类器关系分析
推导 w m , i w_{m,i} wm,i 和 F m − 1 ( x i ) F_{m-1}(x_i) Fm−1(xi) 之间的关系:
-
在第 m m m 次迭代中,样本 x i x_i xi 的权重 w m , i w_{m,i} wm,i 是根据第 m − 1 m-1 m−1 次迭代的权重 w m − 1 , i w_{m-1,i} wm−1,i 和当前弱分类器 G m − 1 ( x ) G_{m-1}(x) Gm−1(x) 的预测结果更新的:
w m i = w m − 1 ( i ) ⋅ exp ( − α m − 1 y i G m − 1 ( x i ) ) Z m − 1 w_{mi} = \frac{w_{m-1}(i) \cdot \exp(-\alpha_{m-1} y_i G_{m-1}(x_i))}{Z_{m-1}} wmi=Zm−1wm−1(i)⋅exp(−αm−1yiGm−1(xi)) -
递归推导 w m , i w_{m,i} wm,i 和 w m − 2 , i w_{m-2,i} wm−2,i之间的关系
在第 m − 1 m-1 m−1 次迭代中,样本 x i x_i xi 的权重 w m − 1 , i w_{m-1,i} wm−1,i 是根据第 m − 2 m-2 m−2 次迭代的权重 w m − 2 , i w_{m-2,i} wm−2,i 和当前弱分类器 G m − 2 ( x ) G_{m-2}(x) Gm−2(x) 的预测结果更新的:
w m − 1 ( i ) = w m − 2 ( i ) ⋅ exp ( − α m − 2 y i G m − 2 ( x i ) ) Z m − 2 w_{m-1}(i) = \frac{w_{m-2}(i) \cdot \exp(-\alpha_{m-2} y_i G_{m-2}(x_i))}{Z_{m-2}} wm−1(i)=Zm−2wm−2(i)⋅exp(−αm−2yiGm−2(xi))
将 w m − 1 ( i ) w_{m-1}(i) wm−1(i) 代入 w m i w_{mi} wmi 的表达式中:
w m i = ( w m − 2 ( i ) ⋅ exp ( − α m − 2 y i G m − 2 ( x i ) ) Z m − 2 ) ⋅ exp ( − α m − 1 y i G m − 1 ( x i ) ) Z m − 1 w_{mi}= \frac{\left( \frac{w_{m-2}(i) \cdot \exp(-\alpha_{m-2} y_i G_{m-2}(x_i))}{Z_{m-2}} \right) \cdot \exp(-\alpha_{m-1} y_i G_{m-1}(x_i))}{Z_{m-1}} wmi=Zm−1(Zm−2wm−2(i)⋅exp(−αm−2yiGm−2(xi)))⋅exp(−αm−1yiGm−1(xi))
简化后:
w m i = w m − 2 ( i ) ⋅ exp ( − α m − 2 y i G m − 2 ( x i ) − α m − 1 y i G m − 1 ( x i ) ) Z m − 2 Z m − 1 w_{mi} = \frac{w_{m-2}(i) \cdot \exp(-\alpha_{m-2} y_i G_{m-2}(x_i) - \alpha_{m-1} y_i G_{m-1}(x_i))}{Z_{m-2} Z_{m-1}} wmi=Zm−2Zm−1wm−2(i)⋅exp(−αm−2yiGm−2(xi)−αm−1yiGm−1(xi)) -
递归推导 w m , i w_{m,i} wm,i 和 w 1 , i w_{1,i} w1,i之间的关系
继续上述步骤过程,直到右边等式只有 w 1 , i w_{1,i} w1,i:
w m i = w m − 3 ( i ) ⋅ exp ( − α m − 3 y i G m − 3 ( x i ) − α m − 2 y i G m − 2 ( x i ) − α m − 1 y i G m − 1 ( x i ) ) Z m − 3 Z m − 2 Z m − 1 w_{mi} = \frac{w_{m-3}(i) \cdot \exp(-\alpha_{m-3} y_i G_{m-3}(x_i) - \alpha_{m-2} y_i G_{m-2}(x_i) - \alpha_{m-1} y_i G_{m-1}(x_i))}{Z_{m-3} Z_{m-2} Z_{m-1}} wmi=Zm−3Zm−2Zm−1wm−3(i)⋅exp(−αm−3yiGm−3(xi)−αm−2yiGm−2(xi)−αm−1yiGm−1(xi))
⋮ \vdots ⋮
w m i = w 1 ( i ) ⋅ exp ( − ∑ j = 1 m − 1 α j y i G j ( x i ) ) Z 1 Z 2 ⋯ Z m − 1 w_{mi} = \frac{w_1(i) \cdot \exp \left( -\sum_{j=1}^{m-1} \alpha_j y_i G_j(x_i) \right)}{Z_1 Z_2 \cdots Z_{m-1}} wmi=Z1Z2⋯Zm−1w1(i)⋅exp(−∑j=1m−1αjyiGj(xi)) -
将 F m − 1 ( x i ) F_{m-1}(x_i) Fm−1(xi) 代入上述公式
F m − 1 ( x i ) = ∑ j = 1 m − 1 α j G j ( x i ) F_{m-1}(x_i) = \sum_{j=1}^{m-1} \alpha_j G_j(x_i) Fm−1(xi)=j=1∑m−1αjGj(xi)
得到:
w m i = w 1 ( i ) ⋅ exp ( − y i F m − 1 ( x i ) ) Z 1 Z 2 ⋯ Z m − 1 w_{mi} = \frac{w_1(i) \cdot \exp(-y_i F_{m-1}(x_i))}{Z_1 Z_2 \cdots Z_{m-1}} wmi=Z1Z2⋯Zm−1w1(i)⋅exp(−yiFm−1(xi))
即:
w m i = w 1 ( i ) ⋅ e − y i F m − 1 ( x i ) Z 1 Z 2 ⋯ Z m − 1 w_{mi} = \frac{w_1(i) \cdot e^{-y_i F_{m-1}(x_i)}}{Z_1 Z_2 \cdots Z_{m-1}} wmi=Z1Z2⋯Zm−1w1(i)⋅e−yiFm−1(xi)
根据提升算法,以上公式中:
- w 1 , i w_{1,i} w1,i初始化为1/N
- 在第m(m>1)轮迭代时,可以根据公式1计算出该轮迭代的权值,并根据分类误差率 e m e_m em得到弱分类器的系数α
-
z
m
z_m
zm为归一化因子,由算法可知,其值与本轮迭代的权值
w
m
、
α
m
、
G
m
(
x
i
)
和实际标签值
y
i
w_m、α_m、G_m(x_i)和实际标签值y_i
wm、αm、Gm(xi)和实际标签值yi相关,对每轮迭代来说是一个常量,因此可以说:
w
m
i
的值与
e
−
y
i
F
m
−
1
(
x
i
)
w_{mi}的值与e^{-y_i F_{m-1}(x_i)}
wmi的值与e−yiFm−1(xi)成正比,记为:
w m i ∝ e − y i F m − 1 ( x i ) w_{mi} ∝ e^{-y_i F_{m-1}(x_i)} wmi∝e−yiFm−1(xi)
四、小结
本文介绍了AdaBoost提升算法第m轮弱分类器的样本权重与第m-1轮的强分类器之间的关系,并通过算术推导进行了证明。通过推导可以确认 w m i w_{mi} wmi 和前 m − 1 m-1 m−1 次迭代的强分类器 F m − 1 ( x i ) F_{m-1}(x_i) Fm−1(xi) 存在正比例关系,这个关系对于利用AdaBoost的损失函数求弱分类器的权重值非常有用。
更多人工智能知识学习过程中可能遇到的疑难问题及解决办法请关注专栏《零基础机器学习入门》及付费专栏《机器学习疑难问题集》后续的文章。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。