Boosting算法是将“弱学习算法“提升为“强学习算法”的过程,提升方法主要思想是:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好,“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。
AdaBoost核心问题
- 在每一轮如何改变训练数据的权值或概率分布;
- AdaBoost:提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值。
- 如何将弱分类器组合成一个强分类器。
- AdaBoost:加权多数表决,具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
AdaBoost算法流程
输入:训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
n
,
y
n
)
}
T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}
T={(x1,y1),(x2,y2),...,(xn,yn)},其中实例
x
i
∈
X
⊆
R
n
x_i\in\mathcal{X}\subseteq\mathbb{R}^n
xi∈X⊆Rn,标记
y
i
∈
Y
=
{
−
1
,
1
}
y_i\in\mathcal{Y}=\{-1,1\}
yi∈Y={−1,1},
X
\mathcal{X}
X是实例空间,
Y
\mathcal{Y}
Y是标记集合;若学习算法。
输出:最终分类器
G
(
x
)
G(x)
G(x)。
1.初始化训练数据的权值分布
D
1
=
(
w
11
,
.
.
.
,
w
1
i
,
.
.
.
,
w
1
n
)
,
w
1
i
=
1
n
,
i
=
1
,
2
,
.
.
.
,
n
D_1=(w_{11},...,w_{1i},...,w_{1n}),\quad w_{1i}=\frac{1}{n},\quad i=1,2,...,n
D1=(w11,...,w1i,...,w1n),w1i=n1,i=1,2,...,n
假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同,这一假设保证第1步能够在原始数据上学习基分类器 G 1 ( x ) G_1(x) G1(x);
2.对 m = 1 , . . . , M m=1,...,M m=1,...,M
a. 使用具有权值分布
D
m
D_m
Dm的训练数据集学习,得到使分类误差率最小的基分类器
G
m
(
x
)
:
X
→
{
−
1
,
1
}
G_m(x): \mathcal{X}\rightarrow \{-1,1\}
Gm(x):X→{−1,1}
b. 计算
G
m
(
x
)
G_m(x)
Gm(x)在训练数据集上的分类误差率
e
m
=
P
(
G
m
(
x
i
)
≠
y
i
)
=
∑
G
m
(
x
i
)
≠
y
i
w
m
i
=
∑
i
=
1
N
w
m
i
I
{
G
m
(
x
i
)
≠
y
i
}
e_m=P(G_m(x_i)\neq y_i)=\sum_{G_m(x_i)\neq y_i}w_{mi}=\sum_{i=1}^Nw_{mi}I\{G_m(x_i)\neq y_i\}
em=P(Gm(xi)=yi)=Gm(xi)=yi∑wmi=i=1∑NwmiI{Gm(xi)=yi}
G m ( x ) G_m(x) Gm(x)在加权的训练数据集上的分类误差率是被 G m ( x ) G_m(x) Gm(x)误分类样本的权值之和,由此可以看出数据权值分布 D m D_m Dm与基本分类器 G m ( x ) G_m(x) Gm(x)的分类误差率的关系。
c. 计算
G
m
(
x
)
G_m(x)
Gm(x)分类器的权重系数
α
m
=
1
2
log
e
1
−
e
m
e
m
\alpha_m=\frac{1}{2}\log_e \frac{1-e_m}{e_m}
αm=21logeem1−em
当 e m ≤ 1 2 e_m\leq\frac{1}{2} em≤21时, α m ≥ 0 \alpha_m\geq 0 αm≥0,并且 α m \alpha_m αm随着 e m e_m em的减小而增大,所以,分类误差率越小的基本分类器在最终分类器中的作用越大。
d. 更新训练数据集的权值分布
D
m
+
1
=
(
w
m
+
1
,
1
,
.
.
.
,
w
m
+
1
,
i
,
.
.
.
,
w
m
+
1
,
n
)
D_{m+1}=(w_{m+1,1},...,w_{m+1,i},...,w_{m+1,n})
Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,n)
w m + 1 , i = w m i Z m e − α m y i G m ( x i ) , i = 1 , 2 , . . . , n w_{m+1,i}=\frac{w_{mi}}{Z_m}e^{-\alpha_my_iG_m(x_i)},\quad i=1,2,...,n wm+1,i=Zmwmie−αmyiGm(xi),i=1,2,...,n
这里,
Z
m
Z_m
Zm是规范化因子,
Z
m
=
∑
i
=
1
n
w
m
i
e
−
α
m
y
i
G
m
(
x
i
)
Z_m=\sum_{i=1}^nw_{mi}e^{-\alpha_my_iG_m(x_i)}
Zm=i=1∑nwmie−αmyiGm(xi)
它使 D m + 1 D_{m+1} Dm+1成为一个概率分布。
w m + 1 , i = { w m i Z m e − α m , G m ( x i ) = y i w m i Z m e α m , G m ( x i ) ≠ y i w_{m+1,i}=\begin{cases} \frac{w_{mi}}{Z_m}e^{-\alpha_m},\quad G_m(x_i)=y_i\\ \quad\\ \frac{w_{mi}}{Z_m}e^{\alpha_m},\quad G_m(x_i)\neq y_i \end{cases} wm+1,i=⎩⎪⎨⎪⎧Zmwmie−αm,Gm(xi)=yiZmwmieαm,Gm(xi)=yi
被基本分类器 G m ( x ) G_m(x) Gm(x)误分类样本的权值得以扩大,而被正确分类样本的权值得以缩小,比较而言,误分类样本权值被放大 e 2 α m = e m 1 − e m e^{2\alpha_m}=\frac{e_m}{1-e_m} e2αm=1−emem
3.构建基本分类器的线性组合
f
(
x
)
=
∑
m
=
1
M
α
m
G
m
(
x
)
f(x)=\sum_{m=1}^M\alpha_mG_m(x)
f(x)=m=1∑MαmGm(x)
得到最终分类器,
G
(
x
)
=
s
i
g
n
(
f
(
x
)
)
=
s
i
g
n
(
∑
m
=
1
M
α
m
G
m
(
x
)
)
G(x)=sign(f(x))=sign(\sum_{m=1}^M\alpha_mG_m(x))
G(x)=sign(f(x))=sign(m=1∑MαmGm(x))
线性组合 f ( x ) f(x) f(x)实现 M M M个基本分类器的加权表决。系数 α m \alpha_m αm表示了基分类器 G m ( x ) G_m(x) Gm(x)的重要性,这里,所有 α m \alpha_m αm之和并不为1。 f ( x ) f(x) f(x)的符号决定实例 x x x的分类, f ( x ) f(x) f(x)的绝对值表示分类的确信度。
理解AdaBoost
前向分步算法
加法模型是指由一系列弱分类器线性相加而成的强分类器。一般组合形式如下:
f
(
x
)
=
∑
m
=
1
M
β
m
b
(
x
;
γ
m
)
f(x)=\sum_{m=1}^M\beta_mb(x;\gamma_m)
f(x)=m=1∑Mβmb(x;γm)
其中,
b
(
x
;
γ
m
)
b(x;\gamma_m)
b(x;γm)为基函数,就是一个个的弱分类器,
γ
m
\gamma_m
γm是弱分类器学习到的最优参数,
α
m
\alpha_m
αm是弱分类器在强分类器中所占比重。
在给定训练数据及损失函数
L
(
y
,
f
(
x
)
)
L(y,f(x))
L(y,f(x))的条件下,学习加法模型
f
(
x
)
f(x)
f(x)称为经验风险最小化即损失函数极小化问题:
min
β
m
,
γ
m
∑
i
=
1
n
L
(
y
i
,
∑
m
=
1
M
β
m
b
(
x
;
γ
m
)
)
\min_{\beta_m,\gamma_m}\sum_{i=1}^nL\left(y_i,\sum_{m=1}^M\beta_mb(x;\gamma_m)\right)
βm,γmmini=1∑nL(yi,m=1∑Mβmb(x;γm))
通常这是一个复杂的优化问题。前向分步算法求解这一优化问题的思想是:从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数,简化优化的复杂度。具体地,每一步只需优化如下损失函数:
min
β
,
γ
∑
i
=
1
n
L
(
y
i
,
β
b
(
x
i
;
γ
)
)
\min_{\beta,\gamma}\sum_{i=1}^n L\left(y_i,\beta b(x_i;\gamma)\right)
β,γmini=1∑nL(yi,βb(xi;γ))
前向分步算法与AdaBoost
AdaBoost算法可以认为是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二分类学习方法。
AdaBoost的最终分类器:
f
(
x
)
=
∑
m
=
1
M
α
m
G
m
(
x
)
f(x)=\sum_{m=1}^M\alpha_mG_m(x)
f(x)=m=1∑MαmGm(x)
显然这是一个加法模型。下面证明AdaBoost算法等价于损失函数是指数损失函数的前向分布算法,
L
(
y
,
f
(
x
)
)
=
e
x
p
[
−
y
f
(
x
)
]
L(y,f(x))=exp[-yf(x)]
L(y,f(x))=exp[−yf(x)]
假设经过
m
−
1
m-1
m−1次携带向前分布算法得到
f
m
−
1
(
x
)
f_{m-1}(x)
fm−1(x),
f
m
−
1
(
x
)
=
f
m
−
2
(
x
)
+
α
m
−
1
G
m
−
1
(
x
)
=
α
1
G
1
(
x
)
+
.
.
.
+
α
m
−
1
G
m
−
1
(
x
)
f_{m-1}(x)=f_{m-2}(x)+\alpha_{m-1}G_{m-1}(x)=\alpha_1G_{1}(x)+...+\alpha_{m-1}G_{m-1}(x)
fm−1(x)=fm−2(x)+αm−1Gm−1(x)=α1G1(x)+...+αm−1Gm−1(x)
在前向分布算法第
m
m
m次迭代,我们的目标是寻找
α
m
\alpha_m
αm和
G
m
(
x
)
G_m(x)
Gm(x)使
f
m
(
x
)
f_m(x)
fm(x)在训练数据集上的指数损失最小,即
(
α
m
,
G
m
(
x
)
)
=
arg
min
α
,
G
∑
i
=
1
n
e
x
p
[
−
y
i
(
f
m
−
1
(
x
i
)
+
α
G
(
x
i
)
)
]
(\alpha_m,G_m(x))=\arg\min_{\alpha,G}\sum_{i=1}^nexp[-y_i(f_{m-1}(x_i)+\alpha G(x_i))]
(αm,Gm(x))=argα,Gmini=1∑nexp[−yi(fm−1(xi)+αG(xi))]
令
w
ˉ
m
i
=
e
x
p
[
−
y
i
f
m
−
1
(
x
i
)
]
\bar{w}_{mi}=exp[-y_if_{m-1}(x_i)]
wˉmi=exp[−yifm−1(xi)],这里,
w
ˉ
m
i
\bar{w}_{mi}
wˉmi不依赖与
α
\alpha
α和
G
G
G,因此与最小化无关,可写目标函数
(
α
m
,
G
m
(
x
)
)
=
arg
min
α
,
G
∑
i
=
1
n
w
ˉ
m
i
e
x
p
[
−
y
i
α
G
(
x
i
)
]
(
1
)
(\alpha_m,G_m(x))=\arg\min_{\alpha,G}\sum_{i=1}^n\bar{w}_{mi}exp[-y_i\alpha G(x_i)]\quad\quad\quad(1)
(αm,Gm(x))=argα,Gmini=1∑nwˉmiexp[−yiαG(xi)](1)
但 w ˉ m i \bar{w}_{mi} wˉmi依赖于 f m − 1 ( x i ) f_{m-1}(x_i) fm−1(xi),随着每一轮迭代发生改变。
∑ i = 1 n w ˉ m i e x p [ − y i α G ( x i ) ] = ∑ i = 1 n w ˉ m i [ e α I { G m ( x i ) ≠ y i } + e − α I { G m ( x i ) = y i } ] = ∑ i = 1 n w ˉ m i [ e α I { G m ( x i ) ≠ y i } + e − α ( 1 − I { G m ( x i ) ≠ y i } ) ] = e − α ∑ i = 1 n w ˉ m i + ( e α − e − α ) ∑ i = 1 n w ˉ m i I { G m ( x i ) ≠ y i } \begin{aligned} \sum_{i=1}^n\bar{w}_{mi}exp[-y_i\alpha G(x_i)]&=\sum_{i=1}^n\bar{w}_{mi}[e^\alpha I_{\{G_m(x_i)\neq y_i\}}+e^{-\alpha} I_{\{G_m(x_i)= y_i\}}]\\ &=\sum_{i=1}^n\bar{w}_{mi}[e^\alpha I_{\{G_m(x_i)\neq y_i\}}+e^{-\alpha} (1-I_{\{G_m(x_i)\neq y_i\}})]\\ &=e^{-\alpha}\sum_{i=1}^n\bar{w}_{mi}+(e^\alpha-e^{-\alpha})\sum_{i=1}^n\bar{w}_{mi}I_{\{G_m(x_i)\neq y_i\}} \end{aligned} i=1∑nwˉmiexp[−yiαG(xi)]=i=1∑nwˉmi[eαI{Gm(xi)=yi}+e−αI{Gm(xi)=yi}]=i=1∑nwˉmi[eαI{Gm(xi)=yi}+e−α(1−I{Gm(xi)=yi})]=e−αi=1∑nwˉmi+(eα−e−α)i=1∑nwˉmiI{Gm(xi)=yi}
因此,对任意
α
>
0
\alpha>0
α>0,使(1)式最小的
G
(
x
)
G(x)
G(x)由下式得到,
G
m
∗
(
x
)
=
arg
min
G
∑
i
=
1
n
w
ˉ
m
i
I
{
G
m
(
x
i
)
≠
y
i
}
G_m^*(x)=\arg\min_{G}\sum_{i=1}^n\bar{w}_{mi}I_{\{G_m(x_i)\neq y_i\}}
Gm∗(x)=argGmini=1∑nwˉmiI{Gm(xi)=yi}
此分类器
G
m
∗
(
x
)
G_m^*(x)
Gm∗(x)即为AdaBoost算法的基分类器
G
m
(
x
)
G_m(x)
Gm(x),它是使第
m
m
m轮加权训练数据分类误差率最小的基分类器。
之后求
α
\alpha
α,带入
G
m
∗
(
x
)
G_m^*(x)
Gm∗(x)
∑
i
=
1
n
w
ˉ
m
i
e
x
p
[
−
y
i
α
G
(
x
i
)
]
=
∑
y
i
=
G
m
(
x
i
)
w
ˉ
m
i
e
−
α
+
∑
y
i
≠
G
m
(
x
i
)
w
ˉ
m
i
e
α
=
(
∑
i
=
1
n
w
ˉ
m
i
e
−
α
−
∑
y
i
≠
G
m
(
x
i
)
w
ˉ
m
i
e
−
α
)
+
∑
y
i
≠
G
m
(
x
i
)
w
ˉ
m
i
e
α
=
(
e
α
−
e
−
α
)
∑
i
=
1
n
w
ˉ
m
i
I
{
G
m
(
x
i
)
≠
y
i
}
+
e
−
α
∑
i
=
1
n
w
ˉ
m
i
\begin{aligned} \sum_{i=1}^n\bar{w}_{mi}exp[-y_i\alpha G(x_i)]&=\sum_{y_i=G_m(x_i)}\bar{w}_{mi}e^{-\alpha}+\sum_{y_i\neq G_m(x_i)}\bar{w}_{mi}e^{\alpha}\\ &=(\sum_{i=1}^n\bar{w}_{mi}e^{-\alpha}-\sum_{y_i\neq G_m(x_i)}\bar{w}_{mi}e^{-\alpha})+\sum_{y_i\neq G_m(x_i)}\bar{w}_{mi}e^{\alpha}\\ &=(e^{\alpha}-e^{-\alpha})\sum_{i=1}^n\bar{w}_{mi}I_{\{G_m(x_i)\neq y_i\}}+e^{-\alpha}\sum_{i=1}^n\bar{w}_{mi} \end{aligned}
i=1∑nwˉmiexp[−yiαG(xi)]=yi=Gm(xi)∑wˉmie−α+yi=Gm(xi)∑wˉmieα=(i=1∑nwˉmie−α−yi=Gm(xi)∑wˉmie−α)+yi=Gm(xi)∑wˉmieα=(eα−e−α)i=1∑nwˉmiI{Gm(xi)=yi}+e−αi=1∑nwˉmi
对
α
\alpha
α求导并使导数为0,
(
e
α
+
e
−
α
)
∑
i
=
1
n
w
ˉ
m
i
I
{
G
m
(
x
i
)
≠
y
i
}
=
e
−
α
∑
i
=
1
n
w
ˉ
m
i
(e^{\alpha}+e^{-\alpha})\sum_{i=1}^n\bar{w}_{mi}I_{\{G_m(x_i)\neq y_i\}}=e^{-\alpha}\sum_{i=1}^n\bar{w}_{mi}
(eα+e−α)i=1∑nwˉmiI{Gm(xi)=yi}=e−αi=1∑nwˉmi
记
e
m
=
∑
i
=
1
n
w
ˉ
m
i
∑
i
=
1
n
w
ˉ
m
i
I
{
G
m
(
x
i
)
≠
y
i
}
=
∑
i
=
1
n
w
m
i
I
{
G
m
(
x
i
)
≠
y
i
}
e_m=\sum_{i=1}^n\frac{\bar{w}_{mi}}{\sum_{i=1}^n\bar{w}_{mi}}I_{\{G_m(x_i)\neq y_i\}}=\sum_{i=1}^nw_{mi}I_{\{G_m(x_i)\neq y_i\}}
em=i=1∑n∑i=1nwˉmiwˉmiI{Gm(xi)=yi}=i=1∑nwmiI{Gm(xi)=yi}
w ˉ m i = e x p [ − y i f m − 1 ( x i ) ] = e x p [ − y i ( f m − 2 ( x ) + α m − 1 G m − 1 ( x ) ) ] = w ˉ m − 1 , i e x p [ − y i α m − 1 G m − 1 ( x ) ) ] \begin{aligned} \bar{w}_{mi}&=exp[-y_if_{m-1}(x_i)]=exp[-y_i(f_{m-2}(x)+\alpha_{m-1}G_{m-1}(x))]\\ &=\bar{w}_{m-1,i}exp[-y_i\alpha_{m-1}G_{m-1}(x))] \end{aligned} wˉmi=exp[−yifm−1(xi)]=exp[−yi(fm−2(x)+αm−1Gm−1(x))]=wˉm−1,iexp[−yiαm−1Gm−1(x))]
w m , i = w m − 1 , i e x p [ − α m − 1 y i G m − 1 ( x i ) ] ∑ i = 1 n w m − 1 , i e x p [ − α m − 1 y i G m − 1 ( x i ) ] , i = 1 , 2 , . . . , n w_{m,i}=\frac{w_{m-1,i}exp[-\alpha_{m-1}y_iG_{m-1}(x_i)]}{\sum_{i=1}^nw_{m-1,i}exp[-\alpha_{m-1}y_iG_{m-1}(x_i)]},\quad i=1,2,...,n wm,i=∑i=1nwm−1,iexp[−αm−1yiGm−1(xi)]wm−1,iexp[−αm−1yiGm−1(xi)],i=1,2,...,n
两边同除
∑
i
=
1
n
w
ˉ
m
i
\sum_{i=1}^n\bar{w}_{mi}
∑i=1nwˉmi,
(
e
α
+
e
−
α
)
e
m
=
e
−
α
(e^{\alpha}+e^{-\alpha})e_m=e^{-\alpha}
(eα+e−α)em=e−α
则,
α
m
∗
=
1
2
log
1
−
e
m
e
m
\alpha_m^*=\frac{1}{2}\log \frac{1-e_m}{e_m}
αm∗=21logem1−em
统计学习方法—李航