返回介绍

设置开发和测试集

基本误差分析

偏差和方差

学习曲线

与人类水平的表现相比

不同发行版的培训和测试

调试推理算法

端到端学习

按零件进行误差分析

总结

从训练集泛化到开发集

发布于 2024-08-16 12:42:34 字数 7475 浏览 0 评论 0 收藏 0

假设你正在将机器学习应用于不同分布的训练集和开发/测试集上。例如,训练集包含了互联网图像+移动应用图像,而开发/测试集只包含移动应用图像。然而,该算法运行得不太好:它的开发/测试集误差比想要的要高得多。以下是一些可能出现问题的情况:

  1. 它在训练集上表现不佳,这属于训练集分布上的高(可避免)偏差的问题。
  2. 它在训练集上做得很好,但是不能很好地泛化到与训练集分布相同的未知数据,这是高方差问题。
  3. 它能够很好地泛化到与训练集相同分布的未知数据,但不能很好地泛化到与开发/测试集相同分布的未知数据。我们将这种情况称之为数据不匹配,因为训练集的数据与开发/测试集的数据匹配得相当地糟糕。

例如,假设人类在猫识别任务上取得近乎完美的表现。你的算法实现了:

  • 1% 的训练集误差
  • 1.5% 的与训练集分布相同的未知数据上的误差
  • 10% 的开发集误差

在这种情况下,显然存在着数据不匹配问题。为了解决这个问题,你可能会尝试使训练数据更类似于开发/测试数据。我们稍后将讨论一些相关技术。

为了诊断一个算法在上面 1 到 3 个问题受到了多大程度的影响,存在另一个数据集将是很有用的。具体地说,与其给算法提供所有可用的训练数据,你还可以把它分成两个子集:算法将进行训练的实际训练集,以及一个单独的集合,我们称之为“训练开发”集,我们将不会对它进行训练。

你现在有四个数据子集:

  • 训练集:这是算法将学习的数据(例如,互联网图像+移动应用图像)。这并不需要我们从与真正关心的相同分布(开发/测试集分布)的数据中提取。
  • 训练开发集:这些数据来自与训练集相同的分布(例如,互联网图像+移动应用图像)。它通常比训练集要小;它只需要足够大到来评估和跟踪我们的学习算法的进展。
  • 开发集:这是从与测试集相同分布的数据中抽取出来的,它反映了我们最终关心的数据的分布(例如,移动应用图像) 。
  • 测试集:这是从与开发集相同分布的数据中抽取出来的(例如,移动应用图像)。

有了这四个独立的数据集,你现在可以评估:

  • 训练误差,对训练集进行评估。
  • 该算法能够泛化到与训练集相同分布数据的能力,并对训练开发集进行评估。
  • 算法在你实际关心的任务上的性能,通过对开发集 和/或 测试集评估。

在第 5-7 章中,用于选择开发集大小的大多数指导原则也适用于训练开发集。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文