第7-1节验证 (Validation)|机器学习速成课程

文章转载自Google,最近更新:2018-07-27

Google上线了一个“机器学习速成课程”,英文简称MLCC。这个课程节奏紧凑、内容实用。课程基本可以全程中文(包括视频),免费,并且有相关的练习.

如果可以翻墙的小伙伴,可以看看,链接如下:机器学习速成课程

具体内容如下:

1.验证 (Validation):检查您的直觉

在开始本单元之前,请思考如果使用测试集和训练集中介绍的训练流程,是否会遇到任何问题。
查看以下选项。

我们介绍了使用测试集和训练集来推动模型开发迭代的流程。在每次迭代时,我们都会对训练数据进行训练并评估测试数据,并以基于测试数据的评估结果为指导来选择和更改各种模型超参数,例如学习速率和特征。这种方法是否存在问题?(请仅选择一个答案。)
A、这种方法的计算效率不高。我们应该只选择一个默认的超参数集,并持续使用以节省资源。
B、完全没问题。我们对训练数据进行训练,并对单独的预留测试数据进行评估。
C、多次重复执行该流程可能导致我们不知不觉地拟合我们的特定测试集的特性。

答案是C

解析如下:
A、这种方法的计算效率不高。我们应该只选择一个默认的超参数集,并持续使用以节省资源。
解:尽管此类迭代的成本高昂,但它们是模型开发的关键环节。超参数设置对模型质量有着巨大的影响,要进行此类设置,需要一定的时间和计算资源,我们应始终考虑到这部分预算,以确保获得尽可能好的质量。

B、完全没问题。我们对训练数据进行训练,并对单独的预留测试数据进行评估。
解:实际上有一个小问题。试想一下,如果我们进行了大量这种形式的迭代,会发生什么情况。

C、多次重复执行该流程可能导致我们不知不觉地拟合我们的特定测试集的特性。
解:确实会!我们基于给定测试集执行评估的次数越多,不知不觉地过拟合该测试集的风险就越高。接下来,我们会考虑更好的方案。

2.验证 (Validation):另一个划分

上一单元介绍了如何将数据集划分为训练集和测试集。借助这种划分,您可以对一个样本集进行训练,然后使用不同的样本集测试模型。采用两种分类之后,工作流程可能如下所示:

第7-1节验证 (Validation)|机器学习速成课程_第1张图片
图 1

图 1. 可能的工作流程?

在图中,“调整模型”指的是调整您可以想到的关于模型的任何方面,从更改学习速率、添加或移除特征,到从头开始设计全新模型。该工作流程结束时,您可以选择在测试集上获得最佳效果的模型。

将数据集划分为两个子集是个不错的想法,但不是万能良方。通过将数据集划分为三个子集(如下图所示),您可以大幅降低过拟合的发生几率:

第7-1节验证 (Validation)|机器学习速成课程_第2张图片
图 2

图 2. 将单个数据集划分为三个子集。

使用验证集评估训练集的效果。然后,在模型“通过”验证集之后,使用测试集再次检查评估结果。下图展示了这一新工作流程:


第7-1节验证 (Validation)|机器学习速成课程_第3张图片
图 3

图 3. 更好的工作流程。

在这一经过改进的工作流程中:

  • 选择在验证集上获得最佳效果的模型。
  • 使用测试集再次检查该模型。

该工作流程之所以更好,原因在于它暴露给测试集的信息更少。

提示:

不断使用测试集和验证集会使其逐渐失去效果。也就是说,您使用相同数据来决定超参数设置或其他模型改进的次数越多,您对于这些结果能够真正泛化到未见过的新数据的信心就越低。请注意,验证集的失效速度通常比测试集缓慢。

如果可能的话,建议您收集更多数据来“刷新”测试集和验证集。重新开始是一种很好的重置方式。

关键字词

1)过拟合 (overfitting)

创建的模型与训练数据过于匹配,以致于模型无法根据新数据做出正确的预测。

2)测试集 (test set)

数据集的子集,用于在模型经由验证集的初步验证之后测试模型。与训练集验证集相对。

3)训练集 (training set)

数据集的子集,用于训练模型。与验证集测试集相对。

4)验证集 (validation set)

数据集的一个子集,从训练集分离而来,用于调整超参数。与训练集测试集相对。

你可能感兴趣的:(第7-1节验证 (Validation)|机器学习速成课程)