浅谈机器学习之数据集构建

article/2025/7/16 11:44:10

浅谈机器学习之数据集构建

​ 正如大家现在知道的,深度学习模型(DL)和机器学习模型(ML)是数据驱动型任务,在近乎完美的数据集面前,模型间的细微差异可以忽略。但要获得覆盖目标场景所有特征的样本,不仅要耗费巨大的人力物力,而且往往也无法得到满意的效果。那么如何确定模型需要的最佳数据规模,就显得尤为重要。收集样本后,如何按比例构建数据集也是一个问题。

1 衡量数据集规模

​ 无论是回归分析或计算机视觉任务,最优的做法都是,从已有开源数据集中提取相关数据,快速训练迭代出V1.0版本的模型,再利用V1.0模型进行测试,以此是否需要更多数据,需要什么类型的数据。

目前,根据前人的工作研究,总结的非数学统计意义上的规律,可按两种模型类型对样本量进行简单估计:

回归分析:根据 1/10 的经验规则,每个预测因子需要 10 个样例。

计算机视觉:以图像分类,经验法则是每一个分类需要 1000 幅图像,如果使用预训练的模型(导入ImageNet上的预训练参数),这个需求可以显著下降,具体样本量也要根据分类场景的目标特征复杂性决定。

明确任务指标,更好评估数据量

​ 通常模型精度从70%提升到90%,需要的样本数量不多的,但精度要从90%再提高,需要的样本量成倍提高。这时候要放出下面这个图-模型性能与数据量的关系。从图中可以看出,对于传统的机器学习算法,性能是按照幂律增长的,一段时间后趋于平稳。 对于深度学习,随着数据量的增加性能如何变化。所以,只有当明确任务的指标-准确率、召回率、F1等,才能更好的衡量数据集的规模。

img

2 划分数据集

​ 根据《结构化机器学习项目》中吴恩达老师的观点,在传统机器学习领域,模型参数较少,数据量在10,000左右,已经能得到较好的结果,所以可以采用train:dev:test = 6:2:2对数据进行划分。而对于深度学习任务,特别是基于深度学习的计算机视觉领域,模型参数动辄百万的参数量,数据集都达到百万样本级别,此时采用train:val:test=98:1:1对数据进行划分。简单总结如下:

样本量<10,000 时,train:val:test = 6:2:2

海量样本>1,000,000时,train:val:test=98:1:1

常用的机器学习中数据集划分的方法:留出法(Hold-out)、交叉验证法(cross validation)、自助法(bootstrap)

参考资料

[1]如何打造高质量的机器学习数据集? https://www.zhihu.com/question/333074061#!

[2]深度学习,怎么知道你的训练数据真的够了?https://easyai.tech/blog/how-do-you-know-you-have-enough-training-data/

[3]《结构化机器学习项目》- 吴恩达https://mooc.study.163.com/course/2001280004?tid=2403043000&trace_c_p_k2=626e816c55a344edbd74bcf0e8b0ae14#/info

ce_c_p_k2_=626e816c55a344edbd74bcf0e8b0ae14#/info


http://chatgpt.dhexx.cn/article/ff95VtRA.shtml

相关文章

机器学习经典开源数据集盘点

在机器学习任务实施前&#xff0c;如何快速寻找到可用数据集&#xff0c;是令每一位研究人员最头痛的事情。本文为大家列举了八大主流数据集来源&#xff0c;不仅包含大量的数据集信息&#xff0c;而且包含了描述、用法以及一些实施案例等。 01 Kaggle数据集 Kaggle数据集地址h…

免费的机器学习数据集网站(6300+数据集)

今天给大家分享一个免费获取机器学习数据集网站&#xff1a; Machine Learning Datasets | Papers With Code 有想法但没有数据集的同学的福音&#xff0c;网站届满很简洁&#xff0c;及本本上提供的了一般可用的各类数据集&#xff0c;我们可以进行各类影像、评论和点云等数…

学习机器学习算法过程中的常用数据集

文章目录 【数据集1】forge&#xff1a;小型模拟分类问题数据集【数据集2】wave&#xff1a;小型模拟回归问题数据集【数据集3】cancer&#xff1a;中型实际分类问题数据集【数据集4】boston&#xff1a;中型实际回归问题数据集 以下数据集为学习机器学习算法时&#xff0c;经常…

虚拟机系统iso镜像下载_如何下载正版系统镜像

许多网友想装系统&#xff0c;可是不会装(后期会推装系统的文章)&#xff0c;而且网上的系统有的装有全家桶&#xff0c;有的又有捆绑软件&#xff0c;严重的还有病毒。那么&#xff0c;在哪里去下载正版&#xff0c;安全的系统镜像呢 "MSDN&#xff0c;我告诉你"这个…

Win7下安装xp虚拟机

在win7下安装Oracle VM VirtualBox虚拟机&#xff0c;然后在安装xp程序。 准备工作&#xff1a; 1. Oracle VM VirtualBox虚拟机 2. 一张xp安装版的镜像盘&#xff08;这里一定是安装版而不是Ghost版&#xff0c;如果想知道ghost版的会出现什么问题&#xff0c;不妨自己试试。&…

虚拟机系统iso镜像下载_[原版镜像]macOS Mojave 10.14.1 原版 iso 镜像- 虚拟机专用

[原版镜像]macOS Mojave 10.14.1 原版 iso 镜像- 虚拟机专用 Notes: 1. 此镜像仅供用于虚拟机安装, 不能制作启动 u 盘. 2. 此镜像和专栏文章: macOS Mojave 10.14.2 原版镜像 皆可用于虚拟机安装 macOS. 另: 此镜像为苹果官方免费 macOS 镜像和工具制作而成, 没有任何第三方内…

微软官方提供的免费正版 Windows 8.1/Win10/7/XP/Vista 操作系统虚拟机镜像下载

微软官方提供的免费正版 Windows 8.1/Win10/7/XP/Vista 操作系统虚拟机镜像下载 https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ 相信做过网页开发/前端的同学都知道&#xff0c;测试各个浏览器的兼容性是最麻烦的事情之一&#xff0c;单单 IE 就有 N 个版…

基于snap7在vs上通信

这是个已有的snap7通信示例&#xff1a; 首先你得有visual studio&#xff0c;然后 1.在snap7官网上下载文件snap7-full-1.4.2 2.打开snap7-full-1.4.2\examples\dot.net\WinForm\CSharp\CSharp.sln 3.直接编译&#xff0c;它会报错 具体正确的解决方法不太懂&#xff0c;我就…

Snap7 西门子S7系列PLC的通信库 简介

目录 简介参考Snap7 简介Snap7 用途适用系统支持语言西门子S7通信介绍Snap7 组件Sanp7 API源码、手册、样例下载 简介 最近在开发一个项目&#xff0c;作为技术帝&#xff0c;已经完成工艺、机械设计的设计&#xff0c;项目过多&#xff0c;也是为了让自己更加?叉&#xff0c…

通过Snap7与 LOGO!8PLC通信

前言 因一项目需要web控制LOGO! PLC&#xff0c;利用西门子自带的免费LOGO!8.2 Web Editor工具可以很完美的做web页面开发。可以参考视频教程。此外西门子还提供数据导出到excel工具——LOGO8.2 Access Tool。 上面两款工具虽然使用起来非常便捷&#xff0c;但还是想结合Snap…

python使用Snap7读写西门子S7系列PLC

python使用Snap7读写西门子S7系列PLC 1.简介 Snap7 Snap7是一个基于s7通信协议的开源软件包&#xff0c;作者是Davide Nardella&#xff0c;该软件包封装了S7通信的底层协议&#xff0c;可使用普通电脑通过编程与西门子S7系列PLC进行通信 Snap7三大对象组件&#xff1a;客户…

jetson nano上编译与使用西门子PLC通讯库snap7

文章目录 一.西门子snap7介绍二.西门子S7通讯介绍三.jetson nano编译snap7库四.Qt Cmake导入snap7库五.snap7主要函数说明1.与PLC建立连接2.读写PA区变量3.读写MK区变量 六.通讯程序示例 一.西门子snap7介绍 官网&#xff1a;https://snap7.sourceforge.net/ Snap7 是一个基于…

Python-snap7 安装和测试

本文章记录Python-snap7零基础的安装和测试过程。 1 部件和软件 硬件&#xff1a; 1&#xff09;S7-1500 CUP 1511-1 PN&#xff08;6ES7511-1AK02-0AB0&#xff09; 2&#xff09;SD存储卡 4M&#xff08;6ES7 954-8LC03-0AA0&#xff09; 3&#xff09;220V AC 转 24V DC 电…

SNAP7 C++ 通讯

静态调用的dll的一个实例 2017年11月17日 09:49:18 净无邪 阅读数&#xff1a;334 版权声明&#xff1a;本文为博主原创文章&#xff0c;欢迎各位朋友转载。转载时&#xff0c;保留链接地址&#xff01; https://blog.csdn.net/naibozhuan3744/article/details/78557761 本实…

Qt5调用Snap7

Snap7是一个与西门子PLC通信的开源库, 在网上下载了一个例子, 研究了一天终于通信成功了, 在此记录一下 项目文件 win32:LIBS C:\Qt\Qt5.7.0\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a win32:LIBS C:\Qt\Qt5.7.0\Tools\mingw530_32\i686-w64-mingw32\lib\libwin…

python snap7 plc_Python-Snap7获取西门子PLC 300数值

说明 在一次数采项目中,对现场PLC300进行取数。本人小白,在网上搜罗了大量信息,终于找到解决方法。 准备事项 1. 操作系统 2.Python环境(本次使用Python3.6.6) 3.Snap7 connect connect(192.168.0.1, rack=0,slot=1) 三个参数分别为:IP 地址,机架,插槽 read_ar…

python-snap7的安装记录

python-snap7的安装记录-windows&#xff08;仅供个人备忘&#xff09; 首先 pip install python-snap7其次安装包再然后是环境变量最后是测试 网上其他人的资料尝试上去总感觉不靠谱&#xff0c;很多内容不是一篇网上的文章就能解决&#xff08;不是这里不对就是那里看不懂&am…

snap7

The Snap7 theatre (剧场、讲堂) The purpose of Snap7 is to fully integrate your PC station into a PLC network, without anybody sees the difference. To allow this, the Snap7 theater must be the same as the Siemens and contain the same actors. Snap7 library…

Python基于Snap7与PLC建立连接并读写数据

最近偶尔在网上看到可以用Python通过snap7与PLC建立连接并读写数据&#xff0c;好多小伙伴没有现成的PLC,这里介绍一个电脑模拟PLC与python通讯。效果与实际情况一样的。这里是以SIEMENS的PLC为例&#xff0c;通过Pycharm与TIA V17建立连接&#xff0c;对其DB块、M区、Q区、I区…

snap7通过NetToPLCsim工具接入模拟西门子PLC S7-1200步骤简介

概述 本文主要是设备通过S7协议接入西门子PLC S7-XXXX系列的开发使用文档&#xff0c;主要包括西门子PLC组态工具博途V15,PLC模拟工具S7-PLCSIM&#xff0c;IP地址映射工具NetToPLCsim等使用使用说明&#xff0c;S7协议的编译及使用说明等&#xff1b; 1 开发工具之间的关系 仿…