一 集成学习
集成学习本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。
有两个主要的问题需要解决:1 如何得到若干个个体学习器 ;2 如何选择一种结合策略
二 个体学习器
第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如策树个体学习器,或者神经网络个体学习器。
第二种是所有的个体学习器不全是一个种类的,或者说是异质的。
目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。
同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林系列算法。
三 bagging:
(1)从原始样本集中抽取训练集。每轮从原始样本集中使用bootstraping的方法抽取n个训练样本。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
(2)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。
(3)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。
bagging的弱类器之间的确没有boosting那样的联系,它的特点在“随机采样”。
随机采样就是从我们的训练集里面采集固定个数的样本,但每次采集后,都放回。
随机森林是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。
四 boosting
其主要思想是将弱分类器组装成一个强分类器。在PAC(概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。
关于boosting的两个核心问题:
(1)在每一轮如何改变训练数据的权值或概率分布?
通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
(2)通过什么方式来组合弱分类器?
通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。
boosting系列算法里,最著名算法主要有adaboost和提升树(boosting tree)系列算法。
三 Bagging, boosting二者之间的区别
1 样本选择:
bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2 样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大
3 预测函数:
Bagging:所有预测函数的权重相等
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重
4 并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果
四 总结
这两种方法都是把若干分类器整合为一个分类器的方法,只是整合的方式不一样,最终得到不一样的效果,将不同的分类算法套入到此类算法框架中一定程度上提高了原单一分类器的分类效果,但是也增大了计算量。
下面是将决策树与这些算法框架进行结合所得到的新的算法:
(1)bagging + 决策树 = 随机森林
(2)adaboost + 决策树 = 提升树
(3)gradient boosting + 决策树 = GBDT
的