其它章节内容请见机器学习之PyTorch和Scikit-Learn
上一章中,我们专注于调优和评估不同的分类模型的最佳实践。本章中,我们将基于这些技术,并探索构建一组分类器的方法,这些方法通常比各个成员具备更好的预测性能。本章我们学习的主要内容有:
- 基于多数投票做出预测
- 使用装袋法重复从训练数据集中随机抽取组合降低过拟合
- 应用提升方法通过弱学习器构建强大的模型,并从错误中学习
集成学习
集成方法的目标是将不同的分类器组合成一个元分类器,其泛化性能比每个单独的分类器都要好。例如,假设我们从10个专家那里采集了预测结果,集成方法将允许我们策略性地组合这些专家的预测结果,得出比每个专家的预测更准确和健壮的预测结果。读者在本章稍后将看了解到,有多种方法可创建分类器集成。本节将介绍集成方法的基本原理以及为什么通常认为它们具有良好的泛化表现。
本章中,我们将重点介绍使用多数投票原则的最流行的集成方法。多数投票只是说我们选择由多数分类器预测的类标签,即获得超过50%投票的类标签。严格来说,“多数投票”一词仅适用于二分类。但将多数投票原则推广到多类别场景非常容易,这称为相对多数投票(plurality voting)。(在英国,人们通过“绝对多数”和“相对多数”这些术语来区分多数投票和相对多数投票。)
这里,我们选择获得最多票数(众数)的类标签。图7.1表明一个由集成10个分类器的多数投票和相对多数投票的概念,其中每个单独符号(三角形、正方形和圆形)代表单独类标签。
图7.1: 各种投票概念
使用训练数据集,我们首先训练m个分类器(C1,…,Cm)。根据具体的技术,集成可以由不同的分类算法构建,例如决策树、支持向量机、逻辑回归分类器等。另外,我们还可以使用相同的基础分类算法,来拟合训练数据集的不同子集。其中一个著名的例子是结合了不同决策树分类器的随机森林算法,我们在第3章 使用Scikit-Learn的机器学习分类器之旅中对其进行过介绍。图7.2说明了使用多数投票的通用集成方法的概念:
图7.2: 一种通用集成方法
要通过简单的多数或相对多数投票来预测一个类标签,我们可以结合每个分类器Cj的预测类标签,并选择获得最多票数的类标签$\hat{y}$:
(在统计学中,众数是集合中出现频率最高的事件或结果。例如,mode{1, 2, 1, 1, 2, 4, 5, 4} = 1。)
例如,在一个二分类任务中,class1 = -1,class2 = +1,我们可以将多数投票预测写作:
翻译整理中…