集成学习1-Boosting

来源:互联网 发布:二次元拍照软件 编辑:程序博客网 时间:2024/05/16 12:22

转自http://blog.csdn.net/lvhao92/article/details/51079018

集成学习大致分为两类,一类串行生成,如Boosting。一类为并行化,如Bagging和“随机森林”

下面分别介绍:

1.Boosting

这个方法是先训练出一个基学习机,然后,对训练样本进行学习,对于识别错的样本进行额外的关注,从而对训练样本的分布进行调整,然后用新的样本分布训练下一个学习器。如此重复,最后将这若干个基学习机进行加权结合

Boosting的代表就是大名鼎鼎的AdaBoost。

讲一个故事,我们团队坐在1308里面开会。要解决很多问题,第一个人先来解决,这时候,有的问题被他很好的解决了,而有的问题并没有很好的被解决。此刻,我们会将他并不能解决的问题给予更多的关注,具体做法是加大这个问题的权重,从而能得到下一个人的更多的关注。而对这个人已经解决了的问题则减少它的权重。我们也会根据每个人解决问题的能力赋予每个人不一样的权重,能力越高权重越大。直到有一天,遇到一个问题我们大家都不知道答案,然后大家分别去发表自己的观点,最后的结果是综合大家的看法给出的。也就是每个人的观点会结合这个人的权重之后综合得出。这里,每个人就是一个个的弱分类器。大家一起这样的组合就是强分类器。数学表述就是“加权结合”(1)h则为各种学习器,就是那些人。前面的a就是权重,就是他们的话语权。下面也不会说太多,想说的就是只有这几点:1.既然这也是一个模型,那我们模型的优化公式是什么。2.我们之前说的每个问题会根据人的解决结果而改变其权重,那么这个权重又是如何改变的?3.每个人也会根据自身的解决问题的能力所赋予一定的话语权(权重),那这个公式又是什么?所以我主要想说好这几点。

1.1最小化指数损失函数

由名字就能够得知,我们是通过指数损失函数来作为我们模型的优化目标的,为什么呢?首先,模型H(x)是由训练集带入优化函数当中训练获得。当通过训练集D来最小化指数损失函数(2)的时候,则H可得。

既要求最小化,那么对该(2)式进行求偏导:(3)。这里,根据x的表现分别进行两种可能性假设,一种f(x)=1,另外一种f(x)=-1。两种情况,不同的概率,将f(x)等于1或-1代入原式中即可得(3)。令(3)式为0,则可得(4)。

因此,(5)。

OK!这里,意味着sign(H(X))达到了贝叶斯最优错误率。这意味着指数损失函数最小化,则分类错误率也将最小化。.而,我们要是设计分类器,看它合格与否不就是看它是不是能够使得分类错误率最小化吗?而这里如果用指数损失函数来表示分类任务的性能好坏与这个分类错误率是一致的。除此之外,指数损失函数也是连续可微的。因此,我们拿指数损失函数作为它的优化函数这是十分合理的!

1.2确定分类器和它的权重

这一节要说明白两件事。其一,如何确定这一轮的子分类器,也就是如何生成一个人的价值观。其二,这些人的话语权又是多少,这个子分类器的权重又是多大。而这一切的目标就是使得1.1节中我们所确定的指数损失函数最小。

(6)。式中的m表示的是第m轮,也就是第m个人在判断的过程中。而总共人数可能是多于m个人的。

其中的Hm(X)则为:(7)。代入(6)式中,那么(6)式就变成了(8)

其中(9),Wmi就是第m轮中训练样本的权重(后面会详细介绍),它和我们即将要求的αm和hm无关,他只和前一轮形成的强分类器Hm-1(X)和样本标签f(xi)有关,所以这里的最小化中我们可以将它看成常数。

首先,我们要求hm(X)。也就是形成第m个人的价值观。(10)。em是分类误差率。也就是这第m个人是想去解决当前的问题,并且偏向于解决那些前人难以解决的问题,因为前人难以解决的问题,这些问题的权重会更大,一旦大权重的问题解决会使得(10)分类误差率更加的小。hm(x)专业点也叫做加权训练数据分类误差率最小的基本分类器。

知道了第m轮基本分类器之后,就要求该分类器的权重αm。将式(10)代入式(8)中。式(8)就会变成

(11)。嘎嘎,中间全是数值替换和一些简单的数学推导,仔细看,对后面那个式子进行求导并使得导数为0,就得到(12),这就是子分类器的权重。

1.3样本权重更新

其实,1.2当中提到的很多(深深的感受到1.2和1.3不能分开啊!),这里,再梳理一下。由(7)式中和(9)式,可得到(13)。这就是样本权重的更新,也就是我们例子中问题的更新。

1.4算法流程

输入:训练集,训练次数M。

过程:1)初始化训练数据的权值分布

        2)for m = 1,2,...,M do

使用具有权值的分布Tm的训练样本数据集学习,得到基本子分类器hm(x),公式(10)前半部分。

计算hm(x)在训练数据集上的分类误差率,公式(10)后半部分。

计算hm(x)的系数,公式(12)。

更新训练数据集的权值分布(13)。

     end for

3)构建基本分类器的线性组合(1)。

输出:

1.5结束语

boosting我只是看看就好了。项目当中我是不敢用的,我感觉太容易过拟合了,因为生活中很多问题是无解的,而这个模型是想解决所有的问题,它强行希望子分类器去做它原本就不能够做到的事情,结果会让它爆炸,会让它过拟合。从偏差-方差分解的角度来看,Boosting主要关注降低偏差,多说一句,偏差相当于预测准确性,而方差相当于预测稳定性,下图就能明显的说明偏差和方差


总之,boosting能够基于泛化能力相当弱的学习器构建出很强的集成,比如就比较适合决策树。boosting。完



0 0
原创粉丝点击