扩充数据时潜藏的数据泄露问题之late split

前言:
最近在做一个分类任务,需要在有限的数据集中扩充数据,进行模型训练。
队友用扩充好的数据进行双线性细粒度分类,最后跑出了98%的acc,狂喜之余却被师兄说存在数据泄露。
小白是第一次听说这个词语,和一样刚接触这一块的队友讨论后也没有得出统一的结论。于是上论坛向大佬们求助,最后明白了原因。

1 什么是机器学习中的 Data Leakage ?

数据泄漏Data Leakage是在数据分析中需要解决的重要问题之一。

简单来说,数据泄漏会导致模型看起来很精确,当你开始使用模型在真实的世界中做决策的时候,模型变得非常不准确。

2 数据泄露的原因分析

  • late split

也就是本次实验中出现的错误。
我们小组将每张图像进行了13倍的数据扩充,然后再在此基础上打标签进行训练,实际上就犯了最典型的late split错误。

注意:数据增强、预训练等过程中,一定不能使用测试集!

如果先进行数据增强,再从数据增强后的整个数据集中分离出训练数据和验证数据,那么同一个原始图像生成的图像可能会同时出现在训练集和测试集中,导致数据泄露。
细细一想也是这样,扩充后产生的新图像和原图极为相似,机器很容易就能分辨出来,因而产生精度非常之高的假象。

  • 自我剖析

之前查看一篇论文中写道:
在这里插入图片描述
草草看了一遍后大概知道要扩充数据,就盲目的把所有数据一起扩充了,殊不知,原文中已经提到是对“训练集”进行扩充,而并非验证集!看来做研究还是要一步一步脚踏实地,每一步都不可马虎大意!!否则会像现在这样,犯一些本可避免的错误,(如果师兄不提醒,估计我们还要傻乐呵好久)

3 解决方案

和师兄讨论后,决定先对数据进行分类,然后再对训练集进行扩充。

3.1 数据集介绍

将军事飞机共分为10大类,每一类随机选出70%作为测试集。

在这里插入图片描述
编辑好脚本文件,按照数据集要求生成文件信息,然后喂入训练网络。说到脚本文件,这也是我第一次用python去进行类似的实操。最开始是参考了网上的相关代码,到最后能独立编写一套代码,是一个不断模仿、创新的过程,编程的快乐也在于此吧,熟练之后它就是实现某种目的的工具,会让工作更加且方便效率提高。
(之后应该会专门开一篇介绍本次的脚本编写。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值