机器学习 - 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(哪个后果的得票最高,就抉择哪个后果,多数遵从少数)
<img src="https://p.pstatp.com/origin/pgc-image/ac49caca08904a6496f45aaa5329d8b4" style="zoom:67%;" />
那为什么要这么做呢?这样难道就比单模的后果更靠谱吗?
更直观的数学阐明
假如有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% accuracy1111111100 = 80% accuracy1011111100 = 70% accuracyThe majority vote ensemble produces:1111111100 = 80% accuracy
当初再来看看,有3个体现较差,但高度不相干的模型:
1111111100 = 80% accuracy0111011101 = 70% accuracy1000101111 = 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...
欢送关注集体公众号:Distinct数说