开发集和测试集应该来自于同一分布吗?

根据不同的市场,我们将手机app上的猫猫图片根据以下4个区域来划分:美国、中国、印度和其他。那么,我们把美国和印度放在开发集中,把中国和其他区域放在测试集中。也就是说,我们可以随机将两种区域放在开发集中,另外两种则放在测试集中。这样做对吗?

当然不对!

如果我们将开发集和测试集定义好,那么我们的团队就会关注于改善开发集的效果。因此,开发集应该反应你最希望改善的任务:在四个分类中都表现良好,而不仅仅是在其中两个分类中表现良好。

如果开发集和测试集来自于不同的分布,那么第二个问题就是:我们建立的模型在开发集上表现得不错,但是在测试集上却很糟糕。这个结果令人十分沮丧,而且特别浪费精力。希望这样的事情在你身上不会发生哦~

但是呢,假设真的这么不幸,你就搭建了这样一个模型,那怎么整呢?如果你的开发集和测试集来自于同一分布,那你就应该知道罪魁祸首是什么了:你的算法在开发集过拟合啦。很明显,通过获取更多开发集数据可以解决这个问题。

但是,如果你的开发集和测试集来自于不同的分布,那你可能得多花些心思去查找原因了。可能的原因有:1) 算法在开发集上过拟合了;2)测试集比开发集更严苛,你的算法模型可能和预期一样好,但是可能不太会有更好的进展了;3)测试集并没有比开发集严苛多少,只是有些区别罢了。因此,在开发集里表现好的数据在测试集里并不会表现得很好。在这种情况下,你在开发集上所做的优化工作就都白费了。

机器学习应用的研究已经很困难了。当开发集和测试集不匹配时,关于对开发集的改善是否能够带来在测试集上性能的改进带来了更多的不确定性。并且当开发集和测试集不匹配时,更加难以确定什么方法可行什么方法不可行,从而也难以确定优先对哪个进行优化。

如果您正在处理第三方基准测试问题,他们的创建者可能已经指定了来自不同分布的开发集和测试集。与开发集和测试集来自同一分布的情况相比,在这些基准测试问题上,模型的表现效果可能更靠运气,而非技能。使得在某个分布的数据上训练出来的模型在其他分布的数据上具有更好的泛化性能是一个很重要的研究课题。但是,如果你的目标是在特定的机器学习应用中取得进展而不是取得研究进展,我建议你选择来自于同一分布的开发集和测试集。这会使你的团队更高效。


大家好,我是AI搬运工
致力于将国外的AI好文,翻译成大家都懂的中国话!
本文属于AI搬运工自行翻译,如有错误,欢迎指正!
原文摘自于:Machine Learning Yearning(Technical Strategy for AI Engineers, In the Era of Deep Learning)(Draft Version)

往期回顾
01 谈及监督学习时,我们在谈什么?
02 监督学习之回归分析法:预测连续数值
03 监督学习之分类算法
04 验证集和测试集与机器学习有什么关系

你可能感兴趣的:(开发集和测试集应该来自于同一分布吗?)