1. 回顾boosting算法的基本原理
在集成学习原理小结中,我们已经讲到了boosting算法系列的基本思想,如下图:
从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
不过有几个具体的问题Boosting算法没有详细说明:
- 如何计算学习误差率e?
- 如何得到弱学习器权重系 α \alpha α ?
- 如何更新样本权重D?
- 使用何种结合策略?
2. Adaboost算法的基本思路
2.1、AdaBoost(Adaptive Boosting, 自适应增强)算法采取的方法是:
- 提高上一轮被错误分类的样本的权值,降低被正确分类的样本的权值;
- 线性加权求和。误差率小的基学习器拥有较大的权值,误差率大的基学习器拥有较小的权值。
2.2、Adaboost算法图解
2.3、算法步骤
Adaboost 算法有多种推导方式,比较容易理解的是基于 “加性模型”(additive model),即基学习器的线性组合。
周志华《机器学习》p174有证明,加性模型的损失函数可为指数函数。指数损失函数是分类任务原本0/1损失函数的一致(consistent)替代损失函数,由于指数损失函数有更好的数学性质,例如处处可微,所以我们用它替代0/1损失作为优化目标。
在 Adaboost 算法中,第一个基分类器 h 1 h_1 h1 是通过直接将基学习算法用于初始数据分布而得;此后迭代地生成 h t h_t ht 和 α t \alpha_t αt,当基分类器 h t h_t ht 基于分布 D t D_t Dt 产生后,该基分类器的权重 α t \alpha_t αt 应使得 α t h t \alpha_th_t αtht 最小化指数损失函数
上式中
I
(
⋅
)
I(⋅)
I(⋅) 是指示函数,
I
(
f
(
x
)
=
h
t
(
x
)
)
I\left(f(x)=h_t(x)\right)
I(f(x)=ht(x))表示在数据集
D
t
D_t
Dt 中
f
(
x
)
=
h
t
(
x
)
f(x)=h_t(x)
f(x)=ht(x) 的所有数据组成的集合。
其中 ϵ t = P x − D t ( h t ( x ) ≠ f ( x ) ) \epsilon_t=P_{x-D_t} \left(h_t(x)\not=f(x)\right) ϵt=Px−Dt(ht(x)=f(x)),考虑指数损失函数的导数
令(8.10)为零可解得
这恰是算法图解(8.3)中算法第 6 行的分类器权重更新公式。
Adaboost 算法在获得
H
t
−
1
H_{t-1}
Ht−1 之后样本分布将进行调整,使下一轮的基学习器
h
t
h_t
ht 能纠正
H
t
−
1
H_{t-1}
Ht−1 的一些错误,理想的
h
t
h_t
ht 能纠正
H
t
−
1
H_{t-1}
Ht−1 的全部错误,即最小化
注意到
f
2
(
x
)
=
h
t
2
(
x
)
=
1
f^2(x)=h^2_t(x)=1
f2(x)=ht2(x)=1,式(8.12)可使用
e
−
f
(
x
)
h
t
(
x
)
e^{-f(x)h_t(x)}
e−f(x)ht(x) 的泰勒展式近似为
于是,理想的基学习器
注意到
E
x
−
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
]
E_{x-D} [e^{-f(x)H_{t-1}(x)}]
Ex−D[e−f(x)Ht−1(x)] 是一个常数,令
D
t
D_t
Dt 表示一个分布
根据数学期望的定义,这等价于令
由
f
(
x
)
,
h
(
x
)
∈
f(x),h(x) \in
f(x),h(x)∈{
−
1
,
+
1
-1,+1
−1,+1},有
则理想的基学习器
由此可见,理想的
h
t
h_t
ht 将分布在
D
t
D_t
Dt 下最小化分类误差。因此,弱分类器将基于分布
D
t
D_t
Dt 来训练,且针对
D
t
D_t
Dt 的分类误差应小于 0.5 ,这在一定程度上类似 “残差逼近” 的思想,考虑到
D
t
D_t
Dt 和
D
t
+
1
D_{t+1}
Dt+1 的关系,有
这恰是图 8.3 中算法第 7 行的样本分布更新公式。
3、Adaboost小结
理论上任何学习器都可以用于Adaboost。但一般来说,使用最广泛的 Adaboost 弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。
3.1、Adaboost的主要优点
- Adaboost作为分类器时,分类精度很高
- 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
- 作为简单的二元分类器时,构造简单,结果可理解。
- 不容易发生过拟合
3.2、Adaboost的主要缺点
对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。