集成学习入门(一)

1.集成学习(ensemble learning)的概述

    集成学习通过构建并结合多个学习器来完成学习任务。

图1 集成学习示意图

    从图1可知,集成学习的策略就是:先产生一组“个体学习器”,再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生,例如决策树、神经网络等。关键点:个体学习器的产生以及结合策略

    集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系,是串行拟合。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。

2.boosting

 

图2 boosting算法示意图

算法思想:先从初试训练集训练出一个个体学习器,再根据个体学习器的表现对训练样本分布进行调整,使得先前个体学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个个体学习器;如此重复进行,直至个体学习器达到事先指定的值T,最终将这T个学习器进行加权结合。

Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。AdaBoost和提升树算法的原理这里先不阐述,后续另开文章来讲。

3.bagging

3.1 bagging的原理

图2 bagging算法示意图

    随机采样(bootsrap):就是从我们的训练集里面采集固定个数的样本,但是每采集一个样本后,都将样本放回。也就是说,之前采集到的样本在放回后有可能继续被采集到。对于我们的Bagging算法,一般会随机采集和训练集样本数m一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容不同。如果我们对有m个样本训练集做T次的随机采样,,则由于随机性,T个采样集各不相同。注意到这和GBDT的子采样是不同的。GBDT的子采样是无放回采样,而Bagging的子采样是放回采样

    对于一个样本,它在某一次含N个样本的训练集的随机采样中,每次被采集到的概率是1/N。不被采集到的概率为1−1/N。如果N次采样都没有被采集中的概率是(1−1/N)^N。当N→∞N→∞时,(1−1/N)^N→ 1/e≃0.368。也就是说,在bagging每轮随机采样中,训练集中大约有36.8%的数据没有被采样集采集中。

    对于这部分大约36.8%的没有被采样到的数据,我们常常称之为袋外数据(Out Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。

     bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。
由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏差会大一些。

算法流程:

输入为样本集D={(x1,y1),(x2,y2),...(xm,ym)},弱学习器算法, 弱分类器迭代次数T。输出为最终的强分类器f(x).
1)对于t=1,2...,T:

  • a)对训练集进行第t次随机采样,共采集N次,得到包含N个样本的采样集Di
  • b)用采样集Di训练第i个弱学习器Gi(x)

2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

3.2 RF(随机森林)的原理

     RF是Bagging算法的进化版,也就是说,它的思想仍然是bagging,但是进行了独有的改进。我们现在就来看看RF算法改进了什么。   
     首先,RF使用了CART决策树作为弱学习器,这让我们想到了梯度提示树GBDT。第二,在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的M个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于M,假设为m,然后在这些随机选择的m个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。

     如果m=N,则此时RF的CART决策树和普通的CART决策树没有区别。m越小,则模型约健壮,当然此时对于训练集的拟合程度会变差。也就是说m越小,模型的方差会减小,但是偏倚会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的m的值。

算法流程:

输入为样本集D={(x1,y1),(x2,y2),...(xn,yn)},弱分类器迭代次数T。输出为最终的强分类器f(x):

1)对于t=1,2...,T:

  • a)对训练集进行第t次随机采样,共采集N次,得到包含N个样本的采样集Di
  • b)用采样集Di训练第i个决策树模型Gi(x),在训练决策树模型的节点的时候, 在节点上所有的样本特征(M个)中选择一部分样本特征(m个),在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分

2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

RF的2个重要参数:

1.森林中树的数量,一般建议取很大;2.m的大小,推荐m的值为M的均方根。

 

RF的优缺点:

优点:

        1.很多的数据集上表现良好;

        2.能处理高维度数据,并且不用做特征选择;

        3.训练完后,能够给出那些feature比较重要;

        4.训练速度快,容易并行化计算。

缺点:

        1.在噪音较大的分类或回归问题上会出现过拟合现象;

        2.对于不同级别属性的数据,级别划分较多的属性会对随机森林有较大影响,则RF在这种数据上产出的数值是不可信的。

4.结合策略

1.平均法

  • 简单平均
  • 加权平均

2.投票法

  • 绝对多数投票
  • 相对多数投票
  • 加权投票

3.学习法

 

references

《机器学习》周志华

https://blog.csdn.net/shenziheng1/article/details/72588162

https://blog.csdn.net/zhoubl668/article/details/50740189

 

posted @ 2018-05-05 22:37  loongnotdragon  阅读(363)  评论(0编辑  收藏  举报