1. 提升方法的基本思路
1.Kearns 和 Valiant首先提出了“强可学习” 和 “弱可学习”的概念。指出:在概率近似正确学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确的概率很高,那么就称这个概念是强可学习的;一个概念,如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。后来Schapire证明一个概念强可学习的充分必要条件是这个概念是弱可学习的。
2.这样一来,问题便成为,在学习中,发现“弱可学习算法”,能否将它提升为“强可学习算法”。通常来说,“弱可学习算法”比“强可学习算法”容易发现。
3.对于提升方法来说,有两个问题需要解决:第一,如何在每一轮改变训练数据的权值或概率分布。第二,如何将弱分类器组合成强分类器。对于第一个问题,AdaBoost提高被前一轮弱分类器错误分类样本的权值,并降低前一轮被正确分类的样本的权值。对于第二个问题,对于弱分类器的组合,AdaBoost采用加权多数表决。具体来说,分类误差率小的弱分类器权重大,反之则小。
2. 分类问题Adaboost
这里以二分类为例,多分类问题可以在此上面推广。
分类器预测结果为-1或1。
Adaboost是一种损失函数为指数函数,模型为加法模型,学习算法为前向分布算法的分类算法。
设训练样本集的m个样本为: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . ( x m , y m ) } T= \{ (x_1,y_1),(x_2,y_2)...(x_m,y_m) \} T={(x1,y1),(x2,y2)...(xm,ym)}
共有K个分类器: G 1 , G 2 , G 3 . . . G k G_1,G_2,G_3...G_k G1,G2,G3...Gk
初始时,m个样本的权重(也就是对第一个分类器而言)为: w 11 = w 12 = . . . w 1 m = 1 m w_{11}=w_{12}=...w_{1m}=\frac{1}{m} w11=w12=...w1m=m1
2.1 弱分类器权重系数
对于第i个分类器而言,分类误差率的计算: e i = P ( y i ≠ G ( x i ) ) = ∑ j = 1 m w i , j ∗ I ( y i ≠ G ( x i ) ) e_i=P(y_i \not= G(x_i))=\sum_{j=1}^m w_{i,j}*I(y_i\not=G(x_i)) ei=P(yi=G(xi))=j=1∑mwi,j∗I(yi=G(xi))
基于得到的分类误差率,可以进一步计算得到第i个分类器的权重系数: α k = 1 2 ∗ log 1 − e i e i \alpha_k=\frac{1}{2}*\log\frac{1-e_i}{e_i} αk=21∗logei1−ei
由此权重系数公式可以看出,分类误差率越大,权重系数越小。
2.2 样本权重系数
每一个弱分类器的样本权重系数,都是基于前面一个分类器的样本权重系数以及前一个分类器的样本预测结果来设置的。
假设前一个弱分类器(第i-1个弱分类器)的样本权重为 W i − 1 = { w i − 1 , 1 , w i − 1 , 2 . . . w i − 1 , m } W_{i-1}=\{ w_{i-1,1},w_{i-1,2}...w_{i-1,m}\} Wi−1={wi−1,1,wi−1,2...wi−1,m}
那么可以计算得到第i个弱分类器的第j个样本权重为
w
i
,
j
=
w
i
−
1
,
j
∗
e
x
p
(
−
α
i
−
1
∗
G
i
−
1
(
x
j
)
∗
y
j
)
Z
i
−
1
w_{i,j}=\frac{w_{i-1,j}*exp(-\alpha_{i-1}*G_{i-1}(x_j)*y_j)}{Z_{i-1}}
wi,j=Zi−1wi−1,j∗exp(−αi−1∗Gi−1(xj)∗yj)
Z
i
−
1
Z_{i-1}
Zi−1为规范化因子:
Z
i
−
1
=
∑
j
=
1
m
e
x
p
(
−
α
i
−
1
∗
G
i
−
1
(
x
j
)
∗
y
j
)
Z_{i-1}=\sum_{j=1}^m exp(-\alpha_{i-1}*G_{i-1}(x_j)*y_j)
Zi−1=j=1∑mexp(−αi−1∗Gi−1(xj)∗yj)
2.3 加权表决
对于分类问题而言,根据弱分类器的权重,将弱分类器组合成一个强分类器,对于样本x的预测结果为:
f
(
x
)
=
s
i
g
n
(
∑
k
=
1
K
α
k
∗
G
k
(
x
)
)
f(x)=sign(\sum_{k=1}^K \alpha{k}*G_k(x))
f(x)=sign(k=1∑Kαk∗Gk(x))
3. 回归问题Adaboost
设训练样本集的m个样本为: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . ( x m , y m ) } T= \{ (x_1,y_1),(x_2,y_2)...(x_m,y_m) \} T={(x1,y1),(x2,y2)...(xm,ym)}
共有K个分类器: G 1 , G 2 , G 3 . . . G k G_1,G_2,G_3...G_k G1,G2,G3...Gk
初始时,m个样本的权重(也就是对第一个分类器而言)为: w 11 = w 12 = . . . w 1 m = 1 m w_{11}=w_{12}=...w_{1m}=\frac{1}{m} w11=w12=...w1m=m1
3.1弱分类器的权重系数
计算第i个分类器上,对于样本集的最大误差: e m a x _ i = m a x ∣ G i ( x j ) − y j ∣ , j = 1 , 2 , . . . m e_{max\_i}= max |G_i(x_j)-y_j| , j=1,2,...m emax_i=max∣Gi(xj)−yj∣,j=1,2,...m
得到样本j在第i个分类器上的相对误差: e i , j = ∣ G i ( x j ) − y j ∣ e m a x _ i e_{i,j}=\frac{|G_i(x_j)-y_j|}{e_{max\_i}} ei,j=emax_i∣Gi(xj)−yj∣
这里之所以计算相对误差而不是绝对误差,是因为后面计算样本的权重系数是样本内相互比较的,是一个相对的概念。
得到第i个分类器的学习误差率: e i = ∑ j = 1 m w i j e i , j e_i=\sum_{j=1}^m w_{ij}e_{i,j} ei=j=1∑mwijei,j
最后可以根据对样本的学习误差率来计算得到该弱分类器的权重系数: α i = e i 1 − e i \alpha_i=\frac{e_i}{1-e_i} αi=1−eiei
3.2 样本的权重系数
假设前一个弱分类器(第i-1个弱分类器)的样本权重为 W i − 1 = { w i − 1 , 1 , w i − 1 , 2 . . . w i − 1 , m } W_{i-1}=\{ w_{i-1,1},w_{i-1,2}...w_{i-1,m}\} Wi−1={wi−1,1,wi−1,2...wi−1,m}
那么可以计算得到第i个弱分类器的第j个样本权重为: w i , j = w i − 1 , j ∗ α i − 1 1 − e i − 1 , j Z i − 1 w_{i,j}=\frac{w_{i-1,j}*\alpha_{i-1}^{1-e_{i-1,j}}}{Z_{i-1}} wi,j=Zi−1wi−1,j∗αi−11−ei−1,j
Z i − 1 Z_{i-1} Zi−1为规范化因子: Z i − 1 = ∑ j = 1 m w i − 1 , j ∗ α i − 1 1 − e i − 1 , j Z_{i-1}=\sum _{j=1}^m w_{i-1,j}*\alpha_{i-1}^{1-e_{i-1,j}} Zi−1=j=1∑mwi−1,j∗αi−11−ei−1,j
这里底数为 α i − 1 \alpha_{i-1} αi−1的作用是,当第i-1个弱分类器误差率小(即权重系数高)时,被错误分类的样本与正确分类的样本之间的权重系数差距越大。
3.3 加权表决
这里与分类问题不同,这里对样本x的预估结果是将加权的弱分类器的权重中位数对应的弱分类器 j 作为强分类器来预测的结果。
f
(
x
)
=
G
j
(
x
)
f(x)=G_j(x)
f(x)=Gj(x)
4.基本流程
1.初始化样本权重
2.训练模型-预测
3.计算模型预测误差
4.根据预测误差来计算弱分类器的权重系数
5.更新样本权重
6.重复2~5直至达到结束条件
7.将弱分类器权重系数进行组合,组合成强分类器。
作为boosting的一员,Adaboost也是基于贪心算法的,基于前n-1个弱学习器,来找到第n个弱学习器来组合成最优。局部最优作为全局最优。
5.正则化
因为Adaboost是一种加法模型,Adaboost正则化项也称为步长。对于前面的弱学习器的迭代:
f
k
(
x
)
=
f
k
−
1
(
x
)
+
α
k
G
k
(
x
)
f_k(x)=f_{k-1}(x)+\alpha_k G_k(x)
fk(x)=fk−1(x)+αkGk(x)
加上正则化项 v v v以后: f k ( x ) = f k − 1 ( x ) + v ∗ α k G k ( x ) f_k(x)=f_{k-1}(x)+v*\alpha_k G_k(x) fk(x)=fk−1(x)+v∗αkGk(x)
v ∈ \in ∈(0,1),这里会导致需要更多的弱学习器来学习。
6.优缺点
优点
1.不容易发生过拟合(因为是从弱分类器中组成强分类器)
2.弱学习器种类没有限制
3.精度一般会比较高
4.不同于Bagging和RF算法,Adaboost充分考虑到每个弱学习器的权重
5.容易快速收敛(每轮训练结束后,都会使得错误分类的样本权重变高,而新一轮的训练为了减少带权误差,会着重抽样这一部分权重高的样本,所以分类错的样本更容易分类对。结果就是,即便每个弱分类器都有分类错的样本,但仍然能收敛。)
缺点
对异常样本比较敏感,异常样本可能在每次迭代都有较高的权重。
参考:
- 《统计学习方法》
- https://www.cnblogs.com/pinard/p/6133937.html