当前位置: 首页 > news >正文

一篇文章用大白话带初学者搞清训练集、测试集及验证集关系及场景逻辑(包清楚)

数据挖掘的第一系列


先用最直白的大白话给大家讲清楚理清楚训练集、测试集、验证集这三个数据集的区别和用途
保证听完就懂!

创作码字不易 ,希望你在文章中可以解决的疑惑,不错的话就点个赞吧!


实际生产测试中原始数据中一般拆成
训练集60% 验证集20% 测试集20%
大概关系可以按下图简单理解

原始数据
训练集-练习题
验证集-模拟考
测试集-高考
模型学习
用验证集检查
调整方法
用测试集终考

1. 训练集:“练习题册”

是什么:用来教模型学习规律的数据
干什么用

  • 就像你做数学题,通过大量练习记住解题方法
  • 模型在这里反复调整自己的"脑回路"(调整参数)
    特点
  • 可以反复使用(就像一本练习题做很多遍)
  • 能看到标准答案(有标注的数据)

举一个栗子🌰:
使用过去5年的天气数据(温度、湿度等)和是否下雨的记录,让模型学习怎么预测下雨


2. 验证集:“模拟考试卷”

是什么:用来检查学习效果的数据
干什么用

  • 就像月考,检测你学得怎么样
  • 用来选择最好的解题方法(调参)和避免死记硬背(过拟合)
    特点
  • 偶尔用几次(一般调参时用)
  • 考完会看错题(根据结果调整模型)

举第二个栗子🌰🌰:
用去年12月的天气数据测试模型,发现它总把"大雾天"误判成"下雨",于是调整模型参数


3. 测试集:“高考真题卷”

是什么:最终检验实力的数据
干什么用

  • 就像高考,考完就定胜负了
  • 模拟模型在完全陌生数据上的真实表现
    特点
  • 只能用一次!(这点超重要)
  • 必须是从未见过的全新数据

举第三个栗子🌰🌰🌰:
用今年1-3月的新天气数据最终测试模型,这个数据在训练和调参时绝对没碰过


三者的关系:进阶打怪流程

  1. 学习阶段:用训练集(练习题)疯狂学习
  2. 模拟考阶段:用验证集(月考)检查哪里没学好 → 改进方法
  3. 终极大考:用测试集(高考)检验最终水平
    想象如果你高考前已经做过高考原题:
  • 考高分不是因为能力强,而是因为见过答案
  • 这就是数据泄露(leakage),会导致虚假的好成绩

实际应用场景

  • 训练集:用来训练各种算法(比如随机森林、神经网络)
  • 验证集:比较哪个算法最好,调整参数
  • 测试集:最后验证这个选出来的最优模型

更精准的类比

数据集教育场景类比核心意义使用次数限制
训练集日常课堂练习- 反复做题掌握知识(模型学习规律)
- 允许查看答案(反向传播优化)
可无限次使用
验证集月考/模拟考试- 阶段性检测学习效果(调参/选模型)
- 发现知识盲点(过拟合检测)
- 考完会讲评(根据结果调整学习策略)
可多次使用(但需谨慎)
测试集从未见过的高考试卷- 最终能力检验(模拟真实环境)
- 绝对禁止提前接触(数据隔离)
- 考后不会讲评(避免信息泄露)
仅用1次

关键区别解析

  1. 验证集 vs 测试集
    • 验证集(模拟考)

      • 你可以考很多次(调参时反复使用)
      • 老师会分析错题(根据验证结果调整模型)
      • 风险:如果只用同一套模拟考,可能针对性"押题"导致虚高成绩(过拟合验证集)
    • 测试集(高考)

      • 考生只有一次机会(模型评估必须只用一次)
      • 完全陌生的题目(模拟真实业务场景)

综上所述:
测试集结果才是最终是否符合条件的决定性条件!
拥有一票否决权

  1. 实际业务场景逻辑
    记得原始数据需要清洗哦~
    原始数据
    训练集
    验证集
    测试集
    模型训练
    在验证集上调参
    最终测试集评估
    部署模型

为什么需要验证集?

  1. 防止"作弊式学习"

    • 如果直接用测试集调参(相当于用高考题做模拟题),模型会隐性记住测试集特征
    • 例:在测试集上反复尝试不同参数 → 模型间接"见过"测试数据 → 评估结果虚高
  2. 模型选择的需要

    • 比较不同算法(如随机森林XGBoost)时,需要中立裁判来判断,两名考生同时做一份考题(验证集)
    • 就像比较两个班级成绩,要用同一套模拟考题而非各自的练习题
  3. 早停(Early Stopping)依据

    • 调参过程中,当验证集误差不再下降时停止训练,避免过度练习(过拟合)

生产环境和生产过程中注意事项

注意:无论生产还是学习中,先划分数据集再进行标准化处理

  1. 测试集的终极性

    • 测试集结果一旦公布,就必须冻结模型
    • 如需进一步优化,需收集新数据创建新的测试集
  2. 验证集的灵活性

    • 可采用交叉验证(如5折)充分利用数据:
      from sklearn.model_selection import cross_val_score
      scores = cross_val_score(model, X_train_val, y_train_val, cv=5)
      
    • 相当于组织5次不同模拟考,取平均成绩更可靠
  3. 数据划分比例建议

    数据量训练集验证集测试集
    小(1万条)60%20%20%
    中(10万条)80%10%10%
    大(100万+)96%2%2%

常见划分错误案例

  1. 错误:用测试集结果反向调整模型 → 相当于高考后偷偷改答案
  2. 错误:验证集和测试集来自不同分布 → 像用北京模拟考预测广东高考
  3. 错误:划分时未分层抽样 → 模拟考全是简单题,高考全是难题
  4. 错误:有时间序列时没按照时间序列分割→ 用2023年1-12月数据随机划分,可能让模型在"训练集"中看到12月的模式,然后去"预测"6月的数据
    ➔ 相当于用未来的知识回答历史问题

实际项目中,建议用sklearn.model_selection.train_test_split两次实现三划分:

# 第一次划分:分离测试集(高考卷)
X_train_val, X_test, y_train_val, y_test = train_test_split(X, y, test_size=0.2)# 第二次划分:分离验证集(模拟考)
X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=0.25)  # 0.25*0.8=0.2

总结

训练集用于模型学习(练习题),验证集用于调参(模拟考),测试集用于最终评估(高考),
三者需严格隔离且测试集必须完全独立。


创作码字不易 ,如果阅读文章后感觉有收获,就点个赞给我点动力吧!

http://www.lryc.cn/news/612960.html

相关文章:

  • LLMs api价格对比平台
  • --- Eureka 服务注册发现 ---
  • 【第7话:相机模型3】自动驾驶IPM图像投影拼接技术详解及代码示例
  • TikTok Shop冷启动破局战:亚矩阵云手机打造爆款账号矩阵
  • AWS RDS自定义终端节点深度分析工具:Python脚本详解
  • 手机控制断路器:智能家居安全用电的新篇章
  • STM32HAL 快速入门(一):点灯前的准备 —— 从软件安装到硬件原理
  • 云手机存在的意义是什么?
  • 数字取证:可以恢复手机上被覆盖的数据吗?
  • 【macOS操作系统部署开源DeepSeek大模型,搭建Agent平台,构建私有化RAG知识库完整流程】
  • 如何提高云手机中数据信息的安全性?
  • Git Status 命令深度指南:洞悉仓库状态的核心艺术
  • Flutter开发 Slider组件(如音量控制)
  • C语言strncmp函数详解:安全比较字符串的实用工具
  • 使用Cloud Document Converter将飞书文档导出为markdown
  • Android渲染/合成底层原理详解
  • MySQL GROUP BY 语句详细说明
  • 《算法导论》第 9 章 - 中位数和顺序统计量
  • NAS技术在县级融媒体中心的架构设计与安全运维浅析
  • 医疗AI中GPU部署的“非对等全节点架构“方案分析(下)
  • MHA架构实战
  • 【R语言】 高清美观的 MaxEnt 刀切图(Jackknife)绘制——提升论文质量
  • Docker离线安装MinIO及数据迁移
  • 【R语言】重新绘制高清MaxEnt的单因素响应曲线图像
  • 把 apipost 的 md 文档转化成 json数据
  • 【论文阅读】基于元模型的体系知识图谱构建
  • 遍历节点设备属性
  • mac中多版本JDK配置和切换
  • 机器学习算法篇(四)决策树算法
  • Qwen-Image开源模型实战