训练集、验证集、测试集,在机器学习领域为何存在三种不同的数据集概念?它们该如何区分?“交叉验证法”和三种数据集又有何关系?
01
为什么要划分三类数据集
对于机器学习建模,其大致流程可表述为:
(1) 首先对原数据作清洗,筛选,特征标记等处理工作。
(2) 然后使用处理后的数据来训练指定模型,并根据诊断情况来不断迭代训练模型。
(3) 最后将训练调整好的模型应用到真实的场景中。
图片来源于网络
为了使部署好的模型在真实的数据中具有良好的预测效果,就需要通过某一信号指标来了解模型的泛化误差(模型在真实环境中的误差),从而指导我们得到泛化能力更强的模型。
然而,出于机器学习大量数据和训练的特点,我们既不能直接将泛化误差作为了解模型泛化能力的信号,因为在部署环境和训练模型之间往复,代价很高;也不能使用模型对训练数据集的拟合程度来作为了解模型泛化能力的信号,因为获得的数据可能不干净,不具有较好的代表性。
因此,当训练有监督的机器学习模型时,通常我们需要将原数据集分割为两部分:训练集和测试集,从而使用训练集的数据来训练模型,模型在测试集上测试后,再用测试集上的误差近似模型在现实场景中的泛化误差。(关于有监督学习和无监督学习的关系,可查看小编以前写的推文“机器学习干货篇:监督学习和无监督学习”)
那么,有了训练集和测试集,我们为什么还需要验证集?在机器学习中,我们不仅需要作模型与模型之间类的比较,对于某一类模型内部,也要不断进行筛选,涉及到模型自身的评估以及超参数的调整,我们就需要从训练集中再次划分出验证集。
知识点补充
模型参数:参数属于模型内部的配置变量,它们通常在建模过程自动学习得出。如:线性回归或逻辑回归中的系数、支持向量机中的支持向量、神经网络中的权重。
模型超参数:超参数属于模型外部的配置变量,他们通常由研究员根据自身建模经验手动设定。如学习速率,迭代次数,层数、K近邻中的K值。
02
三类数据集之间的关系
关于三类数据集之间的关系,常常用一个不恰当的比喻来说明:
(1) 训练集相当于课后的练习题,用于日常的知识巩固。
(2) 验证集相当于周考,用来纠正和强化学到的知识。
(3) 测试集相当于期末考试,用来最终评估学习效果。
根据这个比喻中,我们可以明白以下几点:
(1)训练集在建模过程中会被大量经常使用,验证集用于对模型少量偶尔的调整,而测试集只作为最终模型的评价出现,因此训练集,验证集和测试集所需的数据量也是不一致的,在数据量不是特别大的情况下一般遵循6:2:2的划分比例。
(2)为了使模型“训练”效果能合理泛化至“测试”效果,从而推广应用至现实世界中,因此一般要求训练集,验证集和测试集数据分布近似。但需要注意,三个数据集所用数据是不同的。
(3)由于不同数据集定位不同,因此模型在训练集、验证集和测试集上所反映的预测效果可能存在差异,为了尽可能提高最终的预测效果,增大数据量和变量数会是一个可行的方法。
知识点补充
对于训练集和测试集大多数人都较容易区分,但关于验证集和测试集的关系却往往会搞混,小编在这里整理了一份表格供大家学习:
表格内容可参考以下文章:
https://blog.csdn.net/kieven2008/article/details/81582591
03
K折交叉验证法
在简单的交叉验证过程中,我们已经把原数据划分为训练集、验证集和测试集,但由于并不是所有的数据都参与了模型训练(至少验证集没有),因此就存在数据信息利用不全的弊端;此外,不同的划分结果也会导致模型不同的训练效果。
为了确保泛化误差的稳定性,从而得到理想的模型,我们就需要利用K折验证法,其一般流程如下:
(1) 将数据集分为训练集和测试集,测试集放在一边。
(2) 将训练集分为 k 份,每次使用 k 份中的1 份作为验证集,其他全部作为训练集。
(3) 通过 k 次训练后,得到了 k 个不同的模型。
(4) 评估 k 个模型的效果,从中挑选效果最好的超参数。
(5) 使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终所需模型,最后再到测试集上测试。
平台介绍
打开极智分析平台“智能AI分析”模块,可选择机器学习分类、回归、聚类和多模型分类任一子模块进行机器学习建模操作,下面以机器学习分类为例进行展示:
选定分类变量、特征变量并调整将相关参数(如模型评价指标、测试集比例、K折交叉验证折数、机器学习分类算法),此外,平台还提供了自动寻参功能,帮助用户实现对模型参数(主要为超参数)的自动调整。
完成参数调整等工作后进行分析,即可得出选定分类算法下模型训练情况、模型的最优参数组合以及模型评价结果。
结语
临床研究的根本使命是发现并解决生命科学领域亟待解决的临床问题,同时,为即将发生的临床难题提供备选解决方案。
联系客服