集成算法目标:集成算法会考虑多个评估器的建模结果,汇总以后获得一个综合的结果,以此来获取比单个模型更好的回归或分类表现。javascript
集成学习(Ensemble learning)经过构建并结合多个学习器来完成学习任务。通常结构为:先产生一组“个体学习器”,再用某种策略将它们结合起来。但要得到好的集成,个体学习器应“好而不一样”,即个体学习器要有必定的“准确性”,即学习器不能太坏,而且要有多样性,即个体学习器间具备差别。多个模型集成成为的模型叫作集成评估器(ensemble estimator),组成集成评估器的每一个模型都叫作基评估器(base estimator)。css
根据个体学习器的生成方式,目前的集成学习方法大体能够分为2类:html
1.Bagging(装袋法):个体学习器间不存在强依赖关系、可同时生成的并行化方法。html5
2.Boosting(提高法):个体学习器间存在强依赖关系、必须串行生成的序列化方法。java
注:所谓串行生成的序列化方法就是除了训练第一个以外,其余的学习器学习都须要依赖于前面生成的学习的结果。node
Bagging算法原理图以下:python
算法过程以下:jquery
1.自助采样:假设训练数据集包含m个样本,随机从样本集中可放回的抽取m次,获得与训练集数量相同的训练集。通过K轮自助采样,能够获得K个包含m个训练样本的采样集。linux
2.模型训练:基于每一个采样集训练出一个最优模型(基学习器),K个训练集就获得K个训练模型。android
3.模型输出:K个基学习器进行组合,获得集成模型。分类问题:对K个模型采起投票的方式获得分类结果。回归问题:对K个模型的值取平均获得回归值。
即对于$m$个样本的原始训练集,咱们每次先随机采集一个样本放入采样集,接着把该样本放回,这样采集$m$次,最终能够获得$m$个样本的采样集,因为是随机采样,这样每次的采样集是和原始训练集不一样的,和其余采样集也是不一样的。
对于一个样本,它每次被采集到的几率是$\frac{1}{m}$。不被采集到的几率为$1-\frac{1}{m}$。若是m次采样都没有被采集中的几率是$(1-\frac 1 m)^m$。则
即当抽样的样本量足够大时,在bagging的每轮随机采样中,训练集中大约有36.8%的数据没有被采集中。对于这部分大约36.8%的没有被采样到的数据,咱们经常称之为袋外数据(Out Of Bag, 简称OOB)。这些数据未参与训练集模型的拟合,能够用来检测模型的泛化能力。
Boosting算法原理图以下:
算法过程以下:
1.从初始训练集训练出一个基学习器。
2.根据基学习器的表现对样本分布进行调整,使得先前的基学习器作错的训练样本在后续收到更多的关注,而后基于调整后的样本分布来训练下一个基学习器。
3.如此重复进行训练,直至基学习器数目达到实现指定的值T,或整个集成结果达到退出条件,而后将这些学习器进行加权结合。(每一轮训练都提高那些错误率小的基础模型权重,同时减少错误率高的模型权重。)
集成学习获得多个学习器后,须要用结合策略对多个结果进行分类或汇总输出。其主要会用到3种方法:平均法、投票法和学习法。
平均法主要用于数值类的回归预测。假定我获得的$K$个弱学习器是$h_1,h_2,h_3...h_k$
1.彻底平均
将全部弱学习的值求算数平均值,即$H(x)=\frac{1}{K}\sum_{i=1}^K{h_i(x)}$
2.加权平均
给每一个学习器设定一个权重求加权平均值,即$H(x)=\sum_{i=1}^K{w_i}{h_i(x)}$,且$0\leq{w_i}\leq{1},\sum_{i=1}^K{w_i}=1$。
投票法主要用于分类问题的预测,便是少数服从多数。主要有如下三种方法:
相对多数投票法:也就是少数服从多数,即预测结果中票数最高的分类类别。若是不止一个类别得到最高票,则随机选择一个做为最终类别。
绝对多数投票法:即不光要求得到最高票,还要求票过半数。
加权投票法:每一个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。
一般考虑的是异质弱学习器,并行地学习它们,并经过训练一个「元模型」将它们组合起来,根据不一样弱模型的预测结果输出一最终的预测结果。便是将K个学习器的分类结果再次做为输入,将训练集的输出做为输出,从新训练一个学习器来获得最终结果。
1.训练样本集
Bagging:训练集是有放回抽样,从原始集中选出的K组训练集是相互独立的。
Boosting:每一次迭代的训练集不变。
2.训练样本权重
Bagging:每一个训练样本的权重相等,即1/N。
Boosting:根据学习器的错误率不断调整样例的权值,错误率越大,权值越大。
3.预测函数的权重
Bagging:K组学习器的权重相等,即1/K。
Boosting:学习器性能好的分配较大的权重,学习器性能差的分配较小的权重。
4.并行计算
Bagging:K组学习器模型能够并行生成。
Boosting:K组学习器只能顺序生成,由于后一个模型的样本权值须要前一个学习器模型的结果。