6. Your dev and test sets should come from the same distribution 你的开发集和测试集应该来自同一分布(《MACHINE LEARNING

来源:互联网 发布:matlab 矩阵元素赋值 编辑:程序博客网 时间:2024/06/06 03:40

你的开发集和测试机应该来自同一分布

根据你的市场,您将你的猫app的图片数据分为四个区域:(i)美国,(ii)中国,(iii)印度和(iv)其他地区。要生成一个开发集和一个测试集,我们随机地分配两个地区的数据到开发集,另外两个到测试集,对吗?比如来自美国和印度的数据在开发集,中国和其他地区的在测试集。

这里写图片描述

一旦你这样定义了开发集和测试集,你的团队将专注于提高开发集的表现性能。因此,开发集应该反映你真正想要提高性能的任务:在四个地区做得都好,而不只是两个。

开发集和测试集数据的分布不同导致的第二个问题是:你的团队可能会做出一些工作,在开发集上表现很好,在测试集却表现很差。我曾经在很多挫折和白费的努力中看到过这一结果。要避免这种情况发生在你身上。

例如,假设你的团队开发的系统在开发集上表现很好,在测试集上却很糟糕。如果你的开发集和测试集来自同一分布,那么你会有一个非常明确的诊断:你的算法在开发集上过拟合了。显而易见的方法是去获得更多的开发集数据。

但如果你的开发集和测试集来自不同的分布,那么你的选择就不太清楚了。可能会出现以下几种错误:

  • 你的算法在开发集上过拟合了。
  • 测试集比开发集更难以识别。所以你的算法可能做的和预期的效果一样好了,因此也就没有可能做出进一步的显著改进了。
  • 测试集不一定是比开发集更难,只是它们来自不同的分布。所以在开发集上表现很好的算法并不能在测试集上表现良好。这种情况下,你之前做的很多提高开发集表现性能的努力都白费了。

机器学习应用方面的工作已经很困难了。具有不匹配的开发集和测试集引入了额外的关于是否改进开发集分布或提高测试集表现性能的不确定性。这使得更难找出什么work和什么不work,因此更难以确定不错选择之间的优先级。

如果你面对的是第三方基准测试(benchmark)的问题,它们的创造者可能已经指定了开发集和测试集来自不同的分布。这种情况下,运气,而非技能,将会对你的性能产生更大的影响。当然,开发那些能够在一个分布上训练并能很好地推广(generalize)到另一个分布的学习算法是一个很重要的研究方向。但如果你的目标是开发能够在特定机器学习应用中得到不错效果的系统的话,我建议你选择开发集和测试集服从同一分布。这将使您的团队更有效率。

0 0
原创粉丝点击