机器学习 - Ensemble Model
机器学习 - Ensemble Model
文章图片
文章图片
这里有 M1到 Mn 的n个单模,给出这n个模型预测结果分别为 pred1~ predn。我们把所有模型结果结合起来,形成单一的模型。
现在的问题是,如何组合这些单模预测结果,来提升最终集成模型的准确性、减少泛化误差。这就是Ensemble的艺术。
在现实的生产环境的数据集上训练模型,可能是一个非常具有挑战性的问题,因为可能包含许多潜在分布
。
某些模型可以很好地模拟这些数据的一个方面,而其他模型则可以很好地模拟另一个方面。集成算法提供了一个解决方案,我们可以训练这些模型,并作出合成预测,其中最终的准确度比每个单独的模型好(三个臭皮匠顶个诸葛亮)。
实例
这里我们先使用泰坦尼克号幸存的例子。
假设有3个模型,m1、m2、m3,比如m1是逻辑回归,m2是KNN,m3是SVM。我们得到了3个模型的结果,不同模型的预测结果都不太一样。
文章图片
要怎么去更科学地“合成”1个结果呢?下面介绍几种不同的集成方法:
Max Voting
最简单的方法:从每个模型中获取最终结果,然后获得每个模型的最大投票权。
比如下面的3个模型,有2个模型预测结果为1,那final pred就是1(哪个结果的得票最高,就选择哪个结果,少数服从多数)
文章图片
那为什么要这么做呢?这样难道就比单模的结果更靠谱吗?
更直观的数学说明
假设有3个二进制分类器(a,b,c) ,准确率为70% 。现在将这些分类器视为伪随机数生成器,它输出“1”的概率为70% 和输出“0”的概率为30%。
对于3个分类器的多数投票,我们可以预期4个结果:
所有可能的预测情况:All three are correct
0.7 * 0.7 * 0.7
= 0.3429Two are correct
0.7 * 0.7 * 0.3
+ 0.7 * 0.3 * 0.7
+ 0.3 * 0.7 * 0.7
= 0.4409Two are wrong
0.3 * 0.3 * 0.7
+ 0.3 * 0.7 * 0.3
+ 0.7 * 0.3 * 0.3
= 0.189All three are wrong
0.3 * 0.3 * 0.3
= 0.027
- 大多数情况下,(约44%)多数投票者纠正了一个错误;
- 这个多数票集合的正确率平均为78% (0.3429 + 0.4409 = 0.7838);
另外,增加更多的分类器,集成效果通常也会提高。投票集成可降低错误率,并且提升低相关模型的预测,适合于
多分类任务
。相关性
A good ensemble contains high performing models which are less correlated.三个高度相关的模型在没有改进的情况下产生了一个整体:
1111111100 = 80% accuracy
1111111100 = 80% accuracy
1011111100 = 70% accuracyThe majority vote ensemble produces:
1111111100 = 80% accuracy
现在再来看看,有3个表现较差,但高度不相关的模型:
1111111100 = 80% accuracy
0111011101 = 70% accuracy
1000101111 = 60% accuracyThe majority vote ensemble produces:
1111111101 = 90% accuracy
如果集合模型之间较低的相关性,似乎可以提升纠错能力。
Averaging 平均法适用范围就更广了,分类、回归任务都可以使用,在不同的度量下也适用(AUC、平方误差或对数损失)。
平均预测通常可以
减少overfit
。理想情况下,希望类之间平滑地分割,而单个模型的预测可能有点粗糙了。文章图片
上图中,绿线从噪声数据中学习,而黑线有更好的分割效果。平均多条不同的绿线会更接近黑线。
构建机器学习模型的目标不是去理解训练数据,而是很好地概括新的数据,也就是模型要在测试集有较好的泛化能力。
同样有3个模型,最终预测的结果取均值(很好理解,不多讲了)
文章图片
Weighted Averaging 有平均法,自然而然就会有加权平均。
如果一个模型表现好,就给更高的权重
,相反,则权重更低。还是有3个模型,根据模型在验证集上的R方大小排序,权重等于排序大小。
M2的效果最差,权重等于1;M1、M3效果最好,权重都等于2。
文章图片
模型结果进行加权平均:
文章图片
Rank averaging 上面的方法是加权平均,会发现给模型的权重是人为根据验证集上的评估指标的排序给的(比如M1、M3都给了权重2)。
现在介绍的方法,是对加权平均的一点改动。
- 根据不同模型在验证集上的表现进行排序;
文章图片
- 根据排序,计算权重(R-square / Rank),这里相当于做了
标准化处理
;
文章图片
- 模型结果加权求和;
文章图片
参考链接
- https://medium.com/weightsand...
- https://mlwave.com/kaggle-ens...
【机器学习 - Ensemble Model】
文章图片
推荐阅读
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习
- 【韩语学习】(韩语随堂笔记整理)
- 焦点学习田源分享第267天《来访》