cnn 验证集 参与训练吗_如何正确使用机器学习中的训练集、验证集和测试集?...

论坛 期权论坛     
选择匿名的用户   2021-5-30 11:16   91   0
<div>
<p></p>
<div style="text-align:center;">
  <img alt="76ec0cb8d6c8717c72231cec3482bc07.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-35c727528549d0bc755ef316e5b59279.png">
</div>
<p>训练集、验证集和测试集,林林总总的数据集合类型,到底该怎么选、怎么用?看过这篇教程后,你就能游刃有余地处理它们了。</p>
<h2><b>问题</b></h2>
<p>审稿的时候,不止一次,我遇到作者<b>错误使用</b>数据集合跑模型准确率,并和他人成果比较的情况。</p>
<p>他们的研究创意有的很新颖,应用价值较高,工作可能也做了着实不少。</p>
<p>但因对比方法错误,得出来的结果,不具备说服力。几乎全部都需要<b>返工</b>。</p>
<p>这里,我帮你梳理一下,该怎么使用不同的数据集合:</p>
<ul><li>训练集(training set)</li><li>验证集(validation set)</li><li>测试集(test set)</li></ul>
<p>目的只有一个——避免你<b>踩同样的坑</b>。</p>
<p>其实这个问题,咱们之前的教程文章,已有涉及。</p>
<p>《如何用 Python 和深度迁移学习做文本分类?》一文中,我曾经给你布置了一个类似的问题。</p>
<p>在文章的末尾,我们对比了当时近期研究中, Yelp 情感分类的最佳结果。</p>
<p>下表来自于:Shen, D., Wang, G., Wang, W., Min, M. R., Su, Q., Zhang, Y., … &amp; Carin, L. (2018). Baseline needs more love: On simple word-embedding-based models and associated pooling mechanisms. arXiv preprint arXiv:1805.09843.</p>
<p></p>
<div style="text-align:center;">
  <img alt="cfa23700fa3c6def3d89cc64354efe13.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-c85b5c426cc431933bef5eb10108f3ec.png">
</div>
<p>注意这里最高的准确率(Accuracy)数值,是 95.81 。</p>
<p>我们当时的模型,在验证集上,可以获得的准确率,是这个样子的:</p>
<p></p>
<div style="text-align:center;">
  <img alt="7df6c4600f85e6b596db2f67550e7899.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-a7ec4c94db10b3994ae19849262e68c1.png">
</div>
<p>97.28%,着实不低啊!</p>
<p>于是我问你:</p>
<blockquote>
   咱们这种对比,是否科学?
</blockquote>
<p>你<b>当时的</b>答案是什么?</p>
<p>这么久过去了,又看了那么多新的教程和论文,你的答案发生变化了吗?</p>
<p>现在咱们公布一下答案吧。</p>
<p><b>不科学</b>。</p>
<p>为什么?</p>
<p>因为<b>对比方法</b>有问题。</p>
<h2><b>方法</b></h2>
<p>原文中有这样一句:</p>
<blockquote>
   这里数据集只提供了训练集和“测试集”,因此我们把这个“测试集”当做验证集来使用。
</blockquote>
<p>作为演示,数据集咱们想怎么用,就可以怎么用。</p>
<p>甚至你把测试集拿来做训练,然后在训练集上跑测试,都没有人管。</p>
<p>但是写学术论文,声称你的模型优于已有研究,却绝不能这么草率。</p>
<p>注意,比较模型效能数值结果时,你只能拿不同的模型,在<b>同样的测试集</b>上面比。</p>
<p>测试集不同,当然不可以。</p>
<p>但模型A用测试集,模型B用验证集(与A的测试集数据完全一致)比,可以吗?</p>
<p>很多人就会混淆了,觉得没问题啊。既然数据都一样,管它叫做什么名称呢?</p>
<p>可是请你注意,哪怕A模型用的测试集,就是B模型用的验证集,你也<b>不能</b>把这两个集合跑出来的结果放在一起比较。</p>
<p>因为这是<b>作弊</b>。</p>
<p>你可能觉得我这样说,颇有些吹毛求疵的意味。</p>
<p>咱们下面就来重新梳理一下,不同数据集合的作用。</p>
<p>希望你因此能看清楚,这种似乎过于严苛的要求,其实是很有道理的。</p>
<p>咱们从测试集开始谈,继而是验证集,最后是训练集。</p>
<p>这样“倒过来说”的好处,是会让你理解起来,更加透彻。</p>
<p>先说<b>测试集</b>吧。</p>
<h2><b>测试</b></h2>
<p>只有在<b>同样的测试集</b>上,两个(或以上)模型的对比才有效。</p>
<p>这就如同参加高考,两个人考同样一张卷子,分数才能对比。</p>
<p>甲拿A地区的卷子,考了600分,乙拿B地区的卷子,考了580分。你能不能说,甲比乙成绩高?</p>
<p>不行吧。</p>
<p>为了让大家更易于比较自己的模型效果,许多不同领域的数据集,都已开放了。而且开放的时候,都会给你指明,哪些数据用于训练,哪些用于测试。</p>
<p>以 Yelp 数据为例。</p>
<p></p>
<div style="text-align:center;">
  <img alt="242c37706503744fdb9e56c38691aba8.png" src="
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP