0

0

数据拆分的技术和陷阱——训练集、验证集与测试集的使用方式

王林

王林

发布时间:2024-01-22 14:45:28

|

2034人浏览过

|

来源于网易伏羲

转载

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

数据拆分中训练集、验证集和测试集(数据拆分的技术和陷阱)

为了构建可靠的机器学习模型,数据集的拆分是必不可少的。拆分过程包括将数据集分为训练集、验证集和测试集。本文旨在详细介绍这三个集合的概念、数据拆分的技术以及容易出现的陷阱。

MCP Market
MCP Market

MCP Servers集合平台,帮你找到最好的MCP服务器

下载

训练集、验证集和测试集

训练集

训练集是用于训练和使模型学习数据中隐藏的特征/模式的数据集。

在每个epoch中,相同的训练数据被重复输入神经网络架构,模型继续学习数据的特征。

训练集应该具有多样化的输入集,以便模型在所有场景下都得到训练,并且可以预测未来可能出现的数据样本。

验证集

验证集是一组数据,与训练集分开,用于在训练期间验证模型性能。

此验证过程提供的信息可帮助调整模型的超参数和配置。该模型在训练集上进行训练,同时,在每个epoch之后对验证集进行模型评估。

将数据集拆分为验证集的主要目的是防止模型过度拟合,即该模型非常擅长对训练集中的样本进行分类,但不能对没有见过的数据进行泛化和准确分类。

测试集

测试集是一组单独的数据,用于在完成训练后测试模型。它在准确度、精确度等方面提供了一个无偏的最终模型性能指标。简单来说,测试集可反映出模型的性能。

如何拆分数据集

在数据集中创建不同的样本和拆分有助于判断真实模型的性能。数据集拆分率取决于数据集中存在的样本数量和模型。

数据集拆分常见推论

如果有多个超参数需要调整,机器学习模型需要更大的验证集来优化模型性能。同样,如果模型的超参数较少或没有超参数,则可以很容易地使用一小组数据来验证模型。

如果模型用例导致错误预测会严重影响模型性能,则最好在每个时期后验证模型以使模型学习不同的场景。

随着数据维度/特征的增加,神经网络函数的超参数也随之增加,使得模型更加复杂。在这些情况下,应将大量数据与验证集一起保存在训练集中。

数据拆分的技术

1.随机抽样

随机抽样是最古老和最流行的划分数据集的方法。顾名思义,数据集被打乱,样本被随机挑选并根据用户给出的百分比放入训练、验证或测试集中。

然而,这种方法有一个明显的缺点。随机抽样在类平衡数据集上效果最佳,即每个数据集类别中样本数量大致相同的数据集。在类不平衡数据集的情况下,这种数据拆分方法可能会产生偏差。

2.分层抽样

分层抽样缓解具有不平衡类分布的数据集中的随机抽样问题。可以保留每个训练集、验证集和测试集中的类分布。分层抽样是一种更公平的数据拆分方式。

3.交叉验证

交叉验证或K-Fold交叉验证是一种更强大的数据拆分技术,其中对不同样本训练和评估模型“K”次。

使用K-Fold交叉验证将机器学习模型暴露给不同的数据分布。一定程度上减轻了在训练和验证集中选择数据时可能出现的偏差。在使用K-Fold交叉验证方案时,通常会报告平均值和标准偏差值。

因此K-Fold交叉验证也存在与随机抽样相同的问题,数据分布可能会出现偏差。可以使用分层,在生成数据的“K”个子集或部分时,保持数据的类比。

数据拆分中的常见陷阱

1.使用低质量的训练数据

由于机器学习算法对训练数据很敏感,即使训练集中的微小变化/错误也会导致模型性能出现重大错误。因此训练数据的质量对于提高模型性能至关重要。

2.过拟合

当机器学习模型无法对未知的数据进行分类时,就会发生过度拟合。训练数据中的噪声或波动被视为特征并由模型学习。这导致模型在训练集中表现出色,但在验证和测试集中表现不佳。

3.过分强调验证和测试集指标

验证集度量是决定模型训练路径的度量。在每个时期之后,机器学习模型都会在验证集上进行评估。根据验证集指标,计算相应的损失项,修改超参数。应选择指标,以便它们对模型性能的整体轨迹产生积极影响。

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

404

2023.08.14

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

1

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

38

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

19

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

276

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

71

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

14

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

6

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 9.1万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.7万人学习

Rust 教程
Rust 教程

共28课时 | 4.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号