Boosting----加法模型、前向分步、GradientBoosting 、AdaBoo 。。。加法模型
加法模型 (additive model) 形式如下:个人检视材料
其中,是第个基函数,是第个基函数的模型参数,是第个基函数的权重。由此可见,加法模型实际上由⼀系列基函数的加权相加得到。
在给定训练数据及损失函数的情况下,学习加法模型即损失函数极⼩化问题:
因此可以看出加法模型的学习过程实际上是⼀个⾮常复杂的优化问题。
前向分步算法
前向分步算法 (forward stagewi algorithm) 是求解上述优化问题的⼀种算法,其思想是:从前往后,每⼀步只学习⼀个基函数及其系数,逐步逼近优化损失函数,从⽽简化优化的复杂度。其算法过程如下:
输⼊:训练数据集; 损失函数;基函数集 (参数未优化)
输出:加法模型1. 初始化2. 对(1) 极⼩化损失函数,得到参数(2) 更新
3. 得到最终的加法模型
前向分步算法将同时求解个基函数的参数及系数的优化问题,简化成了逐步求解每个基函数的参数及系数的优化问题。前向分步算法的第个基函数参数及系数的确定,仅考虑当前状态下使损失函数极⼩化即局部最优解,是⼀种贪婪算法,不⼀定能够得到全局最优解。
集成模型的提升 (Boosting) ⽅法即采⽤了加法模型与前向分布算法。 以决策树为基函数的提升⽅法成为提升树。
f (x )=βb (x ;γ)m =1∑M
m m b (x ;γ)m m γm m βm m {(x ,y ),(x ,y ),...,(x ,y )}0011N N L (y ,f (x ))f (x )L (y ,βb (x ;γ))β,γm m min i =1∑N i m =1∑M
m i m {(x ,y ),(x ,y ),...,(x ,y )}0011N N L (y ,f (x )){b (x ;γ)}f (x )
f (x )=00
m =1,2,...,M
离别吉他谱β,γm m
(β,γ)=m m arg L (y ,f (x )+β,γmin i =1∑N
i m −1i βb (x ;γ))
i f (x )=m f (x )+m −1βb (x ;γ)
m m f (x )=f (x )=m βb (x ;γ)m =1∑M
m m M m β,γm m
AdaBoost
Adaboost是⼀种迭代算法,其核⼼思想是针对同⼀个训练集训练不同的分类器 (弱分类器),然后把这些弱分类器集合起来,构成⼀个更强的最终分类器 (强分类器)。AdaBoost是⼀种集成学习中的Boosting算法。AdaBoost的主要思想:先训练出⼀个基学习器根据该学习器的表现对训练样本分布进⾏调整,使得现有基学习器做错的样本在后续学习器的训练中受到更多关注 (即增加权重)基于调整后的样本分布来训练下⼀个基学习器如此重复进⾏直⾄基学习器数⽬达到事先指定的值最终将这个基学习器进⾏加权结合
AdaBoost的函数形式如下:
由此可见,AdaBoost是⼀种加法模型。AdaBoost的损失函数采⽤指数损失:
在这⾥,。
当 时, 当 时, AdaBoost算法过程如下:
输⼊:训练数据集,其中 ;基分类器 (参数未优化)
输出:强分类器M
M H (x )=αh (x )m =1∑M
m m Loss =e i =1∑N −y H (x )
战争论的作者
i i y ∈i {−1,+1}y =i H (x )i −y H (x )=i i −1
y i =H (x )i −y H (x )=i i 1
{(x ,y ),(x ,y ),...,(x ,y )}0011N N y ∈i {−1,+1}{h (x )}H (x )
1. 初始化训练数据的权值分布
五行缺金名字
2. 对(1) 使⽤具有权值分布的训练集进⾏学习,得到弱分类器(2) 计算在当前数据集上的分类误差:(3) 计算在强分类器中所占的权重:
(4) 更新训练数据集的权值分布,是归⼀化因⼦,为了使样本的概率分布和为1:
3. 得到最终的强分类器
其中,,当其值为真时函数值为1,其值为假时函数值为0。
从前向分步算法到AdaBoost
AdaBoost算法实际上是前向分步算法的⼀种特例。
当加法模型的基函数是弱分类器,损失函数是指数函数时,使⽤前向分步算法学习到的加法模型等价于AdaBoost算法的最终分类器:
假设经过轮迭代后前向分布算法得到了:
那么,在第轮迭代时,根据前向分布算法,需要得到和,使在训练集上的损失最⼩。
D =1(w ,w ,…,w ),w =1,11,21,N 1,i ,i =N 1
1,2,…,N
m =1,2,...,M
上课睡觉怎么办D m h (x )
m h (x )m e =m w I (h (x )=i =1∑N m ,i m i y )
i h (x )m α=m log 21
e m
1−e m z m w =m +1,i ,i =z m w e m ,i −αy h (x )
m i m i 1,2,…,N
z =m w e i =1∑N m ,i −αy h (x )
m i m i H (x )=αh (x )m =1∑M
m m I (h (x )=m i y )∈i {0,1}f (x )=αh (x )m =1∑M
m m m −1f (x )m −1f (x )=m −1αh (x )
i =1∑m −1
i i m αm h (x )m f (x )m
其中,,不依赖于,因此与最⼩化⽆关,但是依赖于,随着每⼀轮的迭代变化。
对任意的,使上式最⼩的可由下式得到:
在不考虑规范因⼦的情况下,上式的即表⽰第轮在权重分布为的训练数据下使指数损失函数最⼩的弱分类器,即为AdaBoost 中第轮的基本分类器。
(α,h (x ))=m m arg L (y ,f (x )+α,h min i =1
∑N i m −1i αh (x ))
i =arg e α,h min i =1
∑N −y (f (x )+αh (x )
i m −1i i =arg e e α,h min i =1∑N −y f (x )i m −1i −y αh (x )
i i =arg w e α,h min i =1∑N
mi −y αh (x )刮画纸
i i w =mi e −y f (x )i m −1i w mi α,h w mi f (x )m α>0h (x )m h (x )=m arg w e h min i =1∑N
mi −y h (x ))
i i z h (x )m m w m m h (x )m
然后,在最优化式中,对上式求的导数并为0,得到:
其中,是权重分布为的训练数据在弱分类器下的分类误差率:
因此,这⾥的与AdaBoost算法得出的完全⼀致。
最后,第轮权重的更新如下:
这与AdaBoost算法中样本权重的更新只相差规范化因⼦,因此等价。
牙周炎的治疗Gradient Boost
当损失函数是指数函数时,对于前向分步算法中2.1的最优化过程是⽐较直观简单的。但是,对⼀般的损失函数⽽⾔,优化并不是⼀个容易的过程。Freidman提出了梯度提升 (Gradient Boost)算法,这是使⽤最速下降 (Steepest Descend)对更⼀般的损失函数进⾏优化。
⼀种常见的思想是不断迭代更新当前⾃变量空间的状态,逼近函数空间上的极⼩值,来对最优化过程求解。梯度下降就是这样的⼀种算法。某点的梯度是函数在该点上升最快的⽅向,因此梯度的反⽅向是函数下降再快的地⽅。梯度下降算法的表达式如下:
其中,是步长,也叫做学习率,控制每次更新的⼤⼩。arg min w e α,h ∑i =1N
mi −y αh (x ))i i w e =i =1
∑N mi −y αh (x ))i i w e +y =h (x )i m i ∑mi αw e y =h (x )i m i ∑
mi −α=e w I (h (x )=αi =1∑N mi m i y )+i e w (1−−αi =1∑N
mi I (h (x )=m i y ))
i =(e −αe )w I (h (x )=−αi =1∑N mi m i y )+i e w −αi =1∑N
mi ααm α=m log 21
e m
1−e m e m w m h (x )m e =m w ∑i =1N mi w I (h (x )=y )
∑i =1N
mi m i i αm αm m +1w =m +1,i e =−y f (x )i m i e e =−y f (x )i m −1i −y αh (x )i m i w e mi −y αh (x )
i m i x =k +1x −k α⋅∇f (x )沁园春雪翻译
k α