线性回归的局限性
了解线性回归的局限性,尤其是在存在离群值的情况下。
迈向目标
我们从线性回归开始进入机器学习的世界。现在,我们将利用已掌握的知识(以及已有代码)继续前进,朝着我们的最终目标迈进:构建一个能够识别图像的程序。
本章介绍实现图像识别的第一步。我们将构建一个分类器(classifier),即一种将数据划分到有限类别中的程序。与输出数值标签不同,分类器处理的是类别型标签。例如,对比我们之前的披萨销量预测器和一个植物识别系统:披萨预测器输出的是一个数值,而植物分类器则会从预设的物种列表中输出某个具体的植物名称。
本节课将从小处着手:我们的分类器是一个仅能识别两类的二分类器(binary classifier)。许多实际中有用的系统都基于二分类。例如,第一章中提到的肺炎检测器,就是将X光扫描结果划分为“肺炎”或“无肺炎”两个类别之一。
我们将用二分类取代程序中的线性回归。不过,本章并不会直接涉及计算机视觉问题,而是先解决一个与图像无关的分类任务。在下一章中,我们会把这个二分类器应用到图像识别问题上。
在深入之前,请注意术语上的细微变化。此前,我们一直将学习系统的流程分为训练(training)和预测(prediction)两个阶段。从现在起,我们将这两个阶段称为训练和分类,以强调预测结果是类别标签而非数值。分类本质上是一种特定类型的预测,因此我们使用更精确的术语。
线性回归的局限性
披萨店的朋友最后一次向我们求助。这家披萨店位于城市的一个繁华街区。在生意繁忙的夜晚,常有喧闹的顾客聚集在店门口,邻居不堪其扰,最终会报警。
店主怀疑,影响披萨销量的因素(如气温和游客数量)同样会影响店门口吵闹顾客的数量,从而决定是否可能招来警察。他希望提前知道当晚是否有报警风险,以便采取应对措施,比如出门劝说人们降低音量。
和往常一样,店主给我们发来一份带标签的数据文件。以下是前几行数据:
| 预订数 | 气温 | 游客数 | 报警 |
|---|---|---|---|
| 13 | 26 | 9 | 1 |
| 2 | 14 | 6 | 0 |
| 14 | 20 | 3 | 1 |
| 23 | 25 | 9 | 1 |
| 13 | 24 | 8 | 1 |
| 1 | 13 | 2 | 0 |
这些数据与我们之前用于训练线性回归模型的数据相同,唯一的区别在于标签:0 表示安静、平安无事的夜晚,1 表示警察到场。Roberto 希望有一个系统能预测最后一列中的这种二元值。
这是一个典型的分类问题,因为我们希望将数据划分为 0 或 1 两类。我们可能会想沿用之前使用的代码来解决这个问题。然而,这种方法行不通,原因如下。
线性回归的核心思想是用一条直线去拟合数据,如下图所示:
线性回归隐含了一个前提假设:数据点大致呈线性排列。如果数据点分布在曲线上,或随机散落,则无法用直线有效拟合。没有合适的拟合线,就无法进行准确预测。这一逻辑同样适用于多个输入变量的情况——无论是画一条线、一个平面,还是更高维的空间,我们都要求数据点能够被这类几何结构合理逼近。否则,线性回归就不适用。
现在来看店主提供的数据。为了简化分析,我们暂时忽略“气温”和“游客数”两列,仅绘制“预订数”与标签之间的关系图,如下所示:
仅从这一个输入变量就能看出,线性回归并不适合处理此类类别型数据。当数据点根本没有线性趋势时,我们该如何画出一条有意义的直线呢?
不仅线性回归对类别数据的拟合效果差,而且这种拟合还极不稳定。所谓“不稳定”,是指模型对异常值非常敏感。举例来说,假设 Roberto 的数据中存在一个异常值——某天披萨店预订量极高,但由于警方正在全市执行重大任务,并未前来处理。如果我们把这个异常样本加入数据集,线性回归生成的直线会发生剧烈变动,如下图所示:
可以看到,异常值的存在导致线性回归模型生成了完全不同的直线,进而产生截然不同的预测结果。因此,这个模型不仅对数据的拟合效果差,还对异常数据极为敏感。
总而言之,线性回归并不适合处理像这样的类别型数据。