机器学习:数据集的划分

本文首发于 AI柠檬博客,原文链接:机器学习:数据集的划分

如果你想学习更多机器学习AI大模型的内容,欢迎访问 AI柠檬博客


我们都知道,机器学习需要大量的数据来训练模型,尤其是训练神经网络。在进行机器学习时,数据集一般会被划分为训练集和测试集,很多时候还会划分出验证集(个别人称之为开发集)。但是很多新手,尤其是刚刚接触到机器学习的人,往往对数据集的划分没有概念,甚至有的人把训练后得到的模型在训练数据上取得的正确率当做是实际正确率来说了,然后各种被怼。有人在答辩时说自己训练的模型正确率100%,在座的老师面面相觑,最后结果可想而知。所以我们需要搞清楚数据集的划分,以及训练集、验证集和测试集的区别和作用。

数据集的划分一般有三种方法:

按一定比例划分为训练集和测试集

这种方法也称为保留法。我们通常取8-2、7-3、6-4、5-5比例切分,直接将数据随机划分为训练集和测试集,然后使用训练集来生成模型,再用测试集来测试模型的正确率和误差,以验证模型的有效性。

这种方法常见于决策树、朴素贝叶斯分类器、线性回归和逻辑回归等任务中。

交叉验证法

交叉验证一般采用k折交叉验证,即k-fold cross validation,往往k取为10。在这种数据集划分法中,我们将数据集划分为k个子集,每个子集均做一次测试集,每次将其余的作为训练集。在交叉验证时,我们重复训练k次,每次选择一个子集作为测试集,并将k次的平均交叉验证的正确率作为最终的结果。

训练集、验证集、测试集法

我们首先将数据集划分为训练集和测试集,由于模型的构建过程中也需要检验模型,检验模型的配置,以及训练程度,过拟合还是欠拟合,所以会将训练数据再划分为两个部分,一部分是用于训练的训练集,另一部分是进行检验的验证集。验证集可以重复使用,主要是用来辅助我们构建模型的。

训练集用于训练得到神经网络模型,然后用验证集验证模型的有效性,挑选获得最佳效果的模型,直到我们得到一个满意的模型为止。最后,当模型"通过"验证集之后,我们再使用测试集测试模型的最终效果,评估模型的准确率,以及误差等。测试集只在模型检验时使用,绝对不能根据测试集上的结果来调整网络参数配置,以及选择训练好的模型,否则会导致模型在测试集上过拟合。

一般来说,最终的正确率,训练集大于验证集,验证集大于测试集。

对于部分机器学习任务,我们划分的测试集必须是模型从未见过的数据,比如语音识别中一个完全不同的人的说话声,图像识别中一个完全不同的识别个体。这时,一般来说,训练集和验证集的数据分布是同分布的,而测试集的数据分布与前两者会略有不同。在这种情况下,通常,测试集的正确率会比验证集的正确率低得多,这样就可以看出模型的泛化能力,可以预测出实际应用中的真实效果。

这种方法是深度学习中经常使用的方法,因为效果相比前面的更好。该方法之所以会更好,原因是它暴露给测试集的信息更少。

只是,我们有时候会控制不住自己,不断地对着测试集调参,会使其逐渐失去效果,导致模型在测试集上出现过拟合。不过测试集上正确率越高,往往实际中应用效果也越好,即使此时测试集也参与了调参。

最后,我们再说一下关于模型的拟合问题。

如果训练集和测试集(验证集)上,正确率都很低,那么,说明模型处于欠拟合状态,需要调整超参数。如果训练集上正确率很低,测试集(或验证集)上正确率较高,说明数据集有问题。如果训练集上正确率很高,测试集(以及验证集)上正确率较低,说明模型过拟合,需要进行正则化或者Dropout来抑制过拟合。如果训练集和验证集上正确率都很高,但是在测试集上正确率较低,那么说明模型的泛化能力不足,调整方法可参考之前的过拟合情况。如果训练集和测试集(包括验证集)上模型的正确率都很高,那么,恭喜你!

关键词英文对照:

训练集 training set

验证集 validation set

测试集 test set

交叉验证 cross validation

保留法 hold-out

参考资料:

https://developers.google.com/machine-learning/crash-course/validation/another-partition?hl=zh-cn


本文首发于 AI柠檬博客,原文链接:机器学习:数据集的划分

如果你想学习更多机器学习AI大模型的内容,欢迎访问 AI柠檬博客

相关推荐
地平线开发者1 小时前
J6B vio scenario sample
算法
冬奇Lab4 小时前
Workflow 系列(04):Multi-Agent 协调——编排器边界、并发控制与上下文隔离
人工智能·工作流引擎
冬奇Lab4 小时前
每日一个开源项目(第147篇):HyperGraphRAG - 用超图表示 N 元关系,RAG 的第三代范式
人工智能·开源·graphql
甲维斯4 小时前
Github + 阿里云oss实现类似codex的自动更新!
人工智能
阿里云大数据AI技术6 小时前
光轮智能 × 阿里云:共建 Physical AI 云上数据、评测与持续学习基础设施
人工智能·机器学习
机器之心6 小时前
实锤了:Claude Code偷查用户,时区、中国AI实验室全是关键词
人工智能·openai
网易云信6 小时前
Cursor点燃个人开发者,企业级AI为何频频受挫?Agent工厂从提效工具到AI员工的跃迁
人工智能·开源
网易云信6 小时前
解锁触手可及的温暖:网易智企 x Wander Puffs AI 云游泡芙
人工智能