前言
集成学习是通过构建并结合多个学习器来完成学习任务,主要包含两类,一是 个体学习器间 存在 强依赖关系、必须串行生成得序列化方法,比如提升学习方法、提升树GBDT、xgboost等,主要思想是boosting迭代将弱学习器提升为强学习器;二是个体学习器之间不存在强依赖关系、可同时生成得并行化方法,该类的代表是bagging和随机森林
bagging
想要得到泛化能力强的集成,集成中的个体学习应该尽可能得 相互独立,所以设法使得基学习器尽可能得具有 较大得差异 。
给定一个训练数据集将其随机抽样成n份子样本集,然后每个子集训练得出一个个体学习器,这样得到的基学习器就会有比较大得差异,从而获得好的集成;但是因为每个基学习器只用了一小部分的数据,这不能保证个体学习器的学习有效性,因此,为了解决这个问题可以考虑使用相互有交叠的采样子集。
bagging就是采用这种思想,
对于给定得m个样本数据集,先随机取出一部分样本放入采样集,再把这部分样本放回初始数据集,使得下次采样时该样本仍然有可能被选中,这样经过m次随机采样操作得到含m个样本得采样集,初始训练集中得样本有的在采样集中多次出现,有的则未出现,这样经过T轮,我们可以得到T个含m个训练样本得采样集,基于每个采样集训练得到一个基学习器,然后再将这些基学习器进行结合,再对预测值输出结合的时候,Bagging通常对分类问题使用简单投票法,对回归问题使用简单平均法。
随机森林
随机森林是bagging的一个拓展变体,RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。传统决策树在选择划分属性时是在当前节点的属性集合(假定d个属性)中选择一个最优属性;而在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分,这里的参数k控制了随机性的引入强度:若令k=d,则决策树的构建与传统决策树相同;若令k=1,则是随机选择一个属性用于划分,一般情况下k=log2(d)。
随机森林对bagging只做了小改动,但是与bagging中基学习器的“多样性”-仅通过样本扰动不同,随机森林还加入了随机属性扰动,这使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升
随机森林的收敛性与bagging相似,
随机森林的起始性能相对较差,特别是只包含一个基学习器的时候(因为引入属性扰动,随机森林中个体学习器的性能往往有所降低,然而随着个体学习器数目的增加随机森林通常会收敛到更低的泛化误差).此外,随机森林的训练效率往往优于bagging(决策树生成属性时只需要考察一个属性子集)
结合策略
1、 平均法:对数字型输出通常用平均法
(1) 简单平均法:
(2) 加权平均法:
2、 投票法:对分类任务来说,每个学习器预测出一个标记,然后采用投票法得出最终结果
(1) 绝对多数投票法
即若某标记得票过半,则预测为该标记,否则就拒绝预测
(2) 相对多数投票法
即预测为得票最多的标记,若同时有多个标记获得高票,则从中随机选取一个
(3) 加权得票法
3、 学习法:当训练数据很多时,通过另外一个学习器进行结合-stacking。
stacking先从初始数据集中训练出初级学习器,然后生成一个新数据集用于训练次级学习器,在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。
在训练阶段,次级训练集是利用初级学习器产生的,若直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比价大;
因此一般采用交叉验证或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。