集成学习(ensemble learning):
集成学习通过构建并结合多个学习器来完成学习任务。
如神经网络集成中使用的都是神经网络,这类叫做同质集成,子学习器叫做“基学习器”;
不同的叫异质集成,学习器叫“个体学习器”或者组件学习器。
集成学习通过将多个学习器进行结合,以取得更好的学习能力或者泛化性能。通过投票法产生最后结果,同时个体学习器之间要尽量“好而不同”。
两类集成学习:
一、个体学习器之间存在强依赖关系,必须串行生成的序列化方法,如Boosting;
二、个体学习器之间不存在强依赖关系,可同时并行生成的方法,如Bagging和随机森林。
Boosting:
Boosting(促进)是一族可将弱学习器提升为强学习器的算法。
工作机制: 先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做出的训练样本在后续受到更多的关注,然后基于调整后的样本分别来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终对这T个基学习器进行加权结合。
Adaptive Boosting 关键在于给予做错的地方更多的关注,对于第t个学习器的误差 ϵt ϵ t 和其他学习器误差 ϵo ϵ o ,权重更新如下(最后结果会根据误差的不同取不同的形式,如平方差开平方,对数误差取对数):
Boosting算法要对不同的数据分布进行学习,一种是重新赋权法,一种是重新采样法。
Boosting主要关注如何降低偏差。
Bagging:
个体学习器之间要好而不同,只取一部分作为训练集可能无法进行较为充分的学习,表现较差。一个较好的解决办法是使用相互有交叠的采样子集。 基本流程为采样出T个含m个训练样本的采样集,然后基于每个踩一脚训练出一个基学习器,再将这些基学习器进行结合。
Bagging主要关注如何降低方差。
随机森林(RF: Random Forest):
RF在传统决策树的基础上继续集成,每个决策树随机选择包含k个属性的子集,然后再从这个子集中选择最优属性进行划分,推荐 k=log2d k = l o g 2 d (总共d个属性)。
随机森林的多样性不仅来自于样本扰动,还来自于属性扰动。
随机森林训练效率要好于Bagging,随机森林只考察一个个属性子集,而Bagging考察所以属性。
结合策略和多样性:
数值型输出采用的是平均法。主要有:
一、加权平均法(weighted averaging)
简单平均法是加权平均的特例,在个体学习器性能相近时选用,加权平均适用于学习器性能相差较大时(要学习的权重过多,可能导致过拟合)。
分类任务使用投票法。 主要有:
一、绝对多数投票法:当某标记得票过半时预测为该标记,否则拒绝预测。
二、相对多数投票法:预测得票最多的标记,当过个标记同时获得最高票时,随机选取一个。
三、加权投票法:和加权平均类似。
学习法:指当训练数据很多时,使用一个次级学习器来结合初级学习器(即个体学习器)。
主要代表有Stacking:先从初始训练集训练出初级学习器,然后在初级学习器预测的基础上使用k折交叉验证或者留一法得到初级学习器未使用的数据集来训练次级学习器。
多样性。 即如何有效的生成多样性大的学习器。主要方法有;
一、数据样本扰动
二、输入属性扰动
三、输出表示扰动
四、(学习器)算法参数扰动
xgboost:
和梯度提升决策树(GBDT)类似,主要使用决策树(CART)作为个体学习器。
主要改进:1、引入正则化 2、使用预排序加快速度 3、引入二阶导数(好像是类似EM算法,具体没看推导)。
参考:GBDT,XGboost,LightGBM的比较