【机器学习300问】92、训练集和测试集来自不同分布,如何构建模型?

        假设有一个团队想开发手机应用识别识别小猫图片。但由于深度学习算法对训练数据的要求很高。这个团队为了让训练集更大,会收集来自不同分布的数据进行训练。业余用户上传图片与专业高清图片有差异,这种做法虽然能获得大量的训练数据,但训练数据与实际使用时的测试数据不属于用一分布,会导致APP的识别准确率很低。

训练集和测试集来自不同分布如何构建模型?


一、数据预处理

(1)数据增强

        对专业高清图片进行多种变换,如旋转、缩放、剪切、色彩调整等,以模拟业余用户拍摄的图片效果。这有助于扩大训练集的多样性,减少过拟合,并使模型更加鲁棒。

(2)统一图片质量

        尽量将所有输入图片的质量和大小标准化,比如通过调整分辨率、亮度、对比度等,使得模型不会因为图片质量差异而产生偏见。

二、数据集构建

(1)平衡数据集

        确保训练集中业余用户和专业摄影师拍摄的图片比例接近实际应用场景中的预期分布。如果可能,收集更多样本以覆盖各种拍摄条件下的猫图片。

(2)分层抽样

        在划分训练集和测试集时,采用分层抽样的方法,确保每个类别和质量层次在训练集和测试集中都有代表性,避免某些类型的数据过度集中在某一部分。

        建议将数据集分成训练集、验证集和测试集,训练集包含来自网页下载的200000张图片和5000张手机上传的图片。验证集和测试集则都是2500张手机上传的图片。这样能更好地瞄准需要处理的目标数据分布,提高系统性能。虽然训练集和验证集、测试集分布不同,但长期来看这种设置能带来更好的性能。

专业照片爬虫获取,用户拍摄上传非专业照片
爬虫采集的图片(分布A)用户上传的图片(分布B)
200000张10000张
不同分布的数据构建数据集的方法
训练集200000(分布A) + 5000(分布B)
验证集2500(分布B)
测试集2500(分布B)

三、如何评估这样划分数据集训练出来的模型?

        在模型的误差评估中,需要同时考虑训练集误差和测试集误差,以便判断模型的方差、偏差问题和泛化能力。若训练数据和验证/测试数据来自不同分布,模型在不同数据集表现良好可能是因为模型只见过训练集数据,没见过测试集数据,而不因为模型方差问题。

        为避免因分布不同而出现误判,此时的做法是定义一个名为“训练-测试集”的子集,它的所有数据来自之前的训练集分布,但它里面的数据不参与模型训练。

数据集误差情况1误差情况2
train1%1%
train-dev9%1.5%
dev10%10%

        在情况1中,训练误差是1%,我们说训练-验证集上的误差是9%,然后验证集误差是10%,训练-验证集误差与训练误差相比,错误率真的很大。而训练数据和训练-验证数据的差异在于,你的神经网络能看到训练数据并直接在上面做了训练,但没有在训练-验证数据上直接训练,所以结论是模型存在方差问题。因为训练-验证集误差是在和训练集误差来自同一分布的数据中测得的。

        在情况2中,假设训练误差为1%,训练-验证误差为1.5%,验证集的错误率上升到10%。现在模型的方差问题很小,因为当模型从见过的训练数据转到训练-验证集数据,错误率只上升了一点。但当模型在验证集跑时,错误率就大大上升了,所以这是数据不匹配的问题。因为模型没有直接在训练-验证集或者验证集上训练过,但模型训练误差与训练-验证集相差不大,所以导致模型在测试集上误差变大的原因只能是这两个数据集来自不同的分布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server--死锁

今天,客户反应打不开xxx页面了。好家伙肯定锁表了。。。。。 只能先吧死锁进程先kill掉,不能耽误客户生产环境运行。。。。。 一定要看看是那张表发生了死锁 1、查询死锁语句 select dbid,* from sys.sysprocesses where 11 and spid >50 and blo…

STM32—HAL-PWM-舵机180(每个频率对应每个角度)

1开启时钟 2开启定时器和通道设置为PWM模式 3将定时时间设置为50Hz(20ms)//每25为1ms 4代码编写 4.1开启PWM 4.2改PWM的占空比 4.3效果0~180度在0度 源码 /* USER CODE BEGIN Header */ /******************************************************************************…

嵌入式开发----协议组成以及设计

1 引言 随着信息技术的快速发展,人们之间的通信和数据交换变得越来越频繁和复杂。而在这个过程中,协议起着至关重要的作用。协议是一种规范或约定,用于规定通信双方之间的数据交换格式、传输方式、通信规则等,从而确保通信的顺利…

《C++ Primer Plus》第十一章复习题和编程练习

这里写目录标题 一、复习题二、编程练习 一、复习题 1. 使用成员函数为Stonewt类重载乘法运算符,该运算符将数据成员与double类型的值相乘。注意,当用英石和磅表示时,需要进位。也就是说,将10英石8磅乘以2等于21英石2磅。 答&am…

Imperva 导致的ORAbase 乱码

DBCA Failing Because Of Garbage Characters In ORACLE_BASE Variable (Doc ID 2947963.1)​编辑To Bottom In this Document Symptoms Changes Cause Solution APPLIES TO: Oracle Database Configuration Assistant - Version 19.14.0.0.0 and later Oracle Database - E…

本地镜像文件怎么导入docker desktop

docker tag d1134b7b2d5a new_repo:new_tag

PageHelper分页

文章目录 PageHelper分页ThreadLocalMap和ThreadLocal执行完PageHelper.startPage之后,分页参数存储到哪里了?Page和List的关系?PageInterceptor分页拦截器的作用?PageInfo的作用与结构?最后看下引入的pagehelper分页依…

字节跳动 (提前批-算法工程师-电商业务) 一面面经

文章目录 面试情况1、对简历项目提问:1.1、介绍项目中的xx分类、xx概念分类、xx概念归一化,具体做法,为什么这么做?1.2、标注问题,如何标注?1.3、如何设计prompt让chatgpt得到高质量标注?1.4、类…

perl:用 Net::Server 创建简单的流媒体服务器来播放.flv文件

这是一个使用Perl Net::Server 模块创建的简单流媒体服务器示例,它能够播放.flv文件。 首先,确保安装了Net::Server模块,如果没有安装,可以使用CPAN来安装它: 运行 cpan Net::Server RHANDOM/Net-Server-2.014.tar.…

Spring框架常见注解(Spring,SpringMvc,SpringBoot)

Spring常见注解 Component、Controller、Service、Repository 使用在类上用于实例化Bean Autowired 使用在字段上用于根据类型依赖注入 Qualifier 结合Autowired一起使用用于根据名称进行依赖注入 Scope 标注Bean的作用范围 Configuration 指定当前类是一个 Spring 配…

HTML公式查询网

闲着无聊做了一个公式查询网&#xff0c;核心思路主要就是把数据库里面的内容找出来。比较低级。 <DOCTYPE !html> <html> <head><meta charset"utf-8"><title>公式查询网</title><style>* {margin: 0;padding: 0;box-si…

centos中使用Docker安装rabbitmq记录

一、安装rabbitmq docker run -d --name rabbitmq -p 5672:5672 -p15672:15672 -v rabbitmq-plugin:/plugins -e RABBITMQ_DEFAULT_USERxiaoqi -eRABBITMQ_DEFAULT_PASS123456 rabbitmq:latest二、配置web管理界面 # 查看运行的容器 docker ps -a # 根据容器id进入容器内部 …

YoloV1模型

You Only Look Once 文章目录 You Only Look Once置信度定义类别条件概率NMSnp.maxmiumnp.argsort() Yolov1直接采用网络特征输出&#xff0c;实现置信度预测、分类、边界框回归&#xff1b; 核心内容总结&#xff1a; 输入图像划分为 S S 网格。如果对象的中心落入网格单元中…

Leetcode 3163. String Compression III

Leetcode 3163. String Compression III 1. 解题思路2. 代码实现 题目链接&#xff1a;3163. String Compression III 1. 解题思路 这一题的话就是一个简单的贪婪算法&#xff0c;把相同的字符进行归并&#xff0c;然后按照题目中的表示方法进行表示一下即可。 2. 代码实现…

linux 安装chrome浏览器

一、下载安装包 下载地址&#xff1a;https://download.csdn.net/download/k0307x1990y/89349171 二、安装流程 [rootlocalhost ~]# rpm -ivh *.rpm [rootlocalhost ~]# yum -y localinstall google-chrome-stable_current_x86_64.rpm [rootlocalhost ~]# 三、修改配置文件…

Java对象头你不知道的地方

在Java中&#xff0c;每个对象都拥有一个对象头&#xff0c;这些对象头包含了关于对象的一些元数据信息。对象头(Header)包含2部分&#xff08;若为数组&#xff0c;则包含3部分&#xff09;&#xff1a; 一、第一部分为Mark Word&#xff0c;用于存储对象自身的运行时数据&am…

Vxe UI 表单设计器、零代码平台

vxe-pc-ui Vxe UI 表单设计器、零代码表单设计器 安装 Vxe UI PC端组件库 官方文档 查看 github、gitee // ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...// ...createApp(App).use(VxeUI).mount(#app)// ...使用 vxe-form-design 设计器组件 vxe-fo…

【安装笔记-20240523-Windows-安装测试 ShareX】

安装笔记-系列文章目录 安装笔记-20240523-Windows-安装测试 ShareX 文章目录 安装笔记-系列文章目录安装笔记-20240523-Windows-安装测试 ShareX 前言一、软件介绍名称&#xff1a;ShareX主页官方介绍 二、安装步骤测试版本&#xff1a;16.1.0下载链接功能界面 三、应用场景屏…

QML的Image 路径问题(source)

四种路径格式 在 QML 中&#xff0c;当你使用 Image 元素的 source 属性来指定一个图片的路径时&#xff0c;有几种不同的方式可以指定这个路径&#xff0c;每种方式都有其特定的用途和上下文。 相对路径&#xff1a; QML 文件和一个名为 close.png 的图片在同一目录下&#x…

Spring:面向切面(AOP)

1. 代理模式 二十三种设计模式中的一种&#xff0c;属于结构型模式。它的作用就是通过提供一个代理类&#xff0c;让我们在调用目标方法的时候&#xff0c;不再是直接对目标方法进行调用&#xff0c;而是通过代理类**间接**调用。让不属于目标方法核心逻辑的代码从目标方法中剥…