集成模型ensemble model总结

集成学习总结框架

这里对于在ML中经常使用到的集成学习模型中经常使用的三种集成学习方法,以及集成学习的中的一些小概念,还有对于不同的基模型有什么样的结合策略,从而进行总结。

另外,这篇总结是参考了周志华老师的“西瓜书”总结出来的知识点,如果有需求,可以去翻阅原书。

集成学习相关概念

首先,集成学习的方法是通过构建多个学习器来完成学习任务。这种集成学习的方法又可以称为多分类器系统、或者是基于委员会的学习方法

如果集成中只包含同种类型的个体分类器,这种集成的方式称为是“同质集成”;
反之,就称为是“异质集成”。

然后,集成学习中的子模型/个体学习器又根据集成方式是否是“同质集成”,又可以分为是“基模型/基学习器”或者是“组件学习器”,要么就是直接称为是“个体学习器”。那么,如果集成的方式是“同质集成”,那么其中的个体学习器就称为是“基学习器”;如果是“异质集成”,那么其中的个体分类器就称为是“组件学习器”。

其中,还有一点需要叙述的是,通过上面的“同质和异质”集成来看,我们就知道了,对于集成模型而言,它的子模型可以是相同类别的模型进行的集成,同时可以是不同的类别进行的集成,比说说使用C4.5决策树模型和神经网络模型放在一起进行集成。

  • 弱学习器:通常指的是对于预测的结果略好于随机预测结果的分类器,比方说,对于二分类问题,弱分类器就是predict的精度略好于50%的分类器。

  • 对于为什么我们在相关的理论中经常在集成模型的概念中经常将它的子模型或者说是基模型称为是“弱分类器”?

  • 这是因为集成模型的效果在弱分类器中进行集成所产生的效果更为是显著。所以在集成模型中经常重点研究弱分类器。但是呢,虽然理论表明我们可以通过足够的弱分类器的集成从而获得足够的精度的效果,但是这样需要使用的基分类器的数量太多,因此,如果我们想要使用少量的分类器来获取较好的集成效果,这是我们就要引入一些强分类器。

  • 但是,如果好的坏的一起参插使用,这种情况相当于是良莠不齐了。我们也无法测定最终的结果是会怎么样往好的模型那边倾斜还是往坏的模型那边倾斜。

  • 根据实验表明,如果要获取好的集成,个体学习器应该“好而不同”,也就是个体学习器要满足一定的下限的基础之上,即要有一定的准确性,学习器不能太坏,同时还要具备有“多样性”,就是学习器之间要有差异。这样最终才会产生效果好的ensemble model。

在假设各个基模型都是相互独立的情况下,集成模型进行的预测结果将会随着最终其中基模型数量的增多,最终导致结果prediction的错误率下降。

另外,有一个有意思的现象需要提出的是,上面的结论成立的前提是基于这个集成模型中的假设是各个基模型都是相互独立的,但是呢,事实上,在现实中,这种情况往往是不太可能完全满足的,因为,这些模型也是不可能是完全独立的,毕竟这些模型都是从同一个数据集中训练得到的。

除此之外,我们还有一个需要注意的是,我们设计ensemble model的过程中,即在设计它的各个基模型的过程中,我们需要注重提高集成模型的准确度。但是如果说我们要想注意前面提到的相互独立即注重“多样性”。根据事实经验表明,如果准确性很高的时候,那么这个时候,如果我们再一味地去抓“多样性”,这样带来的后果反而会导致我们的集成模型得到的效果显著下降。这个时候,我们就要思考这个“好而不同”,应该怎么去做。

集成学习策略

目前,主要使用的集成学习策略大致可以分成两种:

一种是个体学习器之间具有很强的依赖性,这种情况我们无法并行生成多个基模型,这种情况我们就需要使用串行生成的序列化方法,这种方式的代表学习策略是Boosting;

第二种方法就是个体学习器之间不存在很强的依赖关系,这种情况就可以使用并行化生成个体基学习器的方式,这种方式代表学习策略是Bagging和RF策略。

Boosting学习策略

这种方式的归属类别就是属于串行生成基模型的方式。这种方式的做法是:

起初使用初始训练集进行训练一个基学习器,然后计算这个基学习器在验证集上的错误率,通过这个基学习器在测试集上的错误率来调整初始训练集中的数据分布,或者是进行加权,然后通过调整之后的数据分布进行训练下一个基学习器,实现这样一个迭代的过程最终在生成了满足初始条件中的T个基模型之后就可以将这些基模型结合起来形成ensemble model

文中提到的调整数据分布的目的是:从而使得下一个生成的基模型可以更加focus到在前一个基模型上对于某些数据分布上处理效果较差的部分,从而相比于之前的基模型效果更好了。

在这里插入图片描述
上面所述就是Boosting算法中的比较有代表性的AdaBoost算法。

下面就Boosting算法中强调经过一次基模型生成之后,通过在测试集上得到的错误率最终调整数据分布的这种想法的实现方法进行叙述。

对于上面的这种想法一共有两种实现方法:一种是重加权(Re-weighting)还有一种是重采样法(re-sampling)。

  • 重加权:这种方式是通过上一个基模型的错误率从而对于下面一个基模型训练所使用的数据集应该侧重于哪个方面的权重进行倾斜,为每一个训练样本重新添加不一样的权重。
  • 重采样:对于有些样本是无法进行加权的,这个时候就可以使用重采样的方式来进行处理,在每一轮的基模型的学习训练中使用重新采样的训练样本对于模型进行重新训练。然后得到的新的基模型。
  • 通过对于上面的算法的阅读中我们可以发现,这种方式使用的是冲加权的方式,如果对于其中第5行的判断条件一旦是满足了,那么就意味着对于基模型的生成就到此为止了,但是,如果我们这个时候总共生成的基模型的数量还尅有到达 T T T个,明显对于构成ensemble model而言,这个基模型的数量是不足的。这就表明了re-weighting方法的缺陷。
  • 但是如果是使用re-sampling方法,这个时候就可以获得“重启动”的机会,这种情况下,就可以在第5行时,让生成基模型的进程跳出这个生成过程之后,然后在根据本次数据采样的结果进行重采样,根据这次采样的结果生成新的基模型。也就是可以直到生成了T个基模型之后进程才会停止。

Bagging学习策略

这种学习策略其实就是希望使用不同的训练集来训练出不同的based model。但是如果我们对于同一个数据集将它划分成T个不同的子集,虽然也可以训练出T个不同的基模型但是这样可能会导致我们训练出来的每一个基模型都会出现欠拟合的情况,毕竟每一个及分类器使用的都不是一个完整的数据集,而都是处于某一个部分的局部。所以对于Bagging和RF策略中使用的方式是也是使用部分的数据集进行训练基模型,但是这个部分的数据集是随机的有重叠的数据集,这样就可以保证了使用尽可能多的数据样本不至于让每一个基模型效果都特别差。

Bagging的实现方法:首先Bagging中使用的是一种自助采样法,给定一个含有m个样本的数据集,每一次从中取出一个样本,然后记录下来之后再将这个样本放回去,使得每一次都有可能抽到这个样本。通过m次这样的操作之后,我们就可以得到一个m个采样得到的子样本集,然后使用这个样本集去训练我们需要的基模型。这样反复进行了T次之后我们就可以得到的T个基模型,将这T个基模型结合之后就形成了一个ensemble model。

同时,这种算法对于T个基模型对于同一个样本进行预测的结果就是,使用投票法的方式,少数服从多数;如果是每一个类的投票数目都是相同的,那么就使用随机选择一个类别的方式,或者是根据每一个模型的置信度来确定应该选择哪一个类别。

在这里插入图片描述
上面是Bagging算法的实现流程。

这种算法由于是使用并行生成的方式,所以,只是比较消耗算力,时间复杂度是O(m+s),其中O(s)指的是模型进行预测投票的时候耗费的时间复杂度。O(m)指的是训练一个基模型使用时间复杂度。由于O(s)较小可以忽略不计,这种情况下,使用ensemble model就跟使用单个的single model耗费的时间复杂度是基本相同的,所以使用Bagging方式的生成的ensemble model还是很高效的。

Random Forest学习策略

在Random Forest这种学习策略中,这种方式的使用方法是将在Bagging学习策略的基础上进行改进。Bagging方式使用的方式是基于单一的数据样本扰动的方式,而这里的RF不仅仅使用了数据样本扰动的方式,同时也加入了属性扰动的方式,即基于Bagging方式进行改进,加入了属性扰动的多样性方式。

具体的流程就是:

  • 对于树中的每一个结点,首先从属性集中选取 k k k个属性组成一个属性子集,然后从这个属性子集中选择出一个最优的属性作为这个结点划分的属性。这里的 k k
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值