一文看懂 AI 演习集、验证集、测试集(附:瓜分方法+交叉验证)_数据_测试
数据在人工智能技能里是非常主要的!
本篇文章将详细给大家先容3种数据集:演习集、验证集、测试集。
同时还会先容如何更合理的讲数据划分为3种数据集。末了给大家先容一种充分利用有限数据的办法:交叉验证法。
先用一个不恰当的比喻来解释3种数据集之间的关系:
演习集相称于上课学知识验证集相称于课后的的练习题,用来纠正和强化学到的知识测试集相称于期末考试,用来终极评估学习效果什么是演习集?
演习集(Training Dataset)是用来演习模型利用的。
在《这该当是全网最好的「机器学习」科普文》里我们先容了机器学习的7个步骤,演习集(Training Dataset)紧张在演习阶段利用。
什么是验证集?
当我们的模型演习好之后,我们并不知道他的表现如何。这个时候就可以利用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调度超参数,让模型处于最好的状态。
验证集有2个紧张的浸染:
评估模型效果,为了调度超参数而做事调度超参数,使得模型在验证集上的效果最好解释:
验证集不像演习集和测试集,它是非必需的。如果不须要调度超参数,就可以不该用验证集,直接用测试集来评估效果。验证集评估出来的效果并非模型的终极效果,紧张是用来调度超参数的,模型终极效果以测试集的评估结果为准。什么是测试集?
当我们调好超参数后,就要开始「终极考试」了。我们通过测试集(Test Dataset)来做终极的评估。
通过测试集的评估,我们会得到一些终极的评估指标,例如:准确率、精确率、召回率、F1等。
扩展阅读:《一文看懂分类模型的评估指标:准确率、精准率、召回率、F1等》
如何合理的划分数据集?
下面的数据集划分办法紧张针对「留出法」的验证办法,除此之外还有其他的交叉验证法,详情见下文——交叉验证法。
数据划分的方法并没有明确的规定,不过可以参考3个原则:
对付小规模样本集(几万量级),常用的分配比例是 60% 演习集、20% 验证集、20% 测试集。对付大规模样本集(百万级以上),只要验证集和测试集的数量足够即可,例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。1000w 的数据,同样留 1w 验证集和 1w 测试集。超参数越少,或者超参数很随意马虎调度,那么可以减少验证集的比例,更多的分配给演习集。交叉验证法
为什么要用交叉验证法?
如果我们教小朋友学加法:1个苹果+1个苹果=2个苹果
当我们再测试的时候,会问:1个喷鼻香蕉+1个喷鼻香蕉=几个喷鼻香蕉?
如果小朋友知道「2个喷鼻香蕉」,并且换成其他东西也没有问题,那么我们认为小朋友学习会了「1+1=2」这个知识点。
如果小朋友只知道「1个苹果+1个苹果=2个苹果」,但是换成其他东西就不会了,那么我们就不能说小朋友学会了「1+1=2」这个知识点。
评估模型是否学会了「某项技能」时,也须要用新的数据来评估,而不是用演习集里的数据来评估。这种「演习集」和「测试集」完备不同的验证方法便是交叉验证法。
3 种主流的交叉验证法
留出法(Holdout cross validation)
上文提到的,按照固定比例将数据集静态的划分为演习集、验证集、测试集。的办法便是留出法。
留一法(Leave one out cross validation)
每次的测试集都只有一个样本,要进行 m 次演习和预测。 这个方法用于演习的数据只比整体数据集少了一个样本,因此最靠近原始样本的分布。但是演习繁芜度增加了,由于模型的数量与原始数据样本数量相同。 一样平常在数据缺少时利用。
k 折交叉验证(k-fold cross validation)
静态的「留出法」对数据的划分办法比较敏感,有可能不同的划分办法得到了不同的模型。「k 折交叉验证」是一种动态验证的办法,这种办法可以降落数据划分带来的影响。详细步骤如下:
将数据集分为演习集和测试集,将测试集放在一边将演习集分为 k 份每次利用 k 份中的 1 份作为验证集,其他全部作为演习集。通过 k 次演习后,我们得到了 k 个不同的模型。评估 k 个模型的效果,从中挑选效果最好的超参数利用最优的超参数,然后将 k 份数据全部作为演习集重新演习模型,得到终极模型。k 一样平常取 10 数据量小的时候,k 可以设大一点,这样演习集占整体比例就比较大,不过同时演习的模型个数也增多。 数据量大的时候,k 可以设小一点。
本文系作者个人观点,不代表本站立场,转载请注明出处!