开发集和测试集

1.1 数据同分布

当我们训练完成一个分类器,并想把它应用到实践的,可能遇到在训练的过程中效果很好,但是在实践的过程中效果非常差,这种情况说明我们训练分类器的数据集的分布和我们实践过程的数据的分布不同,导致算法的泛化能力很差。

开发集和测试集数据分布不同将会导致开发的系统在开发集上表现良好,但在测试集上却表现不佳。这种情况下解决方案就不那么明确了,此时可能存在以下一种或者多种情况:

1. 在开发集上过拟合了;

2. 测试集比开发集更难进行预测,尽管算法做的足够好,却很难有进一步的改进空间;

3. 测试集不一定比开发集更难进行预测,但与开发集的性质不同(分布不同)。因此在开发集上表现良好的算法,不一定在测试集上也能够表现良好,如果是这种情况,大量改进开发集性能的工作将会是徒劳的。

1.2 训练集、开发集、测试集

训练集(training set)用于运行你的学习算法。

开发集(development set)用于调整参数,选择特征,以及对学习算法做出其他决定。有时也称为留出交叉验证集(hold-out cross validation set)。

测试集(test set)用于评估算法的性能,但不会据此决定使用什么学习算法或参数。

1.3 开发集和测试集的规模

开发集的规模应该大到足以区分出所尝试的不同算法间的性能差异。例如,如果分类器A的准确率为90.0%,而分类器B的准确率为90.1%,那么仅有100个样本的开发集将无法检测出这0.1%的差异。

一种常见的启发式策略是将30%的数据用于做测试集,这适用于数据规模一般的情况(比如100至10000个样本)。但是在大数据时代,我们所面临的机器学习问题的样本数量有时可能会超过10亿个,即使开发集和测试集中样本的绝对数量一直在增长,可总体上分配给开发集和测试集的数据比例正在不断下降,可以看出,我们并不需要远超过评估算法性能所需的开发集和测试集规模,即开发集和测试集的规模并不是越大越好。

1.4 建立开发集和测试集(实践的角度)

(1)选择作为开发集和测试集的数据,应当与预期在将来获取并良好处理的数据有着相同的分布,但不需要和训练数据集的分布相同;

(2)开发集和测试集的分布应当尽可能一致;

(3)拥有开发集、测试集和单值评估指标可以帮助你快速评估一个算法,从而加速迭代过程;

(4)开发集的规模应当达到能够检测出算法精度的细微改变,但也不用太大;测试集的规模应该大到能够使你对系统的最终性能做出一个充分的估计;

(5)当开发集和评估指标不再能给团队一个正确的导向时,就尽快修改它们:1)如果你在开发集上过拟合,则获取更多的开发集数据。2)如果开发集和测试集的数据分布和实际关注的数据分布不同,则获取新的开发集和测试集。3)如果评估指标不能够对最重要的任务目标进行度量,则需要修改评估指标。

整理自: deeplearning.ai

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值