手把手教你强大的集成进修算法AdaBoost_样本_权重
实在Bagging也有权重的,比如我们有一个样本a,b,c,d,随机选aacd,则这就相称于a的权重2,b的0,c1,d1,则若是打算丢失函数的话,a为2倍的a的丢失函数,b为0倍,c为1倍,d为1倍.以是Adaboost中某样本的权重为0.1222,则可以理解为我们随机抽样它0.1222次。
Adaboost的数学含义初始化
我们第一步是初始化演习数据的权值分布为样本个数1/N
利用具有权值分布Dm的演习数据集学习, 得到基本分类器
这是我们通过初始数据得到分类器,这个分类器的结果为-1或者+1,同时我们数据样本的y也是+1和-1
我们此时有了分类器之后,但是这个分类器不是完美的,它很有可能将一些样本给缺点分类了,我们算出此时分类器对样本的分类偏差率,Gm(x)在演习数据集上的偏差率em便是被Gm(x)误分类样本的权值之和。
什么样的偏差率是最大的呢?
当em=1/2时偏差率最大,此时的am=0,也就表示这个分类器的权重为0,也便是说这个分类器的偏差实在是太大了,我们已经没有必要要用它来分类了,它是一点忙都帮不上。
我们通过这个决策偏差率来打算Gm(x)的系数,也便是分类器Gm(x)的权重am,由上述式子可知,em <= 1/2时,am >= 0,且am随着em的减小而增大,意味着分类偏差率越小的基本分类器在终极分类器中的浸染越大。
当前分类器的权重算出来了之后,那么此时的样本就没故意义了
我们下面便是要更新此时的演习数据集的样本的权重,使得被基本分类器Gm(x)误分类样本的权值增大,而被精确分类样本的权值减小。就这样,通过这样的办法,AdaBoost方法能“重点关注”或“聚焦于”那些较难分的样本上。
我们这个公式的含义便是:用当前的最好的分类器Gm(它是当前所有若分类器的线性组合)对原来的样本进行预测,算出分类偏差为em=1/2时的权重Wm+1,i
这个公式我们可以这样来理解,由于Gm是预测结果,以是它的值也是1和-1两种情形,以是我们有两种情形,第一种预测的G和y相等,第二种预测的G和y不相等,以是公式可以分解为:
由于e是一条单调上升的,当指数部分大于0的时候就大,当指数部分小于0 的时候就小,以是当预测G和实际y不一样的时候,指数为正,以是末了的Wm+1,i会变大,这就对应了分类缺点样本权重变大,而当预测G和实际y一样的时候,此时指数变负,以是末了的Wm+1,i会变小,这就对应了没有分类缺点样本权重变小。
把稳这里的Zm是规范化因子,它的目的是使得使Dm+1成为一个概率分布,也便是Dm+1中的值都是0.11,这样的值
我们现在已经有了新的演习集样本,那么我们此时的该当打算出此时新样本的分类器,我们第一步是布局分类器的线性组合,也便是这个分类器要将前面的弱分类器也组合到这个新的分类器中。
终极的分类器为
那么这便是我们得到的第二个分类器,以此类推看当前分类器时的缺点样本。。。。
详细案例:给定下列演习样本,试用AdaBoost算法学习一个强分类器
这个演习集有两个类y=-1,y=1,我们要根据这个演习集来学习出一个强分类器,分别出情形下是-1,什么情形下是1,我们第一步要初始化权值分布D1
由于刚开始以是每个样本的权值分布都是样本个数分之1
我们创造在D1演习数据上,阈值v取2.5 时偏差率最低(无论阈值v取2.5,还是8.5,总得分错3个样本,故可任取个中任意一个如2.5),故基本分类器为:
这个分类器非常大略,它的意思便是说当x<2.5的时候我们认为它的种别是1,当x>2.5的时候我们认为它的种别是-1,根据这个分类器G1进行分类的话,我们会创造样本中的序号7,8,9是分类缺点的。
以是G1分类器在演习集上的偏差率为1/103(被G1(x)误分类样本“6 7 8”的权值之和)=0.3
那么我们根据这个偏差率可以得出G1这个分类器的系数,也便是G1这个分类器的权重
得到分类器的权重之后我们就先不更新样本权重呢,就直接构建线性分类器组合,从而得到此时对应样本权值分布D1终极的分类器
这三个误分类点为(6 7 8)有了这个权重之后,我们下面的任务是更新我们的演习样本的权重了。通过下面这个公式
这样我们就会得到新的演习集数据的权重分布D2
那么此时我们的新一轮的演习数据是这样的
每一个样本都有不一样的权重了,我们在这个根本上再建立一个分类器,在权值分布为D2的演习数据上,阈值v取8.5 时偏差率最低,故基本分类器为:
由于x<8.5才是1,以是在3,4,5位置是有偏差的,以是此时的G2分类器的偏差率为:
打算分类器G2的系数,也便是G2的权重:
于是我们现在就可以就直接构建线性分类器组合,从而得到此时对应样本权值分布D2终极的分类器
三个误分类点便是(3,4,5)我们下面便是要来更新演习样本的权重:
至此又一轮任务完成,下面进行下一轮,此时的样本数据是这样的
我们基于此样本我们演习出一个分类器为:
那么这个分类器我们会创造当x>5.5时9被分错,当x<5.5时0,1,2被分错,以是此时的分类偏差为:
我们根据这个来打算出此时G3的权重为:
此时的分类器就为:
由于0到9只有都被分错过,以是此时只有0个误分类点了,以是这个便是我们要的终极的分类器G(x) = sign[f3(x)] = sign[ 0.4236G1(x) + 0.6496G2(x)+0.7514G3(x) ]。
详细说来,全体Adaboost 迭代算法就3步:初始化演习数据的权值分布。如果有N个样本,则每一个演习样本最开始时都被授予相同的权值:1/N。演习弱分类器。详细演习过程中,如果某个样本点已经被准确地分类,那么在布局下一个演习集中,它的权值就被降落;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于演习下一个分类器,全体演习过程如此迭代地进行下去。将各个演习得到的弱分类器组合成强分类器。各个弱分类器的演习过程结束后,加大分类偏差率小的弱分类器的权重,使其在终极的分类函数中起着较大的决定浸染,而降落分类偏差率大的弱分类器的权重,使其在终极的分类函数中起着较小的决定浸染。换言之,偏差率低的弱分类器在终极分类器中占的权重较大,否则较小。每一轮我们都在完成两个任务,第一个任务是根据偏差率打算初始分类器中所占的权重然后组合成一个新的分类器,其余一个任务是更演习样本的权重以此来达到初始化下一个初始化分类器的目的。
专栏推举本文系作者个人观点,不代表本站立场,转载请注明出处!