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

【机器学习:二十、拆分原始训练集】

1. 如何改进模型

模型的改进需求

在机器学习任务中,模型性能的提升通常受限于训练数据、模型架构、优化方法及超参数设置等。模型改进的目标是在测试数据上表现更优,避免过拟合或欠拟合。

常见的改进方向

  1. 增大训练数据集:通过数据增强或获取更多样本提高模型泛化能力。
  2. 改进模型结构:例如增加网络层数、调整神经元数目或选择更适合任务的架构。
  3. 优化损失函数:根据任务特点选择合适的损失函数,例如交叉熵损失或均方误差。
  4. 调整超参数:包括学习率、批量大小、正则化参数等。

拆分训练集的重要性
模型改进离不开有效的评估方法。合理拆分训练集、验证集和测试集是评估模型性能的基础,确保模型在未见数据上的泛化能力。


2. 二拆分:训练集、测试集

数学约定

将数据集分为训练集(training set)和测试集(test set),通常比例为80%:20%或70%:30%。设总样本数为 N N N ,其中训练集大小为 N t r a i n N_{train} Ntrain ,测试集大小为 N t e s t N_{test} Ntest 。有以下关系:

N t r a i n + N t e s t = N N_{train} + N_{test} = N Ntrain+Ntest=N

二拆分的意义

  1. 训练集用于模型训练,即参数学习。
  2. 测试集用于评估模型性能,检测模型是否过拟合。

如何实现二拆分

在实际操作中,常通过库函数实现:

from sklearn.model_selection import train_test_split

# 示例数据
X, y = get_dataset()

# 二拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

评价标准

通过测试误差(test error)判断模型在未见数据上的性能。常用指标包括准确率、F1分数、AUC值等。


3. 二拆分原始样本:训练集、测试集

过拟合与欠拟合

  • 过拟合:训练误差低,但测试误差高。
  • 欠拟合:训练误差和测试误差均较高。

通过合理拆分数据并比较训练误差和测试误差,可以初步判断模型状态。

案例分析

  1. 若训练误差远低于测试误差,则模型可能过拟合。
  2. 若两者误差均高,则模型可能欠拟合。

4. 通过“训练误差”和“测试误差”评估模型性能

误差定义

  • 训练误差:模型在训练数据上的平均损失值。
  • 测试误差:模型在测试数据上的平均损失值。

评估方法
通过绘制训练误差和测试误差随训练轮次的变化曲线,可以直观观察模型的学习状态。

曲线分析

  • 若训练误差下降而测试误差上升,表明模型过拟合。
  • 若训练误差和测试误差均趋于平稳,且误差较低,则表明模型性能较好。

5. 三拆分:训练集、验证集、测试集

数学约定
将数据集分为训练集(training set)、验证集(validation set)和测试集(test set),比例通常为70%:15%:15%。

三拆分的意义

  • 训练集:用于模型训练。
  • 验证集:用于超参数调优和模型选择。
  • 测试集:用于最终性能评估。

实现三拆分

from sklearn.model_selection import train_test_split

# 第一次拆分:训练集和临时集
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42)

# 第二次拆分:验证集和测试集
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

6. 总结与建议

合理拆分数据集是机器学习建模的重要环节。通过二拆分或三拆分,能够有效避免数据泄露,准确评估模型性能。建议在拆分数据时保持随机性,并通过多次实验验证模型的稳定性和鲁棒性。


http://www.kler.cn/a/509683.html

相关文章:

  • vue3常用的组件的通信方式
  • Java 8 Optional类
  • 【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验
  • 二叉树总结(hot100)
  • 小白:react antd 搭建框架关于 RangePicker DatePicker 时间组件使用记录 2
  • mac 安装 node
  • 【数据分析】coco格式数据生成yolo数据可视化
  • 11.在 Vue 3 中使用 ECharts 实现树状图
  • vue中的那些事(刷新+key+v-if,v-for)
  • Python制作简易PDF查看工具PDFViewerV1.0
  • 自建本地Linux、PHP服务部署并验证
  • python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)图像变换
  • STM32 学习笔记【补充】(十)硬件I2C读写MPU6050
  • 微调Qwen2.5-0.5B记录
  • 西门子PLC读取梅安森烟雾传感器数据
  • 5. 使用springboot做一个音乐播放器软件项目【业务逻辑开发】
  • 分布式理解
  • SiamCAR(2019CVPR):用于视觉跟踪的Siamese全卷积分类和回归网络
  • app版本控制java后端接口版本管理
  • Spring Boot 中使用 ShardingSphere-Proxy
  • SpringBoot 项目中配置日志系统文件 logback-spring.xml 原理和用法介绍
  • 数字化的三大战场与开源AI智能名片2+1链动模式S2B2C商城小程序源码的应用探索
  • javaEE安全开发 SQL预编译 Filter过滤器 Listener 监听器 访问控制
  • Delete `␍`eslintprettier/prettier
  • 【Linux】14.Linux进程概念(3)
  • 一个好用的vue+node后台管理系统