集成学习(Ensemble learning)是通过构建并结合多个机器学习器来完成学习任务。也就是常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等。
一、集成学习概述
对训练集数据,通过训练若多个个体学习器,采用一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。
集成学习
集成学习需要解决两个主要的问题:
- 如何得到若干个个体学习器
- 如何选择一种结合策略,将个体学习器集合成一个强学习器。
二、个体学习器
有两种选择得到个体学习器:
- 所有的个体学习器都是同类的。如都是决策树算法,或都是神经网络。
- 个体学习器不全是同类的。如分类问题,对训练集采用支持向量机,逻辑回归和朴素贝叶斯算法,再通过某种结合策略来得到最终的分类强学习器。
一般常说的集成学习方法都是指同质个体学习器。使用最多的模型是CART决策树和神经网络。
同质个体学习器按个体学习器之间是否存在依赖关系,分为两类:
- 个体学习器之间存在强依赖关系,一系列个体学习器都需要串行生成,代表算法:boosting系列算法
- 个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法
集成学习之boosting
Boosting算法的工作机制是:首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使弱学习器1学习误差率高的训练样本点的权重变高,那么误差率高的点在弱学习器2中得到更多的重视。基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
Boosting系列算法里最著名算法主要有:AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。
集成学习之bagging
bagging的个体学习器的训练集是通过随机采样得到的。通过T次的随机采样,就可得到T个采样集,对于这T个采样集,可分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。
随机采样一般采用的是自助采样法(Bootstap sampling),即对于m个样本的原始训练集,每次先随机采集一个样本放入采样集,接着把该样本放回,即下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。
随机森林是bagging的一个特化进阶版,特化是因为随机森林的弱学习器都是决策树。进阶是随机森林在bagging的样本随机采样基础上,加上特征的随机选择,其基本思想没有脱离bagging的范畴。
三、集成策略
假定得到T个弱学习器是{h1,h2,h3…}
1. 平均法
对数值类的回归预测问题,通常使用的结合策略是平均法,即对若干个弱学习器的输出进行平均,得到最终的预测输出
-
最简单的平均是算术平均:
算术平均 -
如果每个个体学习器有一个权重w,加权平均:
加权平均
2. 投票法
对于分类问题的预测,通常使用的是投票法。
- 最简单的投票法是:相对多数投票法,即少数服从多数。T个弱学习器对样本x的预测结果中,数量最多的类别ci为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。
- 绝对多数投票法,即票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。
- 加权投票法,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。
3. 学习法
平均法和投票法是对弱学习器的结果做平均或投票,相对比较简单,但是可能学习误差较大。学习法的代表方法是stacking,使用stacking的结合策略时, 不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,即将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。
将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。
本文参考:
《机器学习》周志华
集成学习原理小结
网友评论