基本思想: 改变训练样本的权重, 学习多个分类器, 将分类器进行线性组合, 提高分类的性能.—”三个臭皮匠顶个诸葛亮”.
1. 提升方法AdaBoost算法
1.1 提升方法的思路
强可学习: 一个类, 存在一个多项式的学习算法能够学习它, 并且正确率高.
弱可学习: 一个类, 存在一个多项式的学习算法能够学习它, 正确率仅比随机猜测略好.
强可学习和弱可学习是等价的: 一个概念是强可学习的充要条件是该概念是弱可学习的.
1.1.1 Adaboost算法概述
先得到弱分类器, 然后用它们组成强分类器.
(1) 每一轮都要改变训练数据的权值分布: 提高前一轮被弱分类器错误分类的样本的权值, 使他们在下一轮得到更高的重视.
(2) 将弱分类器组合成强分类器: 给误差率小的弱分类器更高的权值, 使他们在分类中有更强的话语权.
1.2 Adaboost算法
使用二类分类的训练数据集
T={(x1,y1),...,(xN,yN)}
T
=
{
(
x
1
,
y
1
)
,
.
.
.
,
(
x
N
,
y
N
)
}
.
输入: 训练数据集T和弱分类算法.
输出: 最终分类器G(x).
(1) 初始化训练数据的权值分布(每个样本的权值相同):
D1=(w11,...,w1N)
D
1
=
(
w
11
,
.
.
.
,
w
1
N
)
其中,
w1i=1N
w
1
i
=
1
N
(2) 对于
m=1,...,M
m
=
1
,
.
.
.
,
M
(a) 使用具有权值分布为D_m的数据集进行学习, 得到基本分类器:
Gm(x):X→{−1,+1}
G
m
(
x
)
:
X
→
{
−
1
,
+
1
}
(b) 计算
Gm(x)
G
m
(
x
)
的分类误差率:
em=∑i=1NwmiI(Gm(x)≠yi)
e
m
=
∑
i
=
1
N
w
m
i
I
(
G
m
(
x
)
≠
y
i
)
(c) 计算
Gm(x)
G
m
(
x
)
的系数:
αm=12ln1−emem
α
m
=
1
2
ln
1
−
e
m
e
m
, 明显可以看到
em
e
m
↑,
αm
α
m
↓
(d) 更新训练数据集的权值分布:
Dm+1=(wm+1,1,...,wm1,N)
D
m
+
1
=
(
w
m
+
1
,
1
,
.
.
.
,
w
m
1
,
N
)
wm+1,i=wmiexp(−αmyiGm(xi))∑i=1Nwmiexp(−αmyiGm(xi))
w
m
+
1
,
i
=
w
m
i
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
∑
i
=
1
N
w
m
i
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
, 该式调整的其实是
wm+1,i
w
m
+
1
,
i
之间的相对大小.
(3) 构建分类器的线性组合
f(x)=∑i=1NαmGm(x)
f
(
x
)
=
∑
i
=
1
N
α
m
G
m
(
x
)
得到最终分类器
G(x)=sign(f(x))
G
(
x
)
=
s
i
g
n
(
f
(
x
)
)
2. Adaboost算法的训练误差分析
Adaboost最基本的性质是它可以在学习的过程中不断减少训练误差.
Adaboost具有适应性, 能适应弱分类器各自的训练误差率, 这也是它名字的由来(适应的提升).