集成学习分类和区别

来源:互联网 发布:地图示意图制作软件 编辑:程序博客网 时间:2024/06/18 04:08

   

集成学习

1.1 定义

所谓集成学习(ensemble learning),是指通过构建多个弱学习器,然后结合为一个强学习器来完成分类任务。并相较于弱分类器而言,进一步提升结果的准确率。严格来说,集成学习并不算是一种分类器,而是一种学习器结合的方法。

下图显示了集成学习的整个流程:首次按产生一组“个体学习器”,这些个体学习器可以是同质的(homogeneous)(例如全部是决策树),这一类学习器被称为基学习器(base learner),相应的学习算法称为“基学习算法”;集成也可包含不同类型的个体学习器(例如同时包含决策树和神经网络),这一类学习器被称为“组件学习器”(component learner)。

屏幕快照 2017-03-30 上午10.25.48

集成学习通过将多个学习器进行结合,可获得比单一学习器显著优越的泛化性能,它基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好,直观一点理解,就是我们平时所说的“三个臭皮匠,顶个诸葛亮”,通过使用多个决策者共同决策一个实例的分类从而提高分类器的泛化能力。

1.2 集成学习的条件

当然,这种通过集成学习来提高学习器(这里特指分类器)的整体泛化能力也是有条件的:

  • 首先,分类器之间应该具有差异性,即要有“多样性”。很容易理解,如果使用的是同一个分类器,那么集成起来的分类结果是不会有变化的。‘
  • 其次,每个个体分类器的分类精度必须大于0.5,如果p<0.5
    ,那么随着集成规模的增加,分类精度会下降;但如果是大于0.5的话,那么最后最终分类精度是可以趋于1的。

因此,要获得好的集成,个体学习器应该“好而不同”,即个体学习器要有一定的“准确性”,即学习器不能太坏,并且要有“多样性”,即学习器间具有差异。

1.3 集成学习的分类

根据个体学习器的生成方式,目前集成学习方法大致可分为两大类:第一类是个体学习器之间存在强依赖关系、必须串行生成的序列化方法,这种方法的代表是“Boosting”;第二类是个体学习器间不存在强依赖关系、可同时生成的并行化方法,它的代表是“Bagging”和“Random Forest”



Bagging:通过对原数据进行有放回的抽取,构建出多个样本数据集,然后用这些新的数据集训练多个分类器。因为是有放回的采用,

所以一些样本可能会出现多次,而其他样本会被忽略。该方法是通过降低基分类器方法来改善泛化能力,因此Bagging的性能依赖于基分类器

的稳定性,如果基分类器是不稳定的,Bagging有助于减低训练数据的随机扰动导致的误差,但是如果基分类器是稳定的,即对数据变化不敏

感,那么Bagging方法就得不到性能的提升,甚至会降低。

Boosting:提升方法是一个迭代的过程,通过改变样本分布,使得分类器聚集在那些很难分的样本上,对那些容易错分的数据加强学习,

增加错分数据的权重,这样错分的数据再下一轮的迭代就有更大的作用(对错分数据进行惩罚)。

Bagging与Boosting的区别:
二者的主要区别是取样方式不同。Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging。

Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的各轮训练集的选择与前面各轮的学习结果有关;

Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能

顺序生成。对于象神经网络这样极为耗时的学习方法。Bagging可通过并行训练节省大量时间开销。
bagging是减少variance,而boosting是减少bias。Bagging 是 Bootstrap Aggregating 的简称,意思就是再取样 (Bootstrap)

然后在每个样本上训练出来的模型取平均,所以是降低模型的 variance. Bagging 比如 Random Forest 这种先天并行的算法都有这个效果。

Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,

所以模型的 bias 会不断降低。这种算法无法并行。


gradient boosting:Boosting是一种思想,Gradient Boosting是一种实现Boosting的方法,它主要的思想是,

每一次建立模型是在之前建立模型损失函数的梯度下降方向。损失函数(loss function)描述的是模型的不靠谱程度,

损失函数越大,则说明模型越容易出错。如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,

而最好的方式就是让损失函数在其梯度(Gradient)的方向上下降。

Rand forest与bagging的区别:1). Rand forest是选与输入样本的数目相同多的次数(可能一个样本会被选取多次,同时也会造成一些样本不会被选取到),

而bagging一般选取比输入样本的数目少的样本;

2). bagging是用全部特征来得到分类器,而rand forest是需要从全部特征中选取其中的一部分来训练得到分类器;

一般Rand forest效果比bagging效果好!





原创粉丝点击