本文主要是介绍模型融合集成学习 -- 028,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
内容目录
一、模型融合简介1、用模型融合算法的原因2、模型融合基础算法二、模型融合经典算法Bagging和Boosting的1、Bagging2、Boosting3、Bagging,Boosting二者之间的区别4、Rand forest与bagging的区别
一、模型融合简介
1、用模型融合算法的原因
它不是具体的指某一个算法,而是一种把多个弱模型融合合并在一起变成一个强模型的思想,也称为集成学习(Ensemble Learning):
1、单个模型容易过拟合,多个模型融合可以提高范化能力
2、单个模型预测能力不高,多个模型往往能提高预测能力
3、对于数据集过大或过小,可以分别进行划分和有放回的操作,产生不同的数据子集,然后通过数据子集训练不同的分类模型,最终合并成一个大的分类器
4、对于多个异构的特征集的时候,很难进行融合,可以考虑每个数据集构建一个分类模型,然后将多个模型融合
5、模型融合算法成功的关键在于能保证弱分类器(弱模型)的多样性,融合不稳定的学习算法能得到更明显的性能提升
2、模型融合基础算法
投票法(Voting):如果是分类模型,每个模型都会给出一个类别预测结果,通过投票的方式,按照少数服从多数的原则融合得到一个新的预测结果。
均值法(Averaging):如果是回归模型,每个模型给出的预测结果都是数值型的,这时候我们可以通过求所有子模型的预测结果的均值作为最终的融合结果。
Bagging + 决策树=随机森林
Boosting + 决策树=提升树
Gradient Boosting+决策树=GBDT总结
二、模型融合经典算法Bagging和Boosting的
1、Bagging
Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。
Bagging即套袋法,其算法过程如下:
从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的);
每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
#参考一:https://blog.csdn.net/u010986753/article/details/102495494#参考二:https://blog.csdn.net/u010986753/article/details/100144214
2、Boosting
Boosting融合在每次训练模型时更关注上一次的模型错判的样例,并且会给这些错判的样例更大的权重,这样做的目的是就是为了加强对错判样本的学习,让模型通过不断的迭代,效果越来越好。最终将多次迭代的训练得到的弱模型进行加权求和,得到最终的强模型。因为Boosting框架各模型间是有依赖关系存在的,所以它是一种串行的融合方法。
AdaBoosting是Boosting思想的一种改进型方法,在邮件过滤、文本分类方面都有很好的性能。AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)
梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)
3、Bagging,Boosting二者之间的区别
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成,即个体学习器间不存在强依赖关系,可同时生成的并行化方法。
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。即个体学习器间存在强依赖关系,不可同时生成的序列化方法。
5)bagging减少variance,而boosting是减少bias
Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立)。另一方面,若各子模型独立,则有,此时可以显著降低variance。若各子模型完全相同,则此时不会降低variance。bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance。
boosting是在sequential地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。
4、Rand forest与bagging的区别
1)Rand forest是选与输入样本的数目相同多的次数(可能一个样本会被选取多次,同时也会造成一些样本不会被选取到),而bagging一般选取比输入样本的数目少的样本;
2)bagging是用全部特征来得到分类器,而rand forest是需要从全部特征中选取其中的一部分来训练得到分类器;一般Rand forest效果比bagging效果好!
About Me:小婷儿
● 本文作者:小婷儿,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用
● 作者博客地址:https://blog.csdn.net/u010986753
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● 微信:tinghai87605025 联系我加微信群
● QQ:87605025
● QQ交流群py_data :483766429
● 公众号:python宝 或 DB宝
● 提供OCP、OCM和高可用最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
如果你觉得到文章对您有帮助,点击下方我的头像,赞赏我哦!
有您的支持,小婷儿一定会越来越好!
这篇关于模型融合集成学习 -- 028的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!