博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于训练集,验证集,测试集的划分
阅读量:6831 次
发布时间:2019-06-26

本文共 1032 字,大约阅读时间需要 3 分钟。

首先需要说明的是:训练集(training set)、验证集(validation set)和测试集(test set)本质上并无区别,都是把一个数据集分成三个部分而已,都是(feature, label)造型。尤其是训练集与验证集,更无本质区别。测试集可能会有一些区别,比如在一些权威计算机视觉比赛中,测试集的标签是private的,也就是参赛者看不到测试集的标签,可以把预测的标签交给大赛组委会,他们根据你提交的预测标签来评估参赛者模式识别系统的好坏,以防作弊。

通常,在训练有监督的机器学习模型的时候,会将数据划分为训练集、验证集合测试集,划分比例一般为 0.6:0.2:0.2。对原始数据进行三个集合的划分,是为了能够选出效果(可以理解为准确率)最好的、泛化能力最佳的模型。

训练集:作用是用来拟合模型(训练模式识别系统),通过设置分类器的参数,训练分类模型。后续结合验证集作用时,会选出同一参数的不同取值,拟合出多个分类器。

验证集:作用是当通过训练集训练出多个模型后,为了能找出效果最佳的模型,使用各个模型对验证集数据进行预测,并记录模型准确率。选出效果最佳的模型所对应的参数,即用来调整模型参数。在训练集上训练好系统后,有些参数是不可学习的,需要人为设定的,比如支持向量机SVM中的超参数松弛参数C。但是人为设定可能不是最优的,怎样寻找最优的这个参数呢?这就需要验证集。在验证集上不断调试这个人为设定的超参数,直到在验证集上得到的结果满意为止,这一步通常采用验证集上的交叉验证来确定最优超参数。需要人为设定的超参数确定后,到此这个系统的所有参数都确定了,然后看一下这个系统在测试集上的效果怎么样。

测试集:用来最终评估模式识别系统的性能和分类能力。即可以把测试集当做从来不存在的数据集,当已经确定模型参数后,可以使用测试集进行模型预测并评估模型的性能。

需要注意的是,当整个模式识别系统中没有需要人为设定的超参数,所有参数都是通过学习得到的,则不需要验证集,训练集和测试集就够了。

对原始数据进行三个数据集的划分,也是为了防止模型过拟合。当使用了所有的原始数据去训练模型,得到的结果很可能是该模型最大程度地拟合了原始数据,亦即该模型是为了拟合所有原始数据而存在。当新的样本出现,再使用该模型进行预测,效果可能还不如只使用一部分数据训练的模型。

转载于:https://www.cnblogs.com/wangqiang9/p/9330627.html

你可能感兴趣的文章
程序员的爱情
查看>>
MySQL 备份和恢复策略
查看>>
简单网络管理协议snmp
查看>>
语言和封装那些事
查看>>
postgres 数据备份与恢复
查看>>
Java基础学习总结(16)——Java制作证书的工具keytool用法总结
查看>>
EFCore笔记之查询数据
查看>>
迭代器,生成器
查看>>
单向ospf
查看>>
linux ssh_config和sshd_config配置文件
查看>>
Oracle教程之管理索引(六)--Oracle重建索引
查看>>
回顾一个考务系统的开发
查看>>
this的使用方法
查看>>
面向对象的开山鼻祖——“Jolt大奖精选丛书”有奖征文
查看>>
Centos安装VMware
查看>>
Android设备信息、感应器检测
查看>>
How to Hash Data with Salt
查看>>
Eclipse导入别人项目爆红叉
查看>>
Alpha冲刺随笔集
查看>>
poj2030
查看>>