测试集的细微差别

已完成

测试集被视为机器学习大多数方面的最佳做法,尽管该领域仍不成熟,因此通常会对其表现和适用场景有所争议。 我们来了解一些注意事项。

测试集可能会产生误导

虽然测试集有助于识别过度训练,但它们可能会提供错误的置信度。 具体而言,只有在测试集反映了我们期望在现实世界中看到的数据时,测试集才有用。 例如,我们的测试集很小,它不能代表我们在现实世界中可能看到的各种数据。 测试数据集的好坏也取决于它们的来源。 如果测试数据集来自一个存在偏差的来源,那么我们的指标将不能反映出事物在现实世界中的表现。

例如,假设我们尝试找出救援次数与狗开始训练的年龄之间的关系。 如果我们的测试集只有三只狗,那么这些狗可能不能很好地代表现实世界中的各种工作犬。 此外,假设我们是从一个不知道如何训练幼犬的单个繁育者那里获得的测试集。 我们的模型可能会预测年龄较大的狗最适合训练,我们的测试数据集也会证实这一点,而事实上,其他训练员可能在训练年轻动物方面取得了巨大成功。

测试集不是免费的

我们已经了解到,训练数据量越大,模型过度拟合的可能性就越小。 同样,测试集越大,测试结果的可信度就越高。 但是,我们通常使用有限数量的数据,并且数据点不可能同时出现在训练集和测试集中。 这意味着,当我们获得更大的测试集时,我们会获得较小的训练数据集,反之亦然。 具体应牺牲多少数据量以显示在测试数据集中,是视具体情况而定的,根据可用的数据量,任何介于 10% 到 50% 之间的数据都是比较常见的。

训练和测试并不是唯一的方法

值得注意的是,训练和测试很常见,但不是唯一广泛使用的方法。 有两种更常见的替代方法:维持方法和统计方法。

维持方法

维持方法与训练和测试类似,但它不会将一个数据集拆分为两个数据集,而是拆分为三个:训练数据集、测试(也称为“验证”)数据集和维持数据集。训练数据集和测试数据集就像我们前面所述的那样。 维持数据集是一种仅供使用一次的测试集,当我们准备好部署模型供实际使用时,会使用它。 换句话说,直到我们完成不同类型的训练方案、不同类型的模型等试验后,才会使用维持数据集。

此方法解决了我们通常使用不同的模型和训练方案进行试验的事实情况。 例如,我们拟合一个模型,发现它处理测试数据集的效果不佳,就需要更改正在训练的模型的某些方面,然后重试,直到我们获得一个好的结果。 这意味着我们要有目的地更改模型,以便适应一组特定数据,就像常规训练对训练数据集所做的那样。 通过这样做,最终可以获得一个模型,它基本上训练过度,无法处理测试数据集。

第三个数据集的思路是,我们也可以对其进行测试。 此方法就是通过三种方式拆分数据,这意味着我们从更少的训练数据开始。 如果没有大量数据需要处理,则此方法会降低我们获得良好模型的能力。

统计方法

源自统计信息的更简单的模型通常不需要测试数据集。 相反,我们可以直接将模型过度拟合的程度计算出统计学意义:“p 值”。

这些统计方法是功能强大且成熟的,构成了现代科学的基础。 优点是在任何情况下都不需要拆分训练集,我们可以更精确地了解我们对模型的信心。 例如,p 值 0.01 表示模型发现现实世界中一个并不存在的关系的可能性很小。 相比之下,p 值 0.5 意味着,虽然模型对于训练数据可能看起来还不错,但它并没有比在现实世界中抛硬币决定好多少。

这些方法的缺点是它们只能轻松应用于某些模型类型,比如我们一直在练习的线性回归模型。 对于除了最简单的模型之外的所有模型,这些计算可能非常复杂,难以正确执行,因此不在本课程介绍的范畴内。 它们还在数据选择方面受到相同的限制;如果训练数据存在偏差,则 p 值将具有误导性。