文章目录
source:python machine learning 3rd
集成学习是机器学习领域相当重要的一个概念,本篇文章中所关注的集成学习就是使用多个模型,采用同一训练集进行训练后,对样本运行多数投票的方式来确定分类,如果你不关注多数投票而是渴求更加高深莫测的算法,那么这篇基础性的文章将不值得你花费时间
如果完全掌握集成学习的是你的目标,阅读原著会带来更好的效果:)
集成学习,who are you?
我们对集成学习首先要有一个整体的把握和初步的了解,为此,以下几个概念需要重点掌握
集成(ensembles)
集成顾名思义,就是多个不同的模型所构成的集合,而如何获得集成则因具体的集成学习算法决定,这将在我们后文中提到。
总体而言,有两种思路可以帮助我们获得集成:
- 同一数据集,同一训练集,不同预测模型,比如使用逻辑回归,SVM,适应机等算法模型对同一组训练集进行训练后,这些不同的算法模型就组成了一组集成
- 同一数据集,不同训练集,同一预测模型, 最典型的就是随机森林,将训练集分成多个子集,模型算法相同,不同子集训练出来的各个模型组成一组集成
多数投票
多数投票是集成学习中最有效,最常用的决策机制,而且它同样可以运用到多类分类问题中:
- 绝对多数(majority):应用于二分类问题,样本分类结果为总投票中超过50%的分类
- 相对多数(plurality):应用于多类分类问题,样本分类结果为总投票中相对其它投票而言票数最多的分类
wrap up
拥有了集成和多数投票,集成学习算法对新数据进行预测就是顺水推舟的事情了,一图以弊之:
集成学习,要你何用?
大幅排版已经飘过,但谁能告诉我为什么要使用这玩意?
不妨假设一个集成中有11个模型,平均预测准确度为0.25,于是,将这个模型视为一个11重伯努利问题,开动数学脑筋,我们可以将预测错误的概率用如下方式表达:
P ( y ≥ k ) = ∑ k n ⟨ k n ⟩ ε k ( 1 − ε ) n − k = ε ensemble P(y \geq k)=\sum_{k}^{n}\left\langle_{k}^{n}\right\rangle \varepsilon^{k}(1-\varepsilon)^{n-k}=\varepsilon_{\text {ensemble }} P(y≥k)=k∑n⟨kn⟩εk(1−ε)n−k=εensemble
于是乎:
P ( y ≥ k ) = ∑ k = 6 11 C 11 k 0.2 5 k ( 1 − 0.25 ) 11 − k = 0.034 P(y \geq k)=\sum_{k=6}^{11}C_{11}^k 0.25^{k}(1-0.25)^{11-k}=0.034 P(y≥k)=k=6∑11C