Python机器学习(原书第3版)
上QQ阅读APP看书,第一时间看更新

1.4 构建机器学习系统的路线图

在前面的章节中,我们讨论了机器学习的基本概念及其三种不同类型。本节将讨论机器学习系统中与算法相关的其他重要部分。图1-9展示了在预测建模过程中使用机器学习的典型工作流程,我们将在后续几个小节中详细讨论。

025-01

图 1-9

1.4.1 预处理——整理数据

让我们从构建机器学习系统的路线图开始讨论。原始数据很少以能满足学习算法的最佳性能所需要的理想形式出现。因此,数据的预处理是所有机器学习应用中最关键的步骤之一。

以前一节的鸢尾花数据集为例,我们可以把原始数据视为欲从中提取有意义特征的一系列花朵的图像。有意义的特征可能是颜色、色调、强度、高度、长度和宽度。

为了获得模型的最佳性能,许多机器学习算法要求所选特征的测量结果单位相同,通常通过把特征数据变换到[0,1]的取值范围,或者均值为0、方差为1的标准正态分布来实现,后面的章节将会对此进行介绍。

某些选定的特征相互之间可能高度相关,因此在某种程度上呈现冗余的现象。在这种情况下,降维技术对于将特征压缩到低维子空间非常有价值。降低特征空间维数的好处在于减少存储空间,提高算法的运行速度。在某些情况下,如果数据集包含大量不相关的特征或噪声,换句话说,如果数据集的信噪比较低,那么降维也可以提高模型的预测性能。

为了确定机器学习算法不仅在训练数据集上表现良好,而且对新数据也有很好的适应性,我们希望将数据集随机分成单独的训练数据集和测试数据集。用训练数据集来训练和优化机器学习模型,同时把测试数据集保留到最后以评估最终的模型。

1.4.2 训练和选择预测模型

在后面的章节中可以看到,为了完成各种不同的任务,目前开发了许多不同的机器学习算法。根据David Wolpert著名的“天下没有免费午餐”这个定理,我们可以得出机器学习绝非“免费的”这个重要结论[1]还可以把这个概念与俗语相关联,“如果你只有一把锤子,你就会把所有的东西看成钉子,这或许是种诱惑”(Abraham Maslow,1966)。例如,每个分类算法都存在着固有的偏置,如果不对分类任务做任何假设,没有哪个分类模型会占上风。因此,在实践中,至少要比较几种不同的算法,以便训练和选择性能最好的模型。但在比较不同的模型之前,我们首先要确定度量性能的指标。通常用分类准确率作为度量指标,其定义为正确分类的个体占所有个体的百分比。

有人可能会问:“如果不用测试数据集进行模型选择,而将其保留用于最终的模型评估,那么我们怎么知道哪个模型在最终测试数据集和真实数据上表现得更好呢?”为了解决嵌套在这个问题中的问题,我们可以采用不同的交叉验证技术,将数据集进一步拆分为训练数据集和验证数据集,以评估模型的泛化性能。最后,我们也不能期望软件库所提供的不同机器学习算法的默认参数值对特定问题最优。因此,后续章节将会频繁使用超参数调优技术来调优模型的性能。

我们可以把超参数看作不是从数据中学习的参数,而是模型的调节旋钮,可以来回旋转调整模型的性能。后面章节中的实际示例会对此有更加清楚的说明。

1.4.3 评估模型并对未曾谋面的数据进行预测

在训练数据集上拟合并选择模型之后,我们可以用测试数据集来评估它在从来没见过的新数据上的表现,以评估泛化误差。如果我们对模型的表现满意,那么就可以用它来预测未来的新数据。请注意,前面提到的诸如特征缩放和降维过程中的参数,仅能从训练数据集获得,相同的参数会被应用到测试数据集,以及任何其他的新数据集。否则,对测试数据集的性能评估可能会过于乐观。