过拟合

过拟合是指创建的模型与训练集过于匹配(记忆),以致于模型无法根据新数据做出正确的预测。过拟合模型类似于在实验室中表现出色但在现实世界中毫无用处的发明。

在图 11 中,假设每个几何图形都代表方形森林中的一棵树的位置。蓝色菱形标记健康树木的位置,而橙色圆圈标记病树的位置。

图 11. 该图包含约 60 个点,其中一半为健康树,另一半为病树。
            健康的树木主要位于东北象限,但也有一些健康的树木位于西北象限。受病树主要位于东南象限,但少数受病树也蔓延到了其他象限。
图 11. 训练集:方形森林中健康树木和病树的位置。

 

在脑海中画出任何形状(线条、曲线、椭圆形...任何形状)来将健康的树与生病的树分开。然后,展开下一行,检查其中一个可能的分离。

图 12 中显示的复杂形状成功对除两棵树以外的所有树进行了分类。如果我们将这些形状视为模型,那么这是一个非常棒的模型。

或者说有可能?真正出色的模型能够成功对示例进行分类。图 13 显示了当同一模型对测试集中的新示例进行预测时会发生的情况:

图 13。一批新的健康和受病树木叠加在图 12 所示的模型上。模型对许多树进行了错误分类。
图 13. 测试集:用于区分健康树木和患病树木的复杂模型。

 

因此,图 12 中显示的复杂模型在训练集中的表现非常出色,但在测试集中的表现非常糟糕。这是模型对训练集数据过拟合的典型示例。

拟合、过拟合和欠拟合

模型必须能对数据做出良好的预测。也就是说,您要创建一个能“拟合”新数据的模型。

如您所见,过拟合模型在训练集上可以做出出色的预测,但在新数据上做出的预测却不准确。欠拟合模型甚至无法对训练数据做出准确的预测。如果过拟合模型就像在实验室中表现出色但在现实世界中表现不佳的产品,那么欠拟合模型就像在实验室中表现不佳的产品。

图 14.笛卡尔图。x 轴标签为“训练集上的预测质量”。y 轴标签为“对真实数据的预测质量”。曲线从原点开始,逐渐上升,但随后又以同样的速度下降。曲线的左下角部分(对真实数据的预测质量较低,对训练集的预测质量较低)标记为“模型过度拟合”。曲线的右下角部分(对真实数据的预测质量较低,但对训练集的预测质量较高)标记为“过拟合模型”。曲线的峰值(对真实数据的预测质量较高,对训练集的预测质量较低)标记为“适合模型”。
图 14. 欠拟合、拟合和过拟合模型。

 

泛化与过拟合相反。也就是说,泛化能力强的模型可以对新数据做出良好的预测。您的目标是创建一个能够很好地泛化到新数据的模型。

检测过拟合

以下曲线可帮助您检测过拟合:

  • 损失曲线
  • 泛化曲线

损失曲线会将模型的损失与训练迭代次数绘制在图表中。显示两个或更多损失曲线的图表称为泛化曲线。以下泛化曲线显示了两个损失曲线:

图 15. 训练集的损失函数逐渐下降。验证集的损失函数也会下降,但在经过一定次数的迭代后,会开始上升。
图 15. 泛化曲线,强烈暗示过拟合。

 

请注意,这两个损失曲线最初的行为类似,然后开始分歧。也就是说,经过一定次数的迭代后,训练集的损失会下降或保持稳定(收敛),但验证集的损失会增加。这表明模型过拟合。

相比之下,适合度较高的模型的泛化曲线会显示两个形状相似的损失曲线。

什么会导致过拟合?

一般来说,过拟合是由以下一种或两种问题导致的:

  • 训练集不能充分代表真实数据(或验证集或测试集)。
  • 模型过于复杂。

泛化条件

模型在训练集中进行训练,但真正检验模型价值的标准是它对新示例(尤其是真实数据)的预测效果如何。在开发模型时,测试集可用作真实数据的替代项。训练能够很好地泛化到新数据的模型,需要满足以下数据集条件:

  • 示例必须独立且等概率分布,这是一种巧妙的方式,表示您的示例不能相互影响。
  • 数据集是平稳的,这意味着数据集不会随时间的推移而发生显著变化。
  • 数据集分区具有相同的分布。也就是说,训练集中的示例在统计上与验证集、测试集和真实数据中的示例相似。

通过以下练习探索上述条件。

练习:检查您的理解情况

请考虑以下数据集分区。
水平条分为三段:70% 属于训练集,15% 属于验证集,15% 属于测试集
What should you do to ensure that the examples in the training set have a similar statistical distribution to the examples in the validation set and the test set?
在对数据集中的示例进行分区之前,请对其进行广泛的随机排列。
可以。良好的示例随机排序会使分区在统计上更有可能相似。
将示例按时间从早到晚排序。
如果数据集中的示例不稳定,则排序会使分区不太相似。
什么也不做。在有足够的示例的情况下,平均法则自然会确保分布在统计上是相似的。
很遗憾,事实并非如此。数据集的某些部分中的示例可能与其他部分中的示例不同。
一家在线播放服务正在开发一个模型,以预测未来三年可能推出的新电视节目的受欢迎程度。该在线播放服务计划使用包含过去十年数亿个示例的数据集来训练模型。此模型会遇到问题吗?
可能。观看者的口味会发生变化,而过去的行为无法预测这种变化。
可以。观看者的口味不会一成不变。这些政策会不断变化。
绝对不会。数据集足够大,可以做出准确的预测。
遗憾的是,观看者的口味是动态变化的。
一般不会。观看者的口味会以可预测的周期性方式发生变化。 借助 10 年的数据,该模型可以对未来趋势做出准确的预测。
虽然娱乐业的某些方面具有一定周期性,但根据过去的娱乐历史训练的模型几乎肯定无法对未来几年做出预测。
一个模型旨在根据某个季节性变化明显的城市在一年中收集的天气数据(温度、和降水量)来预测人们步行一英里所需的时间。即使天气读数会因季节而发生巨大变化,您能否根据此数据集构建和测试模型?
可以,您可以根据此数据集构建和测试模型。 您只需确保数据均匀分区,以便将所有四个季节的数据均匀分布到不同的分区中。
假设该数据集包含足够的温度、露水示例 点和降水量,然后您可以构建并测试模型 这个数据集。 您只需确保数据均匀分区,以便将所有四个季节的数据均匀分布到不同的分区中。

挑战练习

您要创建一个模型,用于预测乘客购买特定路线火车票的理想日期。例如,该模型可能会建议用户在 7 月 8 日购买 7 月 23 日出发的火车票。火车公司每小时更新一次价格,更新依据多种因素,但主要取决于当前的空余座位数。具体来说:

  • 如果有大量空座,票价通常较低。
  • 如果空座非常少,票价通常较高。
您的模型在验证集和测试集上的损失较低,但有时在真实数据上做出的预测非常糟糕。为什么?
点击此处查看答案