在之前的博客集成学习原理小结中,我们谈到了 Adaboost
算法。它凭借其优越的性能和通用性,成为 Boosting
家族中最为经典的算法之一。因此,在本文中,我们将学习 Adaboost
算法,领略其独特的魅力。
基本思路
在集成学习原理小结中,我们知道 Boosting
算法是一族可将弱分类器提升为强分类器的算法。它的工作机制可总结为:先从训练集中学习得到一个弱学习器,再根据弱学习器的表现对训练样本分布进行调整,更新权重使得之前弱学习器做错的样本得到更多的关注,然后根据调整后的样本重新训练下一个弱学习器;如此重复进行,直至弱学习器个数达到事先的值
T
T
T,最终将
T
T
T 个弱学习器结合。
毫无疑问,Adaboost
算法也满足上述基本流程。那么,它到底是怎样实现的呢?其算法的基本流程又是怎样的呢?
Adaboost
算法有多个变种,比较容易理解的是加法模型(additive model
),即基学习器的加权组合,如下图所示,
损失函数优化
在前一小结中,我们对 Adaboost
算法的基本思路有了一定的了解。那么,它的损失函数又是什么呢?我们又怎么优化呢?
前面提到,与 GBDT 算法相同,上述的 Adaboost
算法是一加法模型,并且使用前向分布算法进行求解。不同的是,Adaboost
的损失函数为指数函数
a r g m i n ∑ i = 1 m e x p ( − y i H t ( x ) ) \mathop{argmin}\sum_{i=1}^m exp(-y_iH_t(x)) argmini=1∑mexp(−yiHt(x))
我们对上式求导,并令其等于0,可得
− P ( y i = 1 ∣ x ) e − H t ( x ) + P ( y i = − 1 ∣ x ) e H t ( x ) = 0 -P(y_i=1|x)e^{-H_t(x)} + P(y_i=-1|x)e^{H_t(x)} = 0 −P(yi=1∣x)e−Ht(x)+P(yi=−1∣x)eHt(x)=0
解得
H t ( x ) = 1 2 ln P ( y i = 1 ∣ x ) P ( y i = − 1 ∣ x ) H_t(x) = \frac{1}{2}\ln \frac{P(y_i=1|x)}{P(y_i=-1|x)} Ht(x)=21lnP(yi=−1∣x)P(yi=1∣x)
因此,可有
s i g n ( H ( x ) ) = { 1 , P ( y i = 1 ∣ x ) > P ( y i = − 1 ∣ x ) − 1 , P ( y i = 1 ∣ x ) ≤ P ( y i = − 1 ∣ x ) = a r g m a x y ∈ [ − 1 , 1 ] P ( y ∣ x ) \begin{aligned} sign(H(x)) &= \left\{ \begin{aligned} 1 &, \quad P(y_i=1|x) > P(y_i=-1|x) \\ -1 &, \quad P(y_i=1|x) \le P(y_i=-1|x) \\ \end{aligned} \right. \\ &= \mathop{argmax}\limits_{y \in [-1, 1]} P(y|x)\\ \end{aligned} sign(H(x))={1−1,P(yi=1∣x)>P(yi=−1∣x),P(yi=1∣x)≤P(yi=−1∣x)=y∈[−1,1]argmaxP(y∣x)
因此,我们可以得知当指数函数最小化等价于分类错误率最小化。而之所以使用指数函数,是因为其有更好的数学性质,如连续可微等。此外,根据前向分布算法,可得上式可改写为
a r g m i n α , h ∑ i = 1 m e x p ( − y i ( H t − 1 ( x ) + α h t ( x ) ) \mathop{argmin}\limits_{\alpha, h}\sum_{i=1}^m exp(-y_i(H_{t-1}(x) + \alpha h_t(x)) α,hargmini=1∑mexp(−yi(Ht−1(x)+αht(x))
令 w t , i ′ = e x p ( − y i H t − 1 ( x ) ) w_{t, i}^{'} = exp(-y_iH_{t-1}(x)) wt,i′=exp(−yiHt−1(x))。因为其与参数 α , h \alpha, h α,h无关,所以与最小化无关,仅仅依赖于 H t − 1 ( x ) H_{t-1}(x) Ht−1(x)。因此,有
a r g m i n α , h ∑ i = 1 m w t , i ′ e x p ( − y i α h t ( x ) ) \mathop{argmin}\limits_{\alpha, h}\sum_{i=1}^m w_{t, i}^{'}exp(-y_i \alpha h_t(x)) α,hargmini=1∑mwt,i′exp(−yiαht(x))
为了求解上式,我们不妨求解 h t ( x ) h_t(x) ht(x)。根据前式,我们知道指数函数最小化等价于分类错误率最小化,因此,
h t ∗ ( x ) = a r g m i n α , h ∑ i = 1 m w t , i ′ I ( y i ≠ h t ( x i ) ) h_t^*(x) = \mathop{argmin}\limits_{\alpha, h}\sum_{i=1}^m w_{t, i}^{'}I(y_i \neq h_t(x_i)) ht∗(x)=α,hargmini=1∑mwt,i′I(yi̸=ht(xi))
将上式代入原损失函数,则有
a
r
g
m
i
n
α
∑
i
=
1
m
w
t
,
i
′
e
x
p
(
−
y
i
α
h
t
(
x
)
)
=
∑
y
i
=
h
t
∗
(
x
i
)
w
t
,
i
′
e
−
α
+
∑
y
i
≠
h
t
∗
(
x
i
)
w
t
,
i
′
e
α
=
(
e
α
−
e
−
α
)
∑
i
=
1
m
w
t
,
i
′
I
(
y
i
≠
h
t
∗
(
x
i
)
)
+
∑
i
=
1
m
w
t
,
i
′
e
−
α
\begin{aligned} \mathop{argmin}\limits_{\alpha}\sum_{i=1}^{m}w_{t, i}^{'}exp(-y_i \alpha h_t(x)) &= \sum_{y_i=h_t^*(x_i)}w_{t, i}^{'}e^{-\alpha} + \sum_{y_i \neq h_t^*(x_i)}w_{t, i}^{'}e^{\alpha} \\ &= (e^{\alpha} - e^{-\alpha})\sum_{i=1}^m w_{t, i}^{'}I(y_i \neq h_t^*(x_i)) + \sum_{i=1}^m w_{t, i}^{'}e^{-\alpha} \\ \end{aligned}
αargmini=1∑mwt,i′exp(−yiαht(x))=yi=ht∗(xi)∑wt,i′e−α+yi̸=ht∗(xi)∑wt,i′eα=(eα−e−α)i=1∑mwt,i′I(yi̸=ht∗(xi))+i=1∑mwt,i′e−α
我们对上式求导,使其为零,则有
( e α + e − α ) ∑ i = 1 m w t , i ′ I ( y i ≠ h t ∗ ( x i ) ) − ∑ i = 1 m w t , i ′ e − α = 0 (e^{\alpha} + e^{-\alpha})\sum_{i=1}^m w_{t, i}^{'}I(y_i \neq h_t^*(x_i)) - \sum_{i=1}^m w_{t, i}^{'}e^{-\alpha} = 0 (eα+e−α)i=1∑mwt,i′I(yi̸=ht∗(xi))−i=1∑mwt,i′e−α=0
令 ϵ t \epsilon_t ϵt 是样本错误率
ϵ t = ∑ i = 1 m w t , i ′ I ( h t ( x i ) ≠ y i ) ∑ i = 1 m w t , i = ∑ i = 1 m w t , i I ( h t ( x i ) ≠ y i ) \epsilon_t = \frac{\sum_{i=1}^{m}w_{t,i}^{'}I(h_t(x_i) \neq y_i)}{\sum_{i=1}^{m}w_{t,i}} = \sum_{i=1}^{m}w_{t,i}I(h_t(x_i) \neq y_i) ϵt=∑i=1mwt,i∑i=1mwt,i′I(ht(xi)̸=yi)=i=1∑mwt,iI(ht(xi)̸=yi)
则有
α t = 1 2 ln 1 − ϵ t ϵ t \alpha_t = \frac{1}{2}\ln \frac{1 - \epsilon_t}{\epsilon_t} αt=21lnϵt1−ϵt
最后,根据 H t ( x ) = H t − 1 ( x ) + α t h t ( x ) H_t(x) = H_{t-1}(x) + \alpha_th_t(x) Ht(x)=Ht−1(x)+αtht(x) 和 w t , i ′ = e x p ( − y i h ( x i ) ) w_{t, i}^{'} = exp(-y_ih(x_i)) wt,i′=exp(−yih(xi)) 可得
w t + 1 , i ′ = w t , i ′ e x p ( − y i α h t ( x i ) ) w_{t+1, i}^{'} = w_{t,i}^{'}exp(-y_i\alpha h_t(x_i)) wt+1,i′=wt,i′exp(−yiαht(xi))
总结
正如 Boosting
算法家族一样,Adaboost
的弱分类器可以为任何分类器,如决策树,神经网络等。此外,Adaboost
算法优缺点如下,
优点
-
分类精度很高
-
在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
-
作为简单的二元分类器时,构造简单,结果可理解。
-
不容易发生过拟合
缺点
- 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。
参考文献
- 周志华 《机器学习》;
- 刘建平 集成学习之Adaboost原理小结