+个体与集成
+Boosting
+Bagging与Random Forest
+结合策略
+多样性
个体与集成
同质:只包含同种类型的个体学习器,相应的算法为“基学习器”。有时候基学习器被称为弱学习器。
异质:包含多种个体学习器,个体学习器为“组件学习器”。
集成条件:个体学习器好而不同,即个体学习器要有一定的“准确性”,而且要有“多样性”。
研究核心:个体学习器的“准确性‘’和“多样性“存在冲突,准确性很高以后就要牺牲多样性,。产生并结合“好而不同”的个体学习器。
集成学习方法两大类:个体学习器之间存在强依赖关系,串行生成序列化方法:boosting;不存在强依赖关系,并行化方法:Bagging、Random Forest.
Boosting
工作机制:从初始训练集训练出基学习器,然后根据基学习器的表现对训练样本分布进行调整,使得先前的学习器做错的训练样本后续受到更多的关注,基于调整后的样本分布来训练下一个基学习器;重复进行直至基学习器数目达到事先指定的T值,然后将这T个基学习器进行加权结合。
AdaBoost描述:
输入:训练集D=
{(x1,y1),(x2,y2),...,(xm,ym)}
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
基学习算法:
Λ
Λ
训练轮数:T.
过程:
1: D1(x)=1/m D 1 ( x ) = 1 / m
2 : fort=1,2,...,Tdo f o r t = 1 , 2 , . . . , T d o
3 : ht=Λ(D,Dt); h t = Λ ( D , D t ) ;
4 : σt=Px Dt(ht(x)≠f(x)); σ t = P x D t ( h t ( x ) ≠ f ( x ) ) ;
5 : if σt>0.5 σ t > 0.5 then break
6 : αt=12ln(1−σtσt); α t = 1 2 l n ( 1 − σ t σ t ) ;
7 : Dt+1(x)=Dt(x)Zt∗{exp(−αt),exp(αt),if ht(x)=f(x) if ht(x)≠f(x) D t + 1 ( x ) = D t ( x ) Z t ∗ { e x p ( − α t ) , if h t ( x ) = f ( x ) e x p ( α t ) , if h t ( x ) ≠ f ( x )
=
Dt(x)exp(−αtf(x)ht(x))Zt
D
t
(
x
)
e
x
p
(
−
α
t
f
(
x
)
h
t
(
x
)
)
Z
t
8 : end for
输出:
H(x)=sign(∑Tt=1αtht(x))
H
(
x
)
=
s
i
g
n
(
∑
t
=
1
T
α
t
h
t
(
x
)
)
AdaBoost推导过程:
原理:基于加性模型,即基学习器的线性组合 H(x)=∑Tt=1αtht(x) H ( x ) = ∑ t = 1 T α t h t ( x ) 来最小化指数损失函数, lexp(H|D)=Ex D[e−f(x)H(x)] l e x p ( H | D ) = E x D [ e − f ( x ) H ( x ) ]
对
H(x)
H
(
x
)
求偏导并令其为0:
得到如下:
有: sign(H(x))=sign(12lnP(f(x)=1|x)P(f(x)=−1|x))={1,−1,P(f(x)=1|x)>P(f(x)=−1|x)P(f(x)=1|x)<P(f(x)=−1|x) s i g n ( H ( x ) ) = s i g n ( 1 2 l n P ( f ( x ) = 1 | x ) P ( f ( x ) = − 1 | x ) ) = { 1 , P ( f ( x ) = 1 | x ) > P ( f ( x ) = − 1 | x ) − 1 , P ( f ( x ) = 1 | x ) < P ( f ( x ) = − 1 | x )
= arg maxy∈{−1,1}P(f(x)=y|x), a r g m a x y ∈ { − 1 , 1 } P ( f ( x ) = y | x ) ,
则:指数损失最小,分类错误率也将最小,因此可将其作为优化目标。
在AdaBoost算法中,第一个基分类器
h1
h
1
是通过直接将基学习算法用于初始数据分布而得;此后迭代生成
ht
h
t
和
αt
α
t
,当基分类器
ht
h
t
基于分布
Dt
D
t
产生后,该分类器的权重
αt
α
t
应使得
αtht
α
t
h
t
最小化指数损失函数。
其中: σt=Px Dt(f(x)≠ht(x)) σ t = P x D t ( f ( x ) ≠ h t ( x ) ) 。考虑指数损失函数的导数:
得到:
AdaBoost算法在获得H_{t-1}之后样本分布将进行调整,使得下一轮基学习器h_t可以纠正H_{t-1}的一些错误。理想的h_t能纠正H_{t-1}的全部错误,即最小化
将 e−f(x)ht(x) e − f ( x ) h t ( x ) 泰勒展开,并且有 f2(x)=h2t(x)=1 f 2 ( x ) = h t 2 ( x ) = 1 式近似为:
于是,理想的基学习器并由上式
ht(x) h t ( x ) 等价于: ht(x)=argh max E[f(x)h(x)] h t ( x ) = a r g h m a x E [ f ( x ) h ( x ) ]
由于 f(x),h(x)∈{−1,+1} f ( x ) , h ( x ) ∈ { − 1 , + 1 } ,有:
总结:boosting算法要求基学习器能对特定的数据分布进行学习,通过“重赋权法”或“重采样法”实施(后者避免过早停止,持续到预设的T轮),关注降低偏差