zoukankan      html  css  js  c++  java
  • 集成学习1-Boosting

    转自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我仅仅是看看就好了。

    项目其中我是不敢用的,我感觉太easy过拟合了,由于生活中非常多问题是无解的,而这个模型是想解决全部的问题,它强行希望子分类器去做它原本就不可以做到的事情,结果会让它爆炸。会让它过拟合。

    从偏差-方差分解的角度来看。Boosting主要关注减少偏差,多说一句,偏差相当于预測准确性,而方差相当于预測稳定性,下图就能明显的说明偏差和方差


    总之,boosting可以基于泛化能力相当弱的学习器构建出非常强的集成。比方就比較适合决策树。

    boosting。



  • 相关阅读:
    JSP笔记05——生命周期(转)
    JSP笔记04——架构(转)
    JSP笔记03——环境搭建(转)
    JSP笔记02——概述(转)
    JSP笔记01——尝试
    【Head First Servlets and JSP】笔记14:session再探 & Listener示例
    【stl学习笔记】list
    【stl学习笔记】deques
    【stl学习笔记】vector
    【APUE】用户态与内核态的区别
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7262553.html
Copyright © 2011-2022 走看看