提升方法的核心思想是在给定基础模型的基础上,通过不断调整样本的权重分布训练一系列的模型,尽最大可能的减少训练误差,最后将多个模型按照一定的权重系数进行组合得到最终的模型。通过采用多模型结合的方式,可以提升模型的稳定性,使模型更准确。
PAC理论(概率近似正确理论)主要是论证了在概率学习框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。即对于一个问题,如果能够发现解决该问题的"弱学习算法",即该问题是弱可学习的,那么该问题也必定有"强学习算法"存在,即该问题也必定是强可学习的。
弱可学习:弱可学习是指,对于一个概念,如果存在一个多项式的学习算法能够学习他,学习的正确率仅比随机猜测略好,那么这个概念就是弱可学习的。
强可学习:强可学习是指,对于一个概念,如果存在一个多项式的学习算法能够学习他,并且正确率很高,那么这个概念就是强可学习的。
PAC理论实际上论证了提升方法的可靠性,即可以从一个弱分类器通过一定的算法将其变成一个强分类器,这也是集成类模型的通用指导思想。各类型集成模型的区别只是在于如何从基础的弱分类模型不断向强分类模型改进。
关于PAC理论的更多资料可以参看:
【ML学习笔记】8:PAC可能近似正确
30分钟了解PAC学习理论——计算学习理论第一讲
AdaBoost算法通过不断更新样本的权重分布,使得在上一个基础模型中误分类大的数据在下轮的模型训练中占据更大权重,由此得到一系列的基础模型,再依据基础模型的对应权重,将全部基础模型组合起来得到最终的决策模型的一种算法。
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . ( x N , y N ) } , 其 中 x i ∈ X ⊆ R n , y ∈ Y = { − 1 , 1 } ; 若 学 习 算 法 T=\{(x_1,y_1),(x_2,y_2)...(x_N,y_N)\},其中x_i\in \mathcal{X} \subseteq R^n,y\in \mathcal{Y}=\{-1,1\};若学习算法 T={(x1,y1),(x2,y2)...(xN,yN)},其中xi∈X⊆Rn,y∈Y={−1,1};若学习算法
输出:最终分类器 G ( x ) G(x) G(x)
(1) 初始化训练数据的权值分布 D 1 = ( ω 11 , . . . , ω 1 i , . . . , ω 1 N ) , ω 1 i = 1 N , i = 1 , 2 , 3 , . . . , N D_1=(\omega_{11},...,\omega_{1i},...,\omega_{1N}),\omega_{1i}=\frac{1}{N},i=1,2,3,...,N D1=(ω11,...,ω1i,...,ω1N),ω1i=N1,i=1,2,3,...,N即在初始化数据集时先假定是均匀分布,每个样本的权重相同。
(2) 对于 m = 1 , 2 , . . . M m=1,2,...M m=1,2,...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 = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N ω m i I ( G m ( x i ) ≠ y i ) e_m=\sum_{i=1}^{N}{P(G_m(x_i)\not ={y_i})=\sum_{i=1}^{N}{\omega_{mi}I(G_m(x_i)\not ={y_i})}} em=i=1∑NP(Gm(xi)=yi)=i=1∑NωmiI(Gm(xi)=yi)这个误分类率本质是对全部误分类样本权重的求和。
- ©计算当前基础模型 G m ( x ) G_m(x) Gm(x)的权重系数 α m = 1 2 log 1 − e m e m \alpha_m=\frac{1}{2}\log \frac{1-e_m}{e_m} αm=21logem1−em
- (d)更新训练数据集的权值分布 D m + 1 = ( ω ( m + 1 ) 1 , ( m + 1 ) 2 , . . . , ( m + 1 ) N ) D_{m+1}=(\omega_{(m+1)1,(m+1)2,...,(m+1)N}) Dm+1=(ω(m+1)1,(m+1)2,...,(m+1)N), ω m + 1 , i = ω m i Z m exp ( − α m y i G m ( x i ) ) , Z m = ∑ i = 1 N ω m i exp ( α m y i G m ( x i ) ) , 其 中 i = 1 , 2 , . . . , N \omega_{m+1,i}=\frac{\omega_{mi}}{Z_m}\exp(-\alpha_my_iG_m(x_i)),Z_m=\sum_{i=1}^{N}\omega_{mi}\exp(\alpha_my_iG_m(x_i)) ,其中i=1,2,...,N ωm+1,i=Zmωmiexp(−αmyiGm(xi)),Zm=i=1∑Nωmiexp(αmyiGm(xi)),其中i=1,2,...,N在公式中 Z m Z_m Zm称为规范化因子(全部样本),通过规范化,可以将数值缩放到 0 − 1 0-1 0−1之间,使得 D m D_m Dm能称为概率分布
(3) 组合基本模型,得到最终决策模型 G ( x ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) G(x)=sign(\sum_{m=1}^{M}\alpha_m G_m(x)) G(x)=sign(m=1∑MαmGm(x))
AdaBoost算法描述的是一大类的提升算法,应用到具体的实际中,依据选用的基础模型不同,有不同的具体算法。
提升树是以分类树或者回归树为基本分类器,以加法模型为基础模型,通过前向分步算法求解的提升方法的应用。针对分类问题采用二叉分类树,针对回归问题采用二叉回归树,通过不断的求解经验风险最小化(损失函数最小化)得到一系列的基础模型,最后将不同模型进行线性组合得到将最终决策模型。
梯度提升树是在提升树的基础上,将提升树中每一步需要拟合的残差用损失函数 L ( y , f ( x ) ) L(y,f(x)) L(y,f(x))在当前模型 f m ( x ) f_m(x) fm(x)下的梯度的负值来代替,即用 − [ ∂ L ( y , f ( x i ) ) ∂ f ( x i ) ] -[\frac{\partial L(y,f(x_i))}{\partial f(x_i)}] −[∂f(xi)∂L(y,f(xi))]来估计提升树中的残差。