设计开发集(dev set)和测试集(test set)
机器学习中的工作流程是:
- 尝试很多思路,用训练集训练不同的模型。
- 使用开发集来评估不同的思路,选择一个然后不断迭代去改善开发集的性能。
- 得到一个令人满意的成本,再用测试集去评估。
我们需要使得测试集(test set)和开发集(dev set)的数据同分布。
一个Guideline:
简单来说,就是测试集和开发集的数据应该与我最后实际应用的数据一致,而测试集和开发集这二者本身应该同分布。
否则,在开发集上优化好的模型,并不能用于测试集。
这节课的重点在于:设立开发集和评估指标,真的就定义了模型所要瞄准的目标。所以开发集和训练集必须为同分布。
而设立训练集的方式,则会影响你逼近那个目标有多快。
开发集(dev set)和测试集(test set)的大小
在面对少量数据100、1000、10000时,按照上面的分类方式更好。
在面对大量数据如1000000时,下面的划分方式更合理。
对于test set来说:
令测试集足够大,以能够高置信度地评估系统整体性能。
P.S.
对于某些应用,也许不需要对系统性能有置信度很高的评估。在这种情况下我们可能只需要训练集(training set)和开发集(dev set),即不单独分出一个测试集也是可以的(and acknowledge that you don’t have a test set)。
当然吴恩达老师绝对不建议在搭建系统的时候省略测试集(test set),因为有个单独的测试集使我安心。因为你可以用这组不带偏差的数据来测试系统的性能。
如果你的开发集很大,这样你就不会对开发集拟合得太厉害,在这种情况下,只有训练集和开发集也不是完全不合理。