机器学习--01建立开发集与训练集

建立开发集与训练集

在处理第三方基准测试(benchmark)问题时,样本提供方很可能已经指定了服从不同分布的开发集和测试集数据。与数据分布一致的情况相比,此时运气带来的性能影响将超过你使用的技术所带来的影响。但是如果你想要在特定的机器学习应用上取 得进展,而不是搞研究,我建议你尽可能地选择服从相同分布的开发集和测试集数据,这会让你的团队更有效率。

1、        分类准确率就是其中的 一种:待你在开发集(或测试集)上运行分类器之后,它将返回单个数值,代表着样本被正确分类的比例。

2、        查准率=预测为“猫”的照片数量/实际为“猫”的照片数量

3、        查全率=正确预测为“猫”的数量的照片数量/实际为“猫”的照片的数量

4、        当你需要在多个分类器之间进行选择时,使用单值评估指标将帮助你更快速地作出 决定。它能给出一个清晰明了的分类器性能排名,从而帮助团队明确后续的改进方向

5、        优化指标:当你的团队进行多个学习算法进行选择是,假如有多个指标可以将其中的一部分指标确定为基础,剩下的标准作为优化指标。例如系统在满足运行时间统一的情况下,谁在相同的时间做出的数量最大化,那个系统就是最好的。

6、        如果你发现算法在开发集上的性能比测试集好得多,则表明你很有可能 在开发集上过拟合了。在这种情况下,你需要获取一个新的开发集。在项目中改变开发集、测试集或者指标是很常见的。一个初始的开发集、测试集和指标能够帮 助团队进行快速迭代,当你发现它们对团队的导向不正确时,不要担心,你只需要对其进行修 改并确保团队能够了解接下来的新方向。

7、        如果需要跟踪团队的进度,你可以每周或者每月在测试集上对系统进行一次定期评估。但不要根据测试集指标对算法做出任何决策,包括是否将系统回滚到前一周的状态。坚持这样做会导致算法在测试集上开始过拟合,并且不要再指望通过测试集对你的系统性能进行完全无偏估计 (这对发表研究论文以及需要做出商业决策的人来说影响很大)

8、        小结:

  • • 被选择作为开发集和测试集的数据,应当与你未来计划获取并对其进行良好处理的数据有 着相同的分布,而不一定和训练集的数据分布一致。
  • • 开发集和测试集的分布应当尽可能一致。
  • • 为你的团队选择一个单值评估指标进行优化。
  • • 当需要考虑多项目标时,不妨将它们整合到一个表达式里(比如对多个误差指标取平均) ,或者设定满意度指标和优化指标。
  • • 机器学习是一个高度迭代的过程:在出现最终令人满意的方案之前,你可能要尝试很多想 法。
  • • 拥有开发集、测试集和单值评估指标可以帮助你快速评估一个算法,从而加速迭代进程。
  • • 当你要探索一个全新的应用时,尽可能在一周内建立你的开发集、测试集和评估指标;而 在已经相对成熟的应用上,可以考虑花费更长的时间来执行这些工作。
  • • 传统的 70% / 30% 训练集/测试集划分对于大规模数据并不适用,实际上,开发集和测试 集的比例会远低于 30%.
  • • 开发集的规模应当大到能够检测出算法精度的细微改变,但也不需要太大;测试集的规模 应该大到能够使你能对系统的最终性作出一个充分的估计。
  • • 当开发集和评估指标对于团队已经不能提供一个正确的导向时,尽快修改它们:(i) 如果算法在开发集上过拟合,则需要获取更多的开发集数据。(ii) 如果开发集与测试集的数据分布和实际数据分布不同,则需要获取新的开发集和测试集。 (iii) 如果评估指标无法对最重要的任务目标进行度量,则需要修改评估指标。
原文地址:https://www.cnblogs.com/kedaxiaohei/p/10043658.html