小白学习机器学习---第七章:集成学习

1.个体与集成


    集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifiersystem)。

       集成学习的一般结构:先产生一组“个体学习器(individual learner)”,再用种策略将他们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生,如C4.5决策树算法,BP神经网络算法等。此时集成中只包含同种类型的个体学习器,如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,这样的集成是“同质(homogeneous)”的。同质集成中的个体学习器称为“基学习器(base learner)”,相应的学习算法称为“基学习算法(base learning algorithm)”。集成也可以包含不同类型的个体学习器,如同时包含决策树和神经网络,这样的集成是“异质(heterogenous)”的。相应的,个体学习器一般不称为基学习器,称为“组件学习器(component learner)”或直接称为个体学习器。

2.集成方法


        集成方法(ensemblemethod)通过组合多个基分类器(base classifier)来完成学习任务,颇有点“三个臭皮匠顶个诸葛亮”的意味。基分类器一般采用的是弱可学习(weaklylearnable)分类器,通过集成方法,组合成一个强可学习(stronglylearnable)分类器。所谓弱可学习,是指学习的正确率仅略优于随机猜测的多项式学习算法;强可学习指正确率较高的多项式学习算法。集成学习的泛化能力一般比单一的基分类器要好,这是因为大部分基分类器都分类错误的概率远低于单一基分类器的。

       根据个体学习器的生成方式,目前的集成学习方法大致可分为两类,即个体学习器之间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器之间不存在强依赖关系、可同时生成的并行化方法,前者的代表是Boosting,后者的代表是Bagging和“随机森林Random Forest      Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法,即将弱分类器组装成强分类器的方法。

        

                1.Boosting:

        Boosting是一种可将弱学习器提升为强学习器的算法。Boosting算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个学习器进行加权结合

        Boosting族最著名的代表

        AdaBoost(Adaptive Boosting):

        AdaBoost是一种迭代算法。每轮迭代中会在训练集上产生一个新的分类器,然后使用该分类器对所有样本进行分类,以评估每个样本的重要性(informative)。具体来说,算法会为每个训练样本赋予一个权值。每次用训练完的新分类器标注各个样本,若某个样本点已被分类正确,则将其权值降低;若样本点未被正确分类,则提高其权值。权值越高的样本在下一次训练中所占的比重越大,也就是说越难区分的样本在训练过程中会变得越来越重要。整个迭代过程直到错误率足够小或达到一定次数为止。

AdaBoost算法原理图如下:


小白学习机器学习---第七章:集成学习_第1张图片

左边是数据集,其中直方图的不同长度代表样本的不同权重,第三列的三角形代表分类器的权值α(计算方法见AdaBoost训练过程),单个分类器的输出会与该值相乘。AdaBoost最终结果为所有分类器输出的加权平均。

AdaBoost训练过程:

为了构造出一个强的学习算法,首先需要选定一个弱学习算法,并利用同一个训练集不断训练弱学习算法,以提升弱学习算法的性能。在AdaBoost算法中,有两个权重,第一个训练集中每个样本有一个权重,称为样本权重,用向量ω表示;另一个是每一个弱学习算法具有一个权重,用向量α

 

表示。假设有n个样本的训练集:

 

(1)为每个样本初始化权值   

                

开始迭代,在第t轮迭代中:

(2)使用训练集训练分类器Ct,并计算该分类器的错误率:

3)计算分类器的权值为:


(4)更新样本当前的权值ωt.若分类正确,则减少权值:


若分类错误,则加大权值:


(5)迭代结束的标志可以是训练错误率为一个可接受的小数值,或者弱分类器数目达到指定值。


AdaBoost分类过程:

AdaBoost算法

重复进行上述训练过程进行学习,这样经过t轮的学习后,就会得到t个弱学习算法、权重、弱分类器的输出以及最终的AdaBoost算法的输出,分别如下:


小白学习机器学习---第七章:集成学习_第2张图片

其中,sign(x)是符号函数。

用生成的所有分类器预测未知样本X,最终结果为所有分类器输出的加权平均。

AdaBoost优点 :

(1)是一种有很高精度的分类器

(2)可以使用各种方法构建子分类器,Adaboost算法提供的是框架

(3)当使用简单分类器时,计算出的结果是可以理解的,并且弱分类器的构造极其简单

(4)简单,不用做特征筛选

(5)不容易发生overfitting。

AdaBoost缺点:

(1)对outlier(离群值)比较敏感

(2)训练时间过长,执行效果依赖于弱分类器的选择














你可能感兴趣的:(小白学习机器学习---第七章:集成学习)