数据在人工智能技术里是很是重要的!本篇文章将详细给你们介绍3种数据集:训练集、验证集、测试集。同时还会介绍如何更合理的讲数据划分为3种数据集。最后给你们介绍一种充分利用有限数据的方式:交叉验证法。segmentfault
先用一个不恰当的比喻来讲明3种数据集之间的关系:机器学习
训练集(Training Dataset)是用来训练模型使用的。学习
在《一文看懂机器学习》里咱们介绍了机器学习的7个步骤,训练集(Training Dataset)主要在训练阶段使用。测试
当咱们的模型训练好以后,咱们并不知道他的表现如何。这个时候就可使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不一样的数据)上的表现如何。同时经过调整超参数,让模型处于最好的状态。人工智能
验证集有2个主要的做用:spa
说明:3d
当咱们调好超参数后,就要开始「最终考试」了。咱们经过测试集(Test Dataset)来作最终的评估。blog
经过测试集的评估,咱们会获得一些最终的评估指标,例如:准确率、精确率、召回率、F1等。ci
扩展阅读:《分类模型评估指标——准确率、精准率、召回率、F一、ROC曲线、AUC曲线》get
下面的数据集划分方式主要针对「留出法」的验证方式,除此以外还有其余的交叉验证法,详情见下文——交叉验证法。
数据划分的方法并无明确的规定,不过能够参考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