Chapter 7、How large do the dev/test sets need to be?
开发集/测试集需要多大?
开发集应该足够大,以检测您尝试的算法之间的差异。例如,如果分类器A具有90.0%的准确度,分类器B具有90.1%的准确度,那么100个样本的开发集将不能检测出这0.1%的差异。与我看到的其他机器学习问题相比,100个样本的开发集太小了。常见的开发集的大小在1,000到10,000个样本之间。有10,000个样本,你将有很好的机会检测到这0.1%的提升。[2] 对于成熟和重要的应用,例如广告,网络搜索和产品建议 - 我也看到了很多团队,甚至为提升0.01%积极努力,因为它对公司的利润有直接影响。在这种情况下,开发集可以远大于10,000,以便检测出更小的提升。 测试集的大小应该多大?它应该足够大,使得对系统的整体性能有一个高的信心。一个流行的启发式方法是将30%的数据用于测试集。当你有适量的样本,比如100到10,000的样本,它会工作的很好。但在大数据的时代,我们现在有机器学习问题,有时会超过十亿个样本,分配给开发集/测试集的比例一直在缩小,即使开发集 /测试集中的样本绝对数量一直在增长。除了需要评估算法的性能之外,没有必要提供过大的开发集/测试集。
——————————
[2]. 在理论上,我们可以测试算法的变化是否对开发集产生统计上显着的差异。 在实践中,大多数团队不会为此困扰(除非他们出版学术研究论文),我通常没法发现统计意义的测试对测量临时进展是有用的。