1.6 各章内容及其依赖关系
依赖于读者的背景和是否有时间来了解基本原理,读者可以采用不同的方式来阅读本书。图1-7为本书各章之间的依赖关系。
第2章仔细审视各种数据集。这些数据集用于本书中的问题实例,用以说明算法的使用,以及各种算法之间基于性能和其他特征的比较。面对一个新的机器学习问题的起点就是深入专研数据集,深入理解数据集,了解它们的问题和特质。第2章的部分内容就是展示Python中可以用于数据集探索的一些工具集。可以浏览第2章中的部分例子,不需要阅读全部例子就可以了解整个流程,当在后续章节遇到具体的应用实例时,可以返回到第2章阅读相关的部分。
第3章主要介绍机器学习问题中的基本权衡、贯穿本书的关键概念。一个关键概念就是预测问题的数学描述,也会涉及分类和回归问题的差别。第3章也介绍了如何使用样本外(out-of-sample)数据(测试数据)来评估预测模型的性能。样本外数据是指在模型训练过程中不包括的数据。一个好的机器学习实践者要求对一个实际部署的预测模型的性能表现有相对稳定的预估。这就要求使用训练数据集以外的数据来模拟新的数据。第3章将介绍这么做的原因、实现的方法以及这些方法之间如何取舍。另外一个重要的概念就是系统性能的测量方法,第3章将描述这些方法以及它们之间的取舍。对机器学习比较熟悉的读者可以浏览本章,快速略过代码实例,而不需要仔细阅读代码然后运行代码。
第4章介绍训练惩罚回归模型的核心思想,以及基本概念及算法的来源。第3章引入的一些实例导致了惩罚线性回归方法的产生。第4章展示了解决惩罚线性回归训练问题的核心算法代码,以及线性回归方法的几种扩展。一种扩展是将因素变量(factor variable)编码为实数,这样就可以使用线性回归方法。线性回归方法只能用在预测值是数值的情况下,也就是说需要对预测值进行量化。许多实际的重要问题通常的变量是这样的形式:“单身、已婚或离异”等,这种变量对做预测是很有帮助的。如果要引入此种类型的变量(类别变量,categorical variables)到一个线性回归模型,意味着需要设计一种转换方法将类别变量转换为实数变量,第4章将会介绍这些方法。第4章还介绍叫作基扩展(basis expansion)的方法,此方法从非线性回归中获得非线性函数,有时基扩展用于进一步从线性回归中“挤榨”出一些性能的提升。
第5章将第4章介绍的惩罚回归算法应用于第2章提到的问题中。本章概述实现了惩罚回归算法的Python工具包,并用这些工具包来解决问题。本章的目的是尽可能覆盖广泛的各类问题的变体,这样当读者遇到一个问题时,可以找到一个最接近的问题作为借鉴。除了量化并比较预测的性能,第5章也考查这些算法的其他特征。理解特征的选择、特征的重要性(对最终预测结果的贡献)是很重要的,这种理解能力可以加快面临新问题时的开发进程。
第6章关注集成方法。因为集成方法绝大多数情况下基于二元决策树,第一步就是理解训练和使用二元决策树的原则。集成方法的很多特性都是直接继承于二元决策树。基于上述理解,本章介绍3个主要的集成方法: Bagging、提升(boosting)和随机森林。上述每个算法都介绍了使用的基本原则、核心算法的代码,这样读者就会了解如何使用这些算法。
第7章应用集成方法来解决第2章中的问题,然后对各种算法进行对比分析。对比分析的内容包括:预测的性能、训练所需的时间和性能等。所有的算法会给出特征的重要性打分。对于特定的问题会对比分析特征在不同的算法中对预测结果的重要性。
以笔者的经验,向程序员和计算机科学家教授机器学习,代码实例要优于数学公式。这就是本书所采用的方法:提供一些基础的数学知识、算法框架和代码实例来说明算法的关键点。本书讨论的几乎所有的算法都可以在本书或网站上找到代码,这么做的初衷就是让读者能够尽快运行代码并解决面临的实际问题。