一、集成学习
1. 概念
集成学习(ensemble learning)是通过构建并结合多个学习器来完成学习任务。在一些数据挖掘竞赛中经常需要对几个模型进行融合,这时候就可以用到集成学习算法。
2.“个体学习器”分类
集成学习的一般结构:先产生一组“个体学习器”,再用某种策略把它们结合起来。“个体学习器”的分类有:
(1)基学习器:集成中只包含同类型的个体学习器,即个体学习器由一个现有的学习算法(基学习算法)从训练数据产生,例如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络。称这种集成方式是“同质”的。
(2)组件学习器:集成中包含不同类型的个体学习器。称这种集成方式是“异质”的。
3. 集成学习研究的核心
集成学习通过对多个学习器结合,常可获得比单一学习器显著优越的泛化性能,这对“弱学习器”尤为明显。弱学习器(weak learner)常指泛化性能略优于随机猜测的学习器。
在一般经验中,把一个好的东西和一个坏的东西掺杂在一起,得到的结果通常是比坏的要好,比好的要坏。集成学习是怎么保证结合后比单一学习器效果更好呢?要获得好的集成。个体学习器应该“好而不同”,即个体学习器有一定的准确性——学习器不能太差,还要有多样性——学习器间有差异。如何产生并结合“好而不同”的学习器,是集成学习研究的核心。
4. 结合策略
(1)平均法Averaging:主要应用于回归问题,分为简单平均法和加权平均法。
(2)投票法 Voting:主要应用于分类问题,分为绝对多数投票法、相对多数投票法、加权投票法。
(3)学习法:当训练数据很多时采用学习法,即通过另一个学习器来进行结合,典型代表:Stacking。
5. 集成学习的分类
常用的集成学习框架有Boosting、Bagging、Stacking等。Boosting是个体学习器间存在强依赖关系、必须串行生成的序列方法;Bagging是个体学习器间不存在强依赖关系、可同时生成的并行化方法;Stacking本身是一种著名的集成学习方法,也可看作一种特殊的结合策略。
二、Boosting
1. 典型算法
Adaboost(Adaptive Boosting)、GBDT(Gradient Boosting Decision Tree)、XGBOOST
2. 原理
先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;重复直到迭代次数达到T,最终将这T个基学习器进行加权结合。
三、Bagging
1. 典型算法
Bagging、随机森林RF(Random Forest)、Dropout
2. 原理
Bagging方法是bootstrap aggregating的缩写,基于自助采样法(bootstrap sampling即有放回的随机采样)。利用自助采样法采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再对这些基学习器进行结合。
自助采样过程还给Bagging带来一个优点:由于训练基学习器只用了初始训练集中约63.2%的样本,剩下的约36.8%的样本可用作验证集,对泛化性进行外包估计。
四、Stacking
首先从初始训练集训练出初级学习器,然后通过交叉验证或留一法等方法生成一个新的数据集,用于训练次级学习器。