开发集应该足够大,以至于可以检测你尝试的不同算法的差异。比如,如果分类器A的准确率为90%,分类器B的准确率为90.1%,则100个样本大小的开发集不能检测出这0.1%的差异。与我见过的其它机器学习问题相比较,包含100个样本的开发集很小。常见的是包含1000到10000个样本的开发集。在10000个样本上,你有更大的可能性检测到0.1%的提升。[1]
对于成熟和重要的应用——比如广告、web搜索和产品推荐——我见到有团队甚至为0.01%的提升努力,因为这对公司的利润有直接影响。在这种情况下,开发集应该要比10000大,从而检测更小的提升。
测试集的大小又该如何?它应该足够大,大到可以给你的系统的整体性能提供高可信度。一个流行的启发式方法(heuristic)是使用你的数据30%作为测试集。这个方法在不太大规模的样本上——100到10000个样本表现很好。但是在大数据时代,我们有时候面临超过10亿样本的机器学习问题,分配给开发/测试集的比例在降低,而开发/测试集的绝对数字在增长。没有必要获取超出评估你的算法性能的非常大的开发/测试集。
[1]理论上,应该在开发集上测试算法的变化是否带来统计学上显著得变化。实际中,大部分团队不会这样做(除非他们准备发表学术论文),我从来没有发现统计学上的测试对于测量临时进展(interim progress)有用。