@songying
2018-11-04T21:09:15.000000Z
字数 1815
阅读 1460
deep-learning
开发集和测试集的使命就是引导你的团队对机器学习系统做出最重要的改变。因此我们需要:合理地选择开发集和测试集,使之能够代表将来实际数据的情况,并期望算法能够运行良好。
不要武断地认为测试集分布和训练集分布是一致的。尽可能地选择你最终期望算法能够正确处理的样本作为测试集,而不是随便选择一个你恰好拥有的训练集样本。
开发集与测试集的分布不同可能会导致两你的团队所开发的系统可能在开发集上表现良好,却在测试集上表现不佳。
如果开发集与测试集分布相同,算法在开发集上表现良好,而在测试集上表现不佳,那么问题可以定位为: 算法在开发集上过拟合了。
但如果开发集与测试集服从不同的分布,问题就多样了:1. 算法在开发集上过拟合了. 2. 测试集比开发集更难进行预测,尽管算法做得足够好了,却很难有进一步的提升空间。 3. 测试集不一定更难预测,但它与开发集性质并不相同(分布不同)。这种情况下,大量针对开发集性能的改进工作将会是徒劳的。
开发集的规模应该尽可能的大,至少要能够区分出你所尝试的不同算法之间的性能差异。通常来说,开发集的规模应该在 1,000 到 10,000 个样本数据之间
测试集的规模应该大到使你能够对整体系统的性能进行一个高度可信的评估。在总体数据量规模一般的情况下(100-10000), 采用数据的30%作为测试集。在大数据时代,开发集与测试集的比例越来越低,开发集与测试集的规模并不是越大越好。
评测一个算法常见的指标有: 准确率, 查准率(Precision,精度),查全率(Recall, 召回率)
取平均值或者加权平均值是将多个指标合并为一个指标的最常用方法之一。
这是组合多个评估指标的另一种方法。满意度指标指的是,在这个指标上表现的足够好就可以了,到了一个阈值就没必要再优化。 而优化指标指的是越好越好的重要指标。
如果要考虑N项不同的指标,你或许需要设置 N-1 个 “满意度” 指标,即先要求它们满足一定的值或范围,下一步才是定义一个 “优化” 指标。
当建立一个机器学习系统时,三步走:
- 尝试一些关于系统构建的 想法(idea)
- 使用代码实现想法。
- 根据实验(experiment)结果判断想法是否行得通。在此基础上学习总结,从而产生新的想法,并保持这一迭代过程。