我的主页:晴天qt01的博客_CSDN博客-数据分析师领域博主
目前进度:第四部分【机器学习算法】
集成学习*
前言引入:
我们购买新车的时候会走进一家汽车店,然后按照经销商的建议购买吗?这应该不大可能。
更多的时候是浏览一些网站,比较不同的车型,功能,和价格,也可能问问朋友和同事,。我们下结论都是考虑他人的意见,然后下决定
机器学习中的集成学习模型就是类似的想法。
他们将多个模型的决策结合起来,提高预测结果。
案例:
假如你是一个电影的导演,你已经创作了一部非常重要且有趣的话题电影,你现在希望得到他人对电影的评价,反馈。你有什么方法呢
让一位好朋友给你评分。
你的好朋友可能会考虑到你们的关系,不会给你糟糕的电影提供1星评分刺伤你的心。
你可以让5位同事评价电影。
这应该是比上一个选择好许多的方法,可以更好了解电影的评级,比较诚实的评级。但是这5个人里面不一定是最佳的裁判
你可以让50个人评价你的电影。
有一些人是你的朋友,有一些人可能是你的同事,一些可能是完全陌生的。这种情况的回答普遍会更加的多元化,因为你拥有不同技能的人,事实证明,这是获得最佳评价的方法。
多个决策者比一个决策者可能会做出更好的决策,各种模型的整合也是如此,机器学习这种多样化就是通过集成学习的技术实现的
集成学习模型通过将多个学习器进行组合,常可获取比单一学习器更好的泛化能力
集成学习的方法在全球各大机器学习、数据挖掘竞赛中使用的非常广泛,其概念和思想也是风靡学术界和工业界。
如果要对其进行分类,可以大致划分为:
模型融合
机器学习元算法
模型融合是一个再学习的过程,将训练出的强学习器(比如把朴素贝叶斯,神经网络,SVM,逻辑回归,这些算法都竭尽所能的把数据进行分类。)组合起来进一步提高性能,也就是把不同的专家意见组合起来继续预测。
机器学习元算法,是属于弱学习器的算法。可能算法只有一种,通过不同的训练数据,用相同的算法(一种算法),进行预测结果的组合,当做我们的预测模型。从原始数据抽样模型的。
集成学习概述
集成学习的种类。
模型融合(强学习器)
多数法,平均法,加权平均法(前3个比较简单),堆叠法(stacking),混合法(Blending)
机器学习元算法(弱学习器):
袋装法:(bagging)
袋装通用法
随机森林
提升法
ADAboost
XGBoost
Gradient Boost
模型融合(强学习器融合)概述
模型融合的思想也很符合大多数人的直觉
训练出多个功能强大的学习器
为了提高学习器的能力,把几个学习器组合起来。
模型融合的
好处:增强了模型的预测以及泛化能力
坏处:多模型的学习加上再学习会显著的增加计算的代价(也就是耗费时间)
我们在训练数据得到的模型进行融合,如果它们好坏参差不齐,那么集成模型的性能可能会比好的坏一些,坏的好一些
不过在测试数据中,泛化能力比较好。也就是稳定性比较高。
所以我们什么时候才能让它得到泛化能力最好,我们需要每个“学习器”好而不同。
好而不同是什么:就是比如现在要把10笔数据进行分堆,可能naïve bayes分对了5个,神经网络分对了后5个,就是分错的数据不要是同一堆,一致的话融合就没有用,分错的数据不一致,还准确率都还不错,那么合并起来之后。如果每个学习器都好,而且准确率都不错的前提下,我们会取概率大的来猜,那么模型融合就可以做到更好,决策的更精准。
好是代表性能好,不同是代表模型分类类别不同。
模型融合方法:
多数法
多数法使用在分类问题,
使用多个模型对数据进行预测,每个模型的预测视为投票。
大多数模型得到的票,作为预测结果
例如我们现在让5位同事评价你的电影,2个5分,3个4分,所以最终认为取结果众数。
平均法:
和多少法类似,不过采用的是所以模型的平均值来作为预测结果。
平均法既可以用于分类问题也可以用于回归问题,分类问题可以吧结果的概率输出,用概率来平均。(平均要用数字平均)
所以这部影片的评分为4.4.
加权平均法。
这是上面平均法的扩展,根据模型的重要性分配不同的权重。
比如你的两个同事是评价专业者,其他同事则没有这个经验。那么这两个同事的评价就相对重要些。
如图,我们给前两个同事0.23的权重。其他只有0.18的权重值。
另外我们加权平均法的权重一般要为1.0。
最后的结果就是4.41,累乘后求和。
堆叠法:
利用多个模型比如(SVM,KNN,决策树)来预测构建新模型。因为方法比较复杂我们拿案例来说明。
这里有训练数据和测试数据,训练数据用的是4个交叉验证。把训练数据切成4份。测试数据就不用
第一部分我们采用决策树
用前3个部分的数据来训练决策树模型,然后用决策树模型来预测第4个模型。
第二部分我们用决策树
使用flod134来训练决策树模型,用模型来预测fold2
第二部分我们用决策树
使用flod234来训练决策树模型,用模型来预测fold1
…
最后得到右边的预测结果图。
如果我们需要3个模型,右边的预测结果图就会有3条
然后我们用第一个模型对测试数据进行预测
其他的2个模型都是这么做
于是我们得到结果图
第二个图是模型对训练数据的预测结果,第4个图是3个模型对测试数据的预测结果
我们把第二个图用逻辑回归模型进行训练。再用逻辑回归去预测测试数据集的结果。
这个逻辑回归模型就是我们的预测模型了
它比较特别的地方是,它不是那全部的训练数据来训练模型,而是取其中的大部分用于训练,小部分的数据用于测试
那么我们就可以得到这个模式对每一笔数据的预测概率值,这一整个训练数据的含金量就相当于测试数据。但是它参与的模型的建构,所以还是需要测试数据用于训练。
我们把各个模型训练出的结果当成新特征来训练新模型,预测测试数据
这个堆叠法的名称大家应该立即了,就是在模型的头上堆叠模型。
这个是比较复杂的模型(stacking),因为效果还不错,所以大家也喜欢用。但是过程相对复杂。
最后测试数据在喂到新特征建立的模型来测试
混合法:
Blending与堆叠法类似,但是混合法只使用验证集来重新建模并进行预测。
Blending相当于少了交叉验证的部分,
案例:
首先我们把数据分为2部分,训练数据集合测试数据集,训练数据集再分为两个部分,base_train_data 和holdout set
我们拿base_train_data来进行建立需要的多个模型holdout set用多个模型预测结果
然后再用多个模型预测测试集结果。然后再拿训练数据中的holdout set预测数据作为新特征来建立模型,用这个模型再预测测试集结果
总结:
什么强学习器的融合方法说明了5种,前3种是比较简单。后两种方法比较复杂,是模型上再套模型的方法来做融合。Stacking还更复杂些
明天我们说弱学习器的机器学习元算法,它的效果经常要比强学习器效果好很多。
版权归原作者 晴天qt01 所有, 如有侵权,请联系我们删除。