首页 » python机器学习 » python机器学习全文在线阅读

《python机器学习》7.1 集成学习

关灯直达底部

集成方法(ensemble method)的目标是:将不同的分类器组合成为一个元分类器,与包含于其中的单个分类器相比,元分类器具有更好的泛化性能。例如:假设我们收集到了10位专家的预测结果,集成方法允许我们以一定策略将这10位专家的预测进行组合,与每位专家单独的预测相比,它具有更好的准确性和鲁棒性。本章我们将介绍几种不同的分类器集成方法。在本节,我们先介绍集成方法是如何工作的,以及它们为何能具备良好的泛化性能。

本章聚焦几种最流行的集成方法,它们都使用了多数投票(majority voting)原则。多数投票原则是指将大多数分类器预测的结果作为最终类标,也就是说,将得票率超过50%的结果作为类标。严格来说,多数投票仅用于二类别分类情形。不过,很容易将多数投票原则推广到多类别分类,也称作简单多数票法(plurality voting)。在此,我们选择得票最多的类标。下图解释了集成10个分类器时,多数及简单多数票法表决的概念,其中每个单独的符号(三角形、正方形和圆)分别代表一个类标:

基于训练集,我们首先训练m个不同的成员分类器(C1,…,Cm)。在多数投票原则下,可集成不同的分类算法,如决策树、支持向量机、逻辑斯谛回归等。此外,我们也可以使用相同的成员分类算法拟合不同的训练子集。这种方法典型的例子就是随机森林算法,它组合了不同的决策树分类器。下图解释了使用多数投票原则的通用集成方法的概念:

想要通过简单的多数投票原则对类标进行预测,我们要汇总所有分类器Cj的预测类标,并选出得票率最高的类标:

例如,在二类别分类中,假定class1=-1、class2=+1,我们可以将多数投票预测表示为:

为了说明集成方法的效果为何好于单个成员分类器,我们借用下组合学中的概念。接下来的例子中,我们假定二类别分类中的n个成员分类器都有相同的出错率ε。此外,假定每个分类器都是独立的,且出错率之间是不相关的。基于这些假设,我们可以将成员分类器集成后的出错概率简单地表示为二项分布的概率密度函数:

其中,是n选k组合的二项式系数。换句话说,我们计算此集成分类器预测结果出错的概率。再来看一个更具体的例子:假定使用11个分类器(n=11),单个分类器出错率为0.25(ε=0.25):

正如我们所见,在满足所有假设的条件下,集成后的出错率(0.034)远远小于单个分类器的出错率(0.25)。请注意,在此演示示例中,当集成分类中分类器个数n为偶数时,若预测结果为五五分,我们则将其以错误对待,不过仅有一半的可能会出现这种情况。为了比较成员分类器在不同出错率的情况下与集成分类器出错率的差异,我们用Python实现其概率密度函数:

实现ensemble_error函数后,在成员分类器出错率介于0.0到1.0范围内,我们可以计算对应集成分类器的出错率,并以函数曲线的形式绘制出它们之间的关系:

从结果图像中可见:当成员分类器出错率低于随机猜测时(ε<0.5),集成分类器的出错率要低于单个分类器。请注意:y轴同时标识了成员分类器的出错率(虚线)和集成分类器的出错率(实线):