集成学习
1.导言
一个形象的比喻:“三个臭皮匠赛过诸葛亮!”
假设输入
x
\boldsymbol{{x}}
x和输出
y
\boldsymbol{{y}}
y之间的真实关系为:
y
=
h
(
x
)
\boldsymbol{{y}}=h(\boldsymbol{{x}})
y=h(x).对于
M
\boldsymbol{{M}}
M个不同的模型
f
1
(
x
)
,
⋯
,
f
M
(
x
)
f_1(\boldsymbol{{x}}),\cdots,f_{\boldsymbol{{M}}}(\boldsymbol{{x}})
f1(x),⋯,fM(x),每个模型的期望错误定义如下:
R
(
f
m
)
=
E
x
[
(
f
m
(
x
)
−
h
(
x
)
)
2
]
=
E
x
[
ϵ
m
(
x
)
2
]
(式1)
\begin{aligned} \mathcal{R}(f_m)&=\operatorname{E}_{\boldsymbol{{x}}}\left[(f_m(\boldsymbol{{x}})-h(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[\epsilon_m(\boldsymbol{{x}})^2\right]\tag{式1} \end{aligned}
R(fm)=Ex[(fm(x)−h(x))2]=Ex[ϵm(x)2](式1)
其中,
ϵ
m
(
x
)
=
(
f
m
(
x
)
−
h
(
x
)
)
\epsilon_m(\boldsymbol{{x}})=(f_m(\boldsymbol{{x}})-h(\boldsymbol{{x}}))
ϵm(x)=(fm(x)−h(x))为模型
m
\boldsymbol{m}
m在样本
x
\boldsymbol{x}
x上的错误。
这样一来,所有模型的平均错误为:
R
ˉ
(
f
)
=
1
M
∑
m
=
1
M
E
x
[
ϵ
m
(
x
)
2
]
(式2)
\bar{\mathcal{R}}(f)=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}\operatorname{E}_{\boldsymbol{{x}}}\left[\epsilon_m(\boldsymbol{{x}})^2\right]\tag{式2}
Rˉ(f)=M1m=1∑MEx[ϵm(x)2](式2)
集成学习(Ensemble Learning)是采取某种策略(比如:直接平均,加权平均)将多个模型集成起来,通过群体决策来提高准确率。集成学习首要的问题是如何集成多个模型。
最直接的策略是:直接平均,即通过“投票”。基于投票的集成模型
F
(
x
)
F(\boldsymbol{{x}})
F(x)定义为:
F
(
x
)
=
1
M
∑
m
=
1
M
f
m
(
x
)
(式3)
F(\boldsymbol{{x}})=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}})\tag{式3}
F(x)=M1m=1∑Mfm(x)(式3)
在这里,通过简单投票机制的集成模型
F
(
x
)
=
1
M
∑
m
=
1
M
f
m
(
x
)
F(\boldsymbol{{x}})=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}})
F(x)=M1∑m=1Mfm(x),
F
(
x
)
F(\boldsymbol{{x}})
F(x)的期望在:
1
M
R
ˉ
(
f
)
\cfrac{1}{\boldsymbol{M}}\bar{\mathcal{R}}(f)
M1Rˉ(f)和
R
ˉ
(
f
)
\bar{\mathcal{R}}(f)
Rˉ(f)之间。
【证明】:根据定义,集成模型的期望错误为:
R
(
F
)
=
E
x
[
(
1
M
∑
m
=
1
M
f
m
(
x
)
−
h
(
x
)
)
2
]
=
E
x
[
(
1
M
∑
m
=
1
M
ϵ
m
(
x
)
)
2
]
=
E
x
[
1
M
2
∑
m
=
1
M
∑
n
=
1
M
ϵ
m
(
x
)
ϵ
n
(
x
)
]
=
1
M
2
∑
m
=
1
M
∑
n
=
1
M
E
x
[
ϵ
m
(
x
)
ϵ
n
(
x
)
]
(式4)
\begin{aligned} \mathcal{R}(F)&=\operatorname{E}_{\boldsymbol{{x}}}\left[(\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}})-h(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[(\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}\epsilon_m(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[\cfrac{1}{\boldsymbol{M}^2}\sum_{m=1}^{{\boldsymbol{M}}}\sum_{n=1}^{{\boldsymbol{M}}}\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]\\ &=\cfrac{1}{\boldsymbol{M}^2}\sum_{m=1}^{{\boldsymbol{M}}}\sum_{n=1}^{{\boldsymbol{M}}}\operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]\tag{式4} \end{aligned}
R(F)=Ex[(M1m=1∑Mfm(x)−h(x))2]=Ex[(M1m=1∑Mϵm(x))2]=Ex[M21m=1∑Mn=1∑Mϵm(x)ϵn(x)]=M21m=1∑Mn=1∑MEx[ϵm(x)ϵn(x)](式4)
其中,
E
x
[
ϵ
m
(
x
)
ϵ
n
(
x
)
]
\operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]
Ex[ϵm(x)ϵn(x)]为两个不同模型错误的相关性。如果每一个模型的错误是不相关的,则有:
∀
m
≠
n
,
E
x
[
ϵ
m
(
x
)
ϵ
n
(
x
)
]
=
0
(式5)
\forall{m\neq{n}},\operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]=0\tag{式5}
∀m=n,Ex[ϵm(x)ϵn(x)]=0(式5)
如果,每个模型的错误都是相同的,则:
∀
m
≠
n
,
ϵ
m
(
x
)
=
ϵ
n
(
x
)
(式6)
\forall{m\neq{n}},\epsilon_m(\boldsymbol{{x}})=\epsilon_n(\boldsymbol{{x}})\tag{式6}
∀m=n,ϵm(x)=ϵn(x)(式6)
且由于:
∀
m
,
ϵ
m
(
x
)
≥
0
\forall{m},\epsilon_m(\boldsymbol{{x}})\ge0
∀m,ϵm(x)≥0,于是得到:
R
ˉ
(
f
)
≥
R
(
f
)
≥
1
M
R
ˉ
(
f
)
(式7)
\bar{\mathcal{R}}(f)\ge{{\mathcal{R}}(f)}\ge{\cfrac{1}{\boldsymbol{M}}\bar{\mathcal{R}}(f)}\tag{式7}
Rˉ(f)≥R(f)≥M1Rˉ(f)(式7)
也就是说:集成模型的期望错误大于等于所有模型的平均期望错误的
1
/
M
1/M
1/M,小于等于所有模型的平均期望错误。
⟹ \Longrightarrow ⟹为了得到更好的模型集成效果,则需要每个模型之间具备一定的差异性。且随着模型数量的增多,其错误率也会下降,最终趋近于0.
一个有效的集成学习模型要求各个基模型(弱分类器)之间的差异尽可能大,为了增加基模型之间的差异,可以采用Bagging和Boosting这两类方法。
2.Bagging类方法
Bagging类方法是通过随机构造训练样本,随机选取特征等方法来提高每个基模型之间的独立性,代表性方法有:Bagging和随机森林。
→
B
a
g
g
i
n
g
\rightarrow{Bagging}
→Bagging:(Bootstrap Aggregating)是通过不同模型的训练数据集的独立性来提高模型之间的独立性。在原始数据集上进行有放回的随机采样,得到
M
M
M个比较小的训练集,并训练
M
M
M个模型,然后通过投票的方法进行模型集成。
→
\rightarrow
→随机森林:(Random Forest)是在Bagging的基础上再引入了随机特征,进一步提高每个基模型之间的独立性。再随机森林中,每个基模型都是一棵决策树。
3.Boosting类方法
Boosting类方法,是按照一定顺序来先后训练不同的基模型,每个模型都针对前序模型的错误进行训练。根据前序模型的结果,来调整训练样本的权重,增加不同基模型之间的差异性。Boosting类方法的代表有:Adaboost方法。
→
A
d
a
B
o
o
s
t
\rightarrow AdaBoost
→AdaBoost:Boosting类的集成模型的目标是学习到一个加性模型,即:
F
(
x
)
=
∑
m
=
1
M
α
m
f
m
(
x
)
(式8)
F(\boldsymbol{x})=\sum_{m=1}^{\boldsymbol{M}}\alpha_{m}f_m(\boldsymbol{x})\tag{式8}
F(x)=m=1∑Mαmfm(x)(式8)
其中,
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x)为弱分类器,或者基分类器。
α
m
\alpha_{m}
αm为弱分类器的集成权重,
F
(
x
)
F(\boldsymbol{x})
F(x)就为强分类器。
Boosting类方法的关键:
怎样训练确定每一个弱分类器
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x)及其权重
α
m
\alpha_{\boldsymbol{m}}
αm。做法为:采用迭代的方式来学习每一个弱分类器,也就是按照一定的顺序依次训练每一个弱分类器。具体为:”假设已经训练了
m
m
m个弱分类器,再训练第
m
+
1
m+1
m+1个弱分类器的时候,增加已有弱分类器错分样本的权重,使得第
m
+
1
m+1
m+1个弱分类器更加关注已有弱分类器错分的样本“。这样增加每个弱分类器的差异,最终提升集成分类器的准确率。这种方法叫做:AdaBoost算法。
二分类AdaBoost算法过如下:
AdaBoost算法的统计学解释:
AdaBoost算法可以视为一种分步优化的加性模型。损失函数定义如下:
L
(
F
)
=
e
x
p
(
−
y
F
(
x
)
)
=
e
x
p
(
−
y
∑
m
=
1
M
α
m
f
m
(
x
)
)
(式9)
\begin{aligned} \mathfrak{L}(F) &= exp(- yF(\boldsymbol{x}))\\ &=exp(-y\sum_{m=1}^{\boldsymbol{M}}\alpha_mf_m(\boldsymbol{x}))\tag{式9} \end{aligned}
L(F)=exp(−yF(x))=exp(−ym=1∑Mαmfm(x))(式9)
其中,
y
,
f
m
(
x
)
∈
{
−
1
,
+
1
}
y,f_m{(\boldsymbol{x}})\in\{-1,+1\}
y,fm(x)∈{−1,+1}.
若前
m
−
1
m-1
m−1次迭代之后得到:
F
m
−
1
(
x
)
=
∑
t
=
1
m
−
1
α
t
f
t
(
x
)
(式10)
F_{m-1}(\boldsymbol{x})=\sum_{t=1}^{m-1}\alpha_tf_t(\boldsymbol{x})\tag{式10}
Fm−1(x)=t=1∑m−1αtft(x)(式10)
则第
m
m
m次迭代的目标是找到一个
α
m
\alpha_m
αm和
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x)使得损失函数最小,即:
L
(
α
m
,
f
m
(
x
)
)
=
∑
n
=
1
N
e
x
p
(
−
y
(
n
)
(
F
m
−
1
(
x
(
n
)
)
+
α
m
f
m
(
x
(
n
)
)
)
)
(式11)
\mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))=\sum_{n=1}^{N}exp(-y^{(n)}(F_{m-1}(\boldsymbol{x}^{(n)})+\alpha_mf_m(\boldsymbol{x}^{(n)})))\tag{式11}
L(αm,fm(x))=n=1∑Nexp(−y(n)(Fm−1(x(n))+αmfm(x(n))))(式11)
令
w
m
(
n
)
=
e
x
p
(
−
y
(
n
)
F
m
−
1
(
x
(
n
)
)
)
w_m^{(n)}=exp(-y^{(n)}F_{m-1}(\boldsymbol{x}^{(n)}))
wm(n)=exp(−y(n)Fm−1(x(n))),那么上式可以写为:
L
(
α
m
,
f
m
(
x
)
)
=
∑
n
=
1
N
w
m
(
n
)
e
x
p
(
−
α
m
y
(
n
)
f
m
(
x
)
(
n
)
)
)
(式12)
\mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))=\sum_{n=1}^{N}w_m^{(n)}exp(-\alpha_my^{(n)}f_m(\boldsymbol{x})^{(n)}))\tag{式12}
L(αm,fm(x))=n=1∑Nwm(n)exp(−αmy(n)fm(x)(n)))(式12)
因为:
y
,
f
m
(
x
)
∈
{
−
1
,
+
1
}
y,f_m(\boldsymbol{x})\in\{-1,+1\}
y,fm(x)∈{−1,+1},则有:
y
f
m
(
x
)
=
1
−
2
I
(
y
≠
f
m
(
x
)
)
(式13)
yf_m(\boldsymbol{x}) = 1-2I(y\neq{f_m(\boldsymbol{x})})\tag{式13}
yfm(x)=1−2I(y=fm(x))(式13)
其中,
I
(
x
)
I(\boldsymbol{x})
I(x)为指示函数。
将损失函数进行二阶泰勒展开,得到:
L
(
α
m
,
f
m
(
x
)
)
=
∑
n
=
1
N
w
m
(
n
)
(
1
−
α
m
y
(
n
)
f
m
(
x
(
n
)
)
+
1
2
α
m
2
)
∝
α
m
∑
n
=
1
N
w
m
(
n
)
I
(
y
≠
f
m
(
x
)
)
(式14)
\begin{aligned} \mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))&=\sum_{n=1}^{N}w_m^{(n)}\left(1-\alpha_my^{(n)}f_m(\boldsymbol{x}^{(n)})+\cfrac{1}{2}\alpha_m^2\right)\\ &\propto{\alpha_m\sum_{n=1}^{N}w_m^{(n)}I(y\neq{f_m(\boldsymbol{x})})} \end{aligned}\tag{式14}
L(αm,fm(x))=n=1∑Nwm(n)(1−αmy(n)fm(x(n))+21αm2)∝αmn=1∑Nwm(n)I(y=fm(x))(式14)
可以得到,当
α
m
>
0
\alpha_m>0
αm>0时,最优分类器
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x)为:样本权重是
w
m
(
n
)
,
1
≤
n
≤
N
w_m^{(n)},1\le{n}\le{N}
wm(n),1≤n≤N时的加权错误最小的分类器。
这样一来,求出了
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x),则式12可以写成:
L
(
α
m
,
f
m
(
x
)
)
=
∑
y
(
n
)
≠
f
m
(
(
x
)
(
n
)
)
w
m
(
n
)
e
x
p
(
α
m
)
+
∑
y
(
n
)
=
f
m
(
(
x
)
(
n
)
)
w
m
(
n
)
e
x
p
(
−
α
m
)
∝
ϵ
m
e
x
p
(
α
m
)
+
(
1
−
ϵ
m
)
e
x
p
(
−
α
m
)
(式15)
\begin{aligned} \mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))&=\sum_{y^{(n)}\neq{f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}exp(\alpha_m)+\sum_{y^{(n)}={f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}exp(-\alpha_m)\\ &\propto{\epsilon_mexp(\alpha_m)}+(1-\epsilon_m)exp(-\alpha_m) \end{aligned}\tag{式15}
L(αm,fm(x))=y(n)=fm((x)(n))∑wm(n)exp(αm)+y(n)=fm((x)(n))∑wm(n)exp(−αm)∝ϵmexp(αm)+(1−ϵm)exp(−αm)(式15)
其中,
ϵ
m
\epsilon_m
ϵm为分类器
f
m
(
x
)
f_m(\boldsymbol{x})
fm(x)的加权错误率。
ϵ
m
=
∑
y
(
n
)
≠
f
m
(
(
x
)
(
n
)
)
w
m
(
n
)
∑
n
w
m
(
n
)
(式16)
\epsilon_m=\cfrac{\sum_{y^{(n)}\neq{f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}}{\sum_nw_m^{(n)}}\tag{式16}
ϵm=∑nwm(n)∑y(n)=fm((x)(n))wm(n)(式16)
于是求取式15关于
α
m
\alpha_m
αm的导数并令为零:
α
=
1
2
log
1
−
ϵ
m
ϵ
m
(式17)
\alpha=\cfrac{1}{2}\log{\cfrac{1-\epsilon_m}{\epsilon_m}}\tag{式17}
α=21logϵm1−ϵm(式17)