8.1 个体与集成
集成学习通过构建并结合多个学习器来完成学习任务。
集成学习一般先产生一组个体学习器,再用某种策略把它们结合起来。如果集成中只包含同类型的个体学习器,则称为同质的,反之称为异质的。集成学习通过将多个学习器进行结合,常常可以获得比单一学习器更好的性能,这对于弱学习器尤为明显。
要获得好的集成,我们需要让每个分类器“好而不同”,即个体学习器之间要有一定的准确性,并且不同学习器之间要有多样性。
考虑一个简单的二分类问题 y ∈ { − 1 , + 1 } y\in\{-1,+1\} y∈{
−1,+1}和真实函数 f f f,假定基分类器的错误率为 ϵ \epsilon ϵ,即
P ( h i ( x ) = ̸ f ( x ) ) = ϵ P(h_i(x)=\not f(x))=\epsilon P(hi(x)≠f(x))=ϵ
假设我们集成了T个分类器,那么
H ( x ) = s i g n ( ∑ i = 1 T h i ( x ) ) H(x)=sign(\sum_{i=1}^Th_i(x)) H(x)=sign(i=1∑Thi(x))
我们假设基分类器相互独立,那么集成错误的概率为
P ( H ( x ) ≠ f ( x ) ) = ∑ k = 0 ⌊ T / 2 ⌋ ( K T ) ( 1 − ϵ ) k ϵ T − k ≤ e x p ( − 1 2 T ( 1 − 2 ϵ ) 2 ) P(H(x)\neq f(x))=\sum_{k=0}^{\lfloor{T/2}\rfloor}(\mathop{}_{K}^{T})(1-\epsilon)^k\epsilon^{T-k} \leq exp(-\frac{1}{2}T(1-2\epsilon)^2) P(H(x)̸=f(x))=k=0∑⌊T/2⌋(KT)(1−ϵ)kϵT−k≤exp(−21T(1−2ϵ)2)
随着分类器数量的增加,其上界呈指数下降。但实际操作中,个体分类器的准确性与多样性本身就存在冲突,往往并不能同时满足。
8.2 Boosting
Boosting是一族可以将弱学习器提升为强学习器的算法:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本的分布进行调整,使得先前基学习器做错的训练样本再后续受到更多的关注,然后基于调整后的样本分布来训练下一个学习器。
Adaboost使用基学习器的线性组合
H ( x ) = ∑ t = 1 T α t h t ( x ) H(x)=\sum_{t=1}^{T}\alpha_th_t(x) H(x)=t=1∑Tαtht(x)
来最小化指数损失函数
l e x p ( H ∣ D ) = E x ∼ D [ e − f ( x ) H ( x ) ] l_{exp}(H|D)=\mathbb{E}_{x\sim D}[e^{-f(x)H(x)}] lexp(H∣D)=Ex∼D[e−f(x)H(x)]
上图给出了AdaBoost的算法流程
我们对损失函数中的 H ( x ) H(x) H(x)求一个偏导数
∂ l e x p ( H ∣ D ) ∂ H ( x ) = − e − H ( x ) P ( f ( x ) = 1 ∣ x ) + e H ( x ) P ( f ( x ) = − 1 ∣ x ) \frac {\partial l_{exp}(H|D)}{\partial H(x)}= -e^{-H(x)}P(f(x)=1|x)+e^{H(x)}P(f(x)=-1|x) ∂H(x)∂lexp(H∣D)=−e−H(x)P(