机器学习 - Ensemble Model

机器学习 - Ensemble Model 机器学习 - Ensemble Model
文章图片

机器学习 - Ensemble Model
文章图片

这里有 M1到 Mn 的n个单模,给出这n个模型预测结果分别为 pred1~ predn。我们把所有模型结果结合起来,形成单一的模型。
现在的问题是,如何组合这些单模预测结果,来提升最终集成模型的准确性、减少泛化误差。这就是Ensemble的艺术。
在现实的生产环境的数据集上训练模型,可能是一个非常具有挑战性的问题,因为可能包含许多潜在分布
某些模型可以很好地模拟这些数据的一个方面,而其他模型则可以很好地模拟另一个方面。集成算法提供了一个解决方案,我们可以训练这些模型,并作出合成预测,其中最终的准确度比每个单独的模型好(三个臭皮匠顶个诸葛亮)。
实例 这里我们先使用泰坦尼克号幸存的例子。
假设有3个模型,m1、m2、m3,比如m1是逻辑回归,m2是KNN,m3是SVM。我们得到了3个模型的结果,不同模型的预测结果都不太一样。
机器学习 - Ensemble Model
文章图片

要怎么去更科学地“合成”1个结果呢?下面介绍几种不同的集成方法:
Max Voting 最简单的方法:从每个模型中获取最终结果,然后获得每个模型的最大投票权。
比如下面的3个模型,有2个模型预测结果为1,那final pred就是1(哪个结果的得票最高,就选择哪个结果,少数服从多数)
机器学习 - Ensemble Model
文章图片

那为什么要这么做呢?这样难道就比单模的结果更靠谱吗?
更直观的数学说明
假设有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);
基本模型有70% 的准确度,但集成模型有78% 的准确度!
另外,增加更多的分类器,集成效果通常也会提高。投票集成可降低错误率,并且提升低相关模型的预测,适合于多分类任务
相关性
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。理想情况下,希望类之间平滑地分割,而单个模型的预测可能有点粗糙了。
机器学习 - Ensemble Model
文章图片

上图中,绿线从噪声数据中学习,而黑线有更好的分割效果。平均多条不同的绿线会更接近黑线。
构建机器学习模型的目标不是去理解训练数据,而是很好地概括新的数据,也就是模型要在测试集有较好的泛化能力。
同样有3个模型,最终预测的结果取均值(很好理解,不多讲了)
机器学习 - Ensemble Model
文章图片

Weighted Averaging 有平均法,自然而然就会有加权平均。如果一个模型表现好,就给更高的权重,相反,则权重更低。
还是有3个模型,根据模型在验证集上的R方大小排序,权重等于排序大小。
M2的效果最差,权重等于1;M1、M3效果最好,权重都等于2。
机器学习 - Ensemble Model
文章图片

模型结果进行加权平均:
机器学习 - Ensemble Model
文章图片

Rank averaging 上面的方法是加权平均,会发现给模型的权重是人为根据验证集上的评估指标的排序给的(比如M1、M3都给了权重2)。
现在介绍的方法,是对加权平均的一点改动。
  1. 根据不同模型在验证集上的表现进行排序;
机器学习 - Ensemble Model
文章图片

  1. 根据排序,计算权重(R-square / Rank),这里相当于做了标准化处理
机器学习 - Ensemble Model
文章图片

  1. 模型结果加权求和;
机器学习 - Ensemble Model
文章图片

参考链接
  1. https://medium.com/weightsand...
  2. https://mlwave.com/kaggle-ens...
欢迎关注个人公众号:Distinct数说
【机器学习 - Ensemble Model】机器学习 - Ensemble Model
文章图片

    推荐阅读