集成学习原理小结

    集成学习(ensemble learning)能够说是如今很是火爆的机器学习方法了。它自己不是一个单独的机器学习算法,而是经过构建并结合多个机器学习器来完成学习任务。也就是咱们常说的“博采众长”。集成学习能够用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,能够说全部的机器学习领域均可以看到集成学习的身影。本文就对集成学习的原理作一个总结。算法

1. 集成学习概述

    从下图,咱们能够对集成学习的思想作一个归纳。对于训练集数据,咱们经过训练若干个个体学习器,经过必定的结合策略,就能够最终造成一个强学习器,以达到博采众长的目的。网络

    也就是说,集成学习有两个主要的问题须要解决,第一是如何获得若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。dom

2. 集成学习之个体学习器

    上一节咱们讲到,集成学习的第一个问题就是如何获得若干个个体学习器。这里咱们有两种选择。机器学习

    第一种就是全部的个体学习器都是一个种类的,或者说是同质的。好比都是决策树个体学习器,或者都是神经网络个体学习器。第二种是全部的个体学习器不全是一个种类的,或者说是异质的。好比咱们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再经过某种结合策略来肯定最终的分类强学习器。学习

    目前来讲,同质个体学习器的应用是最普遍的,通常咱们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系能够分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都须要串行生成,表明算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器能够并行生成,表明算法是bagging和随机森林(Random Forest)系列算法。下面就分别对这两类算法作一个归纳总结。测试

3. 集成学习之boosting

    boosting的算法原理咱们能够用一张图作一个归纳以下:rest

    从图中能够看出,Boosting算法的工做机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习偏差率表现来更新训练样本的权重,使得以前弱学习器1学习偏差率高的训练样本点的权重变高,使得这些偏差率高的点在后面的弱学习器2中获得更多的重视。而后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器经过集合策略进行整合,获得最终的强学习器。blog

    Boosting系列算法里最著名算法主要有AdaBoost算法和提高树(boosting tree)系列算法。提高树系列算法里面应用最普遍的是梯度提高树(Gradient Boosting Tree)。AdaBoost和提高树算法的原理在后面的文章中会专门来说。it

4. 集成学习之bagging

    Bagging的算法原理和 boosting不一样,它的弱学习器之间没有依赖关系,能够并行生成,咱们能够用一张图作一个归纳以下:基础

    从上图能够看出,bagging的个体弱学习器的训练集是经过随机采样获得的。经过T次的随机采样,咱们就能够获得T个采样集,对于这T个采样集,咱们能够分别独立的训练出T个弱学习器,再对这T个弱学习器经过集合策略来获得最终的强学习器。

    对于这里的随机采样有必要作进一步的介绍,这里通常采用的是自助采样法(Bootstrap sampling),即对于m个样本的原始训练集,咱们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终能够获得m个样本的采样集,因为是随机采样,这样每次的采样集是和原始训练集不一样的,和其余采样集也是不一样的,这样获得多个不一样的弱学习器。

    随机森林是bagging的一个特化进阶版,所谓的特化是由于随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。bagging和随机森林算法的原理在后面的文章中会专门来说。

5. 集成学习之结合策略

    在上面几节里面咱们主要关注于学习器,提到了学习器的结合策略但没有细讲,本节就对集成学习之结合策略作一个总结。咱们假定我获得的T个弱学习器是$\{h_1,h_2,...h_T\}$

5.1 平均法

    对于数值类的回归预测问题,一般使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均获得最终的预测输出。

    最简单的平均是算术平均,也就是说最终预测是$$H(x) = \frac{1}{T}\sum\limits_{1}^{T}h_i(x)$$

    若是每一个个体学习器有一个权重$w$,则最终预测是$$H(x) = \sum\limits_{i=1}^{T}w_ih_i(x)$$

    其中$w_i$是个体学习器$h_i$的权重,一般有$$w_i \geq 0 ,\;\;\; \sum\limits_{i=1}^{T}w_i = 1$$

5.2 投票法

    对于分类问题的预测,咱们一般使用的是投票法。假设咱们的预测类别是$\{c_1,c_2,...c_K\}$,对于任意一个预测样本x,咱们的T个弱学习器的预测结果分别是$(h_1(x), h_2(x)...h_T(x))$。

    最简单的投票法是相对多数投票法,也就是咱们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别$c_i$为最终的分类类别。若是不止一个类别得到最高票,则随机选择一个作最终类别。

    稍微复杂的投票法是绝对多数投票法,也就是咱们常说的要票过半数。在相对多数投票法的基础上,不光要求得到最高票,还要求票过半数。不然会拒绝预测。

    更加复杂的是加权投票法,和加权平均法同样,每一个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。

5.3 学习法

    上两节的方法都是对弱学习器的结果作平均或者投票,相对比较简单,可是可能学习偏差较大,因而就有了学习法这种方法,对于学习法,表明方法是stacking,当使用stacking的结合策略时, 咱们不是对弱学习器的结果作简单的逻辑处理,而是再加上一层学习器,也就是说,咱们将训练集弱学习器的学习结果做为输入,将训练集的输出做为输出,从新训练一个学习器来获得最终结果。

    在这种状况下,咱们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,咱们首先用初级学习器预测一次,获得次级学习器的输入样本,再用次级学习器预测一次,获得最终的预测结果。

 

    以上就是集成学习原理的一个总结,后面会分别对Adaboost, 提高树,bagging和随机森林的算法原理作一个总结,敬请期待。

 

(欢迎转载,转载请注明出处。欢迎沟通交流: liujianping-ok@163.com)