社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

吴恩达deeplearningai | 机器学习训练秘籍:第11章

一个普普通通简简单单平平凡凡的神 • 8 年前 • 343 次点击  

11 何时修改开发集、测试集和度量指标

开展一个新项目时,我会尽快选好开发集和测试集,因为这可以帮团队制定一个明确的目标。

我通常会要求我的团队在不到一周(一般不会更长)的时间内给出一个初始的开发集、测试集和度量指标,提出一个不太完美的方案并迅速采取行动 ,比花过多时间去思考要好很多。但是一周的时间要求并不适用于成熟的应用程序,譬如垃圾邮件过滤。我也见到过一些团队在已经成熟的系统上花费数月的时间来获得更好的开发集和测试集。

如果你渐渐发现初始的开发集、测试集和度量指标设置与期望目标有一定差距,快速想方法去改进它们。例如你的开发集与度量指标在排序时将分类器 A 排在 B 的前面,然而你的团队认为分类器 B 在实际产品上的表现更加优异,这个时候就需要考虑修改开发集和测试集,或者是你的评估指标了。

在上面的例子里,有三个主要原因可能导致分类器 A 的评分较低:

  1. 你需要处理的实际数据的分布和开发集/测试集数据的分布情况不同。

    假设你的初始开发集和测试集主要是成年猫的图片,然而你在 app 上发现用户上传的更多是小猫的图片,这就导致了开发集和测试集的分布与你需要处理的实际分布情况不同。在这种情况下,需要更新你的开发集和测试集,使之更具代表性。

  2. 你在开发集上过拟合了。

    在开发集上反复评估想法会导致算法“过拟合”。当你完成开发后,应该在测试集上评估你的系统。如果你发现算法在开发集上的性能比测试集好得多,则表明你很有可能在开发集上过拟合了。在这种情况下,你需要获取一个新的开发集。

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

  3. 该指标所度量的不是项目应当优化的目标。

    假设你的猫咪应用当前的度量指标为分类准确率,而该指标认为分类器 A 优于分类器 B。然而在尝试了两种算法后,你发现分类器 A 竟然允许出现一些色情图片,这实在难以容忍。应该怎么办呢?

    此时的度量指标并不能辨别出算法 B 在实际产品的表现比 A 更好,因此根据该指标来选择算法就不那么可靠了,说明是时候改变现有的评估指标了。你可以修改指标,使之对出现色情图片的情况进行严重惩罚。强烈建议你选择一个新的指标并为你的团队制定一个新的目标,而不是在不可信的指标上耗费太多的时间后,最终回过头对分类器进行人工选择。

在项目中改变开发集、测试集或者度量指标是很常见的。一个初始的开发集、测试集和度量指标能够帮助团队进行快速迭代,当你发现它们对团队的导向不正确时,不要担心,你只需要对其进行修改并确保团队了解新的方向是什么。

敬请期待第11章: 何时修改开发集、测试集和度量指标 机器学习训练秘籍已发布章节第1-4章 第5章 第6章 第7章 第8章 第9章 第10章 英文版最新章节请在这里注册http://www.mlyearning.org/ 为了让大家尽快接触到机器学习训练秘籍中文版,我们在最短的时间内组织了翻译工作。若有任何错误,还请包涵。翻译内容仍在持续改进中,如果大家有任何意见和建议,欢迎给我们留言。 欢迎扫码关注我们的公众号!谢谢!


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/XIf9obejQv
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/11736