Python机器学习:7.1 集成学习

Posted aibbt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python机器学习:7.1 集成学习相关的知识,希望对你有一定的参考价值。

集成学习背后的思想是将不同的分类器进行组合得到一个元分类器,这个元分类器相对于单个分类器拥有更好的泛化性能。比如,假设我们从10位专家那里分别得到了对于某个事件的预测结果,集成学习能够对这10个预测结果进行组合,得到一个更准确的预测结果。

后面我们会学到,有不同的方法来创建集成模型,这一节我们先解决一个基本的问题:为什么要用集成学习?她为什么就比单个模型效果要好呢?

本书是为初学者打造的,所以集成学习这里我们也只关注最基本的集成方法:投票法(majority voting)。投票法意味着我们在得到最后的预测类别时,看看哪个类别是大多数单分类器都预测的,这里的大多数一般是大于50%。更严格来说,投票法只适用于二分类,当然他很容易就扩展到多分类情况: 多数表决(plurality voting).

下图展示了一个投票法的例子,一共10个基本分类器:

技术分享图片

我们先用训练集训练m个不同的分类器技术分享图片, 这里的分类器可以是决策树、SVM或者LR等。我们当然也可以用同一种分类器,只不过在训练每一个模型时用不同的参数或者不同的训练集(比如自主采样法)。随机森林就是一个采用这种策略的例子,它由不同的决策树模型构成。这图展示了用投票策略的集成方法步骤:

技术分享图片

投票策略非常简单,我们收集每个单分类器技术分享图片的预测类别技术分享图片,将票数最多的技术分享图片作为预测结果:

技术分享图片

以二分类为例,类别class1=-1, class2=+1, 投票预测的过程如下, 把每个单分类器的预测结果相加,如果值大于0,预测结果为正类,否则为负类:

技术分享图片

读到这里,我想大家都有一个疑问:凭啥集成学习就比单分类器效果好?道理很简单(一点点组合数学知识),假设对于一个二分类问题,有n个单分类器,每个单分类器有相等的错误率技术分享图片,并且单分类器之间相互独立,错误率也不相关。 有了这些假设,我们可以计算集成模型的错误概率:

技术分享图片

如果n=11,错误率为0.25,要想集成结果预测错误,至少要有6个单分类器预测结果不正确,错误概率是:

技术分享图片

集成结果错误率才0.034哦,比0.25小太多。继承结果比单分类器好,也是有前提的,就是你这个单分类器的能力不能太差,至少要比随机猜测的结果好一点,至少。

从下图可以看出,只要单分类器的表现不太差,集成学习的结果总是要好于单分类器的。

技术分享图片

Python机器学习中文版目录(http://www.aibbt.com/a/20787.html)

转载请注明出处,Python机器学习(http://www.aibbt.com/a/pythonmachinelearning/)

以上是关于Python机器学习:7.1 集成学习的主要内容,如果未能解决你的问题,请参考以下文章

独家 | 利用Python的混合集成机器学习(附链接)

[机器学习python实践]Sklearn实现集成

Python机器学习实战决策树与集成学习——集成学习GBDT

Python机器学习实战决策树与集成学习——集成学习GBDT应用实例

吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型

吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型