一文看懂 AI 训练集、验证集、测试集(附:分割方法+交叉验证)
先用一个不恰当的比喻来说明3种数据集之间的关系:
训练集(Training Dataset)是用来训练模型使用的。
在《 一文看懂机器学习 》里我们介绍了机器学习的7个步骤,训练集(Training Dataset)主要在训练阶段使用。
当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。 同时通过调整超参数,让模型处于最好的状态 。
验证集有2个主要的作用:
说明:
当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估。
通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。
扩展阅读:《 分类模型评估指标——准确率、精准率、召回率、F1、ROC曲线、AUC曲线 》
下面的数据集划分方式主要针对「留出法」的验证方式,除此之外还有其他的交叉验证法,详情见下文——交叉验证法。
数据划分的方法并没有明确的规定,不过可以参考3个原则:
假如我们教小朋友学加法:1个苹果+1个苹果=2个苹果
当我们再测试的时候,会问:1个香蕉+1个香蕉=几个香蕉?
如果小朋友知道「2个香蕉」,并且换成其他东西也没有问题,那么我们认为小朋友学习会了「1+1=2」这个知识点。
如果小朋友只知道「1个苹果+1个苹果=2个苹果」,但是换成其他东西就不会了,那么我们就不能说小朋友学会了「1+1=2」这个知识点。
评估模型是否学会了「某项技能」时,也需要用新的数据来评估,而不是用训练集里的数据来评估。这种「训练集」和「测试集」完全不同的验证方法就是交叉验证法。
留出法(Holdout cross validation)
上文提到的,按照固定比例将数据集 静态的 划分为训练集、验证集、测试集。的方式就是留出法。
留一法(Leave one out cross validation)
每次的测试集都只有一个样本,要进行 m 次训练和预测。
这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同。
一般在数据缺乏时使用。
k 折交叉验证(k-fold cross validation)
静态的「留出法」对数据的划分方式比较敏感,有可能不同的划分方式得到了不同的模型。「k 折交叉验证」是一种动态验证的方式,这种方式可以降低数据划分带来的影响。具体步骤如下:
k 一般取 10
数据量小的时候,k 可以设大一点,这样训练集占整体比例就比较大,不过同时训练的模型个数也增多。
数据量大的时候,k 可以设小一点。
本文首发自 产品经理的 AI 学习库 easyai.tech
爱新觉罗凌威普: 训练集、验证集、测试集的区别是含义不同.训练集是从原始数据集中分离出来的大量数据,喂给模型用来训练模型;验证集是从原始数据集中分离出来的少量数据,用来给训练集训练结束后的模型进行模型的精度评估;测试集是从原始数据集中分离出来的少量数据,用来给训练集训练结束后的模型进行模型的精度评估.其作用和验证集一致,一般是在深度学习的模型中和验证集区别对待,在统计学习模型中一般不单独分离出测试集.
阳泉市13740824819: weka的 测试集 与 训练集 的概念是什么? - ?
爱新觉罗凌威普: 顾名思义,两个玩意一个用来测试,一个用来训练. 例如在分类算法中,训练集就是用来训练分类器的,然后,为了测试这个分类器的性能,就可以把测试集扔到这个分类器测试一遍,看看准确率如何
阳泉市13740824819: 神经网络测试样本集,训练样本集怎么理解,编程目的是让 测试样本输出跟踪目标输出么?谢谢指导~~~不懂~ - ?
爱新觉罗凌威普: 训练样本是用来训练学习机的,测试样本是学习机要识别的对象. 比如你想让一台电脑能识别茶杯,首先你要准备一个茶杯(训练样本),然后把茶杯给计算机看(数据输入),并告诉电脑说这样的东东是茶杯(期望输出),电脑看到茶杯后它认为是花盆,但看到你的期望是茶杯,他就不停训练自己这个是茶杯不是花盆,直到电脑他自己认为茶杯是茶杯后结束(这个过程叫学习),然后你把另一只茶杯(测试样本)放在电脑面前,并问他这是什么东东,电脑通过运算后告诉你是茶杯(这个过程叫识别). 神经网络的原理是输入层的数据经过多个神经元后的输出值尽量接近给出的期望值,如果输出值与期望值误差大,则反复修改神经元的权,直到输出值与期望值的误差在可接受范围.
阳泉市13740824819: 学AI什么书最好? - ?
爱新觉罗凌威普: 没有最好,只有更好,这个见仁见智.1、我建议你先看看电子书,再去买合适的实体书,免得浪费钱.2、其实实践才是最关键!3、电子书下载地址:http://wenku.baidu.com/search?word=Illustrator++CS3&lm=0&od=0
阳泉市13740824819: Clementine训练数据和测试数据问题求助 - ?
爱新觉罗凌威普: 选择partition节点 连接入数据流,在里面可以设置训练集、测试集及验证集,若要平分在测试集及训练集栏位内填上50%. 另外可以设置标签及数值;下面的设置是对数据表中增加标志字段,如flag,(区分测试集和训练集)的数值进行选择!例如,使用“1_training“等来表示训练集.在分割完不同集合后,可以右击partition节点,选择cache中enable,这样随机分割完的数据就可以暂时存在缓存中,这样不同时进行不同建模的时候就不会因为样本不同而使结构受影响!
阳泉市13740824819: 帮忙概括文章《AI是如何做决策的》 - ?
爱新觉罗凌威普: 一窥AI的决策过程 格林在给图片分类的一个AI上测试了他的系统.这个AI被训练把图片分成10个类,包括飞机、鸟、鹿和马等.格林的系统能够暗中查看,当AI对图片进行分类时,什么是它所倚重的,什么是被它忽略不计的. 结果表明,AI先是将图片上的物体分解成不同的元素,然后搜索图片中的每一个元素以确定把图片归到哪一类. 从这里可以看出,AI做决策的过程迥异于我们人类.面对一张鹿的图,即使把它的角打上马赛克,我们也还是可以根据分叉的蹄子认出鹿来的,但对于“死板”的AI,它很可能就把它认作驴了. 格林的软件可以帮助我们测试现有的AI,以便确保它们下判断时,关注的是我们认为重要的东西,这对于改进AI有重要的价值~
阳泉市13740824819: 怎样验证adaboost训练结果的正确性 - ?
爱新觉罗凌威普: Adaboost简单来说就是将多个分类器整合成一个分类器,是boosting的扩展和延续.是一种迭代算法,在每一轮加入一个新的弱分类器,直到达到某个预定的足够小的错误率,最后得到一个由多个弱分类器组成的强分类器.每一个样本在训练时都被赋予一个权值,表明它被某个分类器选入训练集的概率.如果某个样本点已经被正确分类,那么在构造下一个训练集时,它的相应的权值就会降低.相反,如果它被错分,那么它的权值就会得到提高.改变数据分布,它根据每次训练集中样本的分类结果,以及上次的总体分类结果,来确定训练样本的权值,将修改权值的新数据作为下一次训练的样本.