设置开发和测试集
- 开发集和测试集的定义
- 开发集和测试集应该服从同一分布
- 开发集和测试集应该有多大?
- 使用单值评估指标进行优化
- 优化指标和满意度指标
- 通过开发集和度量指标加速迭代
- 何时修改开发集、测试集和指标
- 小结:建立开发集和测试集
基本误差分析
- 快速构建并迭代你的第一个系统
- 误差分析:根据开发集样本评估想法
- 在误差分析时并行评估多个想法
- 清洗误标注的开发集和测试集样本
- 将大型开发集拆分为两个子集,专注其一
- Eyeball 和 Blackbox 开发集该设置多大?
- 小结:基础误差分析
偏差和方差
学习曲线
与人类水平的表现相比
不同发行版的培训和测试
调试推理算法
端到端学习
按零件进行误差分析
总结
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
从训练集泛化到开发集
假设你正在将机器学习应用于不同分布的训练集和开发/测试集上。例如,训练集包含了互联网图像+移动应用图像,而开发/测试集只包含移动应用图像。然而,该算法运行得不太好:它的开发/测试集误差比想要的要高得多。以下是一些可能出现问题的情况:
- 它在训练集上表现不佳,这属于训练集分布上的高(可避免)偏差的问题。
- 它在训练集上做得很好,但是不能很好地泛化到与训练集分布相同的未知数据,这是高方差问题。
- 它能够很好地泛化到与训练集相同分布的未知数据,但不能很好地泛化到与开发/测试集相同分布的未知数据。我们将这种情况称之为数据不匹配,因为训练集的数据与开发/测试集的数据匹配得相当地糟糕。
例如,假设人类在猫识别任务上取得近乎完美的表现。你的算法实现了:
- 1% 的训练集误差
- 1.5% 的与训练集分布相同的未知数据上的误差
- 10% 的开发集误差
在这种情况下,显然存在着数据不匹配问题。为了解决这个问题,你可能会尝试使训练数据更类似于开发/测试数据。我们稍后将讨论一些相关技术。
为了诊断一个算法在上面 1 到 3 个问题受到了多大程度的影响,存在另一个数据集将是很有用的。具体地说,与其给算法提供所有可用的训练数据,你还可以把它分成两个子集:算法将进行训练的实际训练集,以及一个单独的集合,我们称之为“训练开发”集,我们将不会对它进行训练。
你现在有四个数据子集:
- 训练集:这是算法将学习的数据(例如,互联网图像+移动应用图像)。这并不需要我们从与真正关心的相同分布(开发/测试集分布)的数据中提取。
- 训练开发集:这些数据来自与训练集相同的分布(例如,互联网图像+移动应用图像)。它通常比训练集要小;它只需要足够大到来评估和跟踪我们的学习算法的进展。
- 开发集:这是从与测试集相同分布的数据中抽取出来的,它反映了我们最终关心的数据的分布(例如,移动应用图像) 。
- 测试集:这是从与开发集相同分布的数据中抽取出来的(例如,移动应用图像)。
有了这四个独立的数据集,你现在可以评估:
- 训练误差,对训练集进行评估。
- 该算法能够泛化到与训练集相同分布数据的能力,并对训练开发集进行评估。
- 算法在你实际关心的任务上的性能,通过对开发集 和/或 测试集评估。
在第 5-7 章中,用于选择开发集大小的大多数指导原则也适用于训练开发集。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论