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

机器学习中七种常见的数据泄露原因

原文towardsdatascience.com/seven-common-causes-of-data-leakage-in-machine-learning-75f8a6243ea5当我在评估 ChatGPT、Claude 和 Gemini 等 AI 工具用于机器学习用例时如我在上一篇文章中所述我遇到了一个关键陷阱机器学习中的数据泄露。这些 AI 模型在将数据集分成训练集和测试集之前使用了整个数据集来创建新的特征——这是数据泄露的常见原因。然而这不仅仅是一个 AI 错误人类也常常犯这样的错误。机器学习中的数据泄露发生在训练数据集之外的信息渗透到模型构建过程中。这导致性能指标膨胀模型无法泛化到未见过的数据。在这篇文章中我将介绍七种常见的数据泄露原因以便你不会像 AI 一样犯同样的错误。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1bec4b99abbee5057b2a13ec229f5929.png图像由 DALL·E 提供问题设置为了更好地解释数据泄露让我们考虑一个假设的机器学习用例想象一下你是一家像美国运通这样的主要信用卡公司的数据科学家。每天数百万笔交易被处理不可避免地其中一些是欺诈性的。你的任务是构建一个能够实时检测欺诈的模型。你拥有包含已知欺诈案例的历史数据这使得这是一个典型的分类问题数据不平衡因为欺诈交易通常只占总额的一小部分。以下是一些您手头可用的功能与交易相关的特征交易金额、货币、时间、账单地址、类型在线与实体、位置等。与卡片相关的特征信用额度、卡片余额、卡片类型、卡片期限等。与商家相关的特征商家名称、商家类别、商家地址等。与客户相关的特征客户地址、年龄、收入、消费历史等。数据预处理中的错误为了准备您的数据集以进行模型开发您通常会执行一些基本的数据转换步骤例如缩放数值特征、编码分类变量和填充缺失数据。这些转换可能涉及从数据集的多个行中计算分布或指标。因此如果在将数据集分成训练集和测试集之前对整个数据集应用它们您就有可能将测试集中的信息泄露到训练过程中。这可能发生的方式如下错误 1使用完整数据集缩放数值特征在我们的欺诈检测案例中我们有许多数值特征例如transaction amount和card tenure。某些机器学习模型如具有 L1 或 L2 正则化的逻辑回归岭回归或 Lasso 回归需要将数值变量归一化因为正则化会惩罚大的系数。通常这涉及计算一个特征的均值和标准差使用 scikit-learn 中的StandardScaler等。如果你使用整个数据集来计算transaction amount的分布然后将其应用到标准化训练和测试集上你就是在将未见数据测试数据的交易信息暴露给训练。因此我们应该只使用训练集的均值和标准差来在训练和测试集中标准化transaction amount。错误 2在完整数据集上执行目标编码许多机器学习模型只接受数值变量。因此我们需要将分类变量编码成数值变量。虽然独热编码很常见但目标编码也是一种流行的方法。目标编码用来自标变量例如这里的欺诈或非欺诈的数值替换类别。这通常涉及计算每个类别的目标均值例如每个商家类别的欺诈率。如果你从整个数据集中计算均值你又会将测试集中包含的欺诈交易的重要信息泄露给训练集。因此我们应该只使用训练数据来计算每个类别的目标均值然后将学到的编码应用到测试集上。错误 3用测试集信息填补缺失值在现实世界的数据集中缺失数据很常见。例如我们可能没有每个客户的income。一种常见的方法是用中位数值即非空行的客户收入中位数来填补缺失的数值。出于类似的原因你应该只从训练集中计算中位数值而不是整个数据集并将其应用到两个集合上。错误 4在分割数据之前进行上采样/SMOTE如上所述欺诈检测通常是一个不平衡的分类问题其中欺诈交易仅占总交易的一小部分。重采样特别是上采样复制少数类记录是一种有用的技术可以平衡数据集。如果你在上采样少数类欺诈记录后再将其划分为训练集和测试集相同的欺诈案例可能会出现在两者中导致人为的高性能。SMOTE合成少数类过采样技术是处理不平衡数据集的另一种常见方法。同样如果它在训练-测试划分之前应用从测试数据生成的合成示例可能会将信息泄露到训练集中。因此这些不平衡数据集的处理应该只应用于训练集——一旦训练集通过上采样或 SMOTE 进行了增强你应该在增强的训练集上训练你的模型并在原始测试集上评估性能。特征工程中的错误现在你已经准备好了数据集你就可以创建新的特征作为特征工程的一部分。然而这也带来了数据泄露的风险。错误 5在特征工程中使用未来数据在欺诈检测中消费行为的突然变化通常是一个红旗。因此你可能会创建像“交易金额与平均金额”这样的特征衡量某笔交易与客户平均消费相比有多不寻常。但我们应该使用哪些数据点来计算这个平均值为了避免数据泄露我们需要确保不使用任何未来数据因为当你对实时交易进行预测时这些数据将不可用。在这种情况下只有过去的交易应该用来计算平均消费。数据划分中的错误虽然将数据随机划分为训练集和测试集是常见的做法但并不总是合适的。某些划分策略可能会无意中导致数据泄露使得模型在训练过程中“看到”测试数据。错误 6训练集和测试集中的数据重叠我们的欺诈检测数据集在交易级别这意味着它将包含来自同一客户的多个交易记录。欺诈者在短时间内进行多次类似的欺诈交易尝试并不罕见。如果您随机将数据分割成训练集和测试集来自同一客户的交易可能会同时出现在两个集中使得模型可以从测试数据中“学习”。一个解决方案是使用分组洗牌分割而不是随机分割它将在客户级别执行训练-测试分割确保在分割过程中来自同一客户的交易保持在一起。这确保了您的模型是在真正未见过的数据上测试的并且可以更好地泛化到新客户。错误 7未能为时间序列数据使用时间分割当处理时间序列数据例如股票价格、天气模式、用户活动日志时在训练-测试分割中保持基于时间的序列至关重要。随机分割数据可能导致严重的数据泄露因为模型将学习到在预测时间不可用的事件。让我们假设一个新的机器学习用例其中您想要预测一个客户的未来交易金额。随机分割数据集可能会导致未来交易影响训练集。相反您应该使用时间分割其中测试集中的所有数据点都发生在训练数据之后。这反映了现实世界场景其中预测总是基于历史数据。结论当构建机器学习模型时我们经常将数据预处理、特征工程和训练-测试分割作为独立的步骤来讨论。然而它们是紧密相连的一个步骤中的错误可能会影响整个建模过程。如上述示例所示这些步骤的顺序需要仔细设计以避免数据泄露。在我们的例子中您应该遵循以下顺序数据收集训练-测试分割数据预处理仅基于训练数据特征工程仅使用预测时可用信息模型训练和评估更普遍地为了防止数据泄露始终问自己两个关键问题我是不是将测试集的信息暴露给了训练过程我是不是使用了在预测时不会可用未来的数据这两个问题将帮助您避免过度乐观的性能指标并构建对新数据泛化良好的模型。您还应该将相同的原理应用于交叉验证过程以确保每个折叠也免受泄露。喜欢这篇文章吗请在下方留言告诉我您的想法或者您所知道的其它数据泄露的常见原因你可能还会喜欢我关于数据科学和 AI 的其他文章ChatGPT 与 Claude 与 Gemini 数据分析对比第三部分最佳机器学习 AI 助手ChatGPT 与 Claude 与 Gemini 数据分析对比第二部分谁在 EDA 方面最出色三步构建基于 RAG 的聊天机器人以检索可视化

相关文章:

机器学习中七种常见的数据泄露原因

原文:towardsdatascience.com/seven-common-causes-of-data-leakage-in-machine-learning-75f8a6243ea5 当我在评估 ChatGPT、Claude 和 Gemini 等 AI 工具用于机器学习用例时,如我在上一篇文章中所述,我遇到了一个关键陷阱:机器学…...

在 AWS 私有环境中使用 Terraform 设置 Pypi 镜像

原文:towardsdatascience.com/set-up-a-pypi-mirror-in-an-aws-private-environment-with-terraform-f0fcc1b67cc0?sourcecollection_archive---------7-----------------------#2024-03-06 https://medium.com/florentpajot?sourcepost_page---byline--f0fcc1b67…...

DAC8562双通道16位SPI数模转换器驱动库详解

1. DAC8562系列双通道16位SPI数模转换器驱动库深度解析DAC8562是德州仪器(TI)推出的一款高精度、低功耗、双通道16位串行输入数模转换器(DAC),采用标准SPI接口通信,广泛应用于工业控制、测试测量、音频信号…...

从零搭建猫狗识别桌面应用(PyTorch + Tkinter 实战)

1. 环境准备与工具安装 要搭建猫狗识别桌面应用,首先需要配置好开发环境。这里推荐使用Python 3.8版本,因为PyTorch和Tkinter在这个版本上兼容性最好。我实测过多个Python版本,发现3.8在稳定性和性能上表现最均衡。 安装核心依赖库只需要一行…...

顺序测试:低量级 A/B 测试的秘密调料

原文:towardsdatascience.com/sequential-testing-the-secret-sauce-for-low-volume-a-b-tests-fe62bdf9627b 在处理有限数据时如何加速决策并提高准确性 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/36b9886f43ff7bdaeb3e…...

MCP3425 16位I²C接口ADC原理与嵌入式应用实战

1. MCP3425 16位高精度IC接口模数转换器深度解析MCP3425是Microchip公司推出的一款单通道、16位Δ-Σ型模数转换器(ADC),专为高精度、低功耗、小尺寸嵌入式测量系统设计。其核心价值在于以极简的硬件接口(仅需两根IC信号线&#x…...

阻抗匹配原理与实战:射频电路设计核心技能

1. 阻抗匹配:电子工程师的必修课作为一名在射频电路设计领域摸爬滚打多年的工程师,我深知阻抗匹配这个看似基础的概念在实际工程中的重要性。记得刚入行时,就因为没处理好一个简单的天线匹配电路,导致整批样机射频性能不达标&…...

大厂面试真题揭秘:38W-55W年薪,大模型算法工程师核心考点全解析!

面试信息 岗位:大模型应用算法工程师-电商方向 类别:算法类 - 自然语言处理 地点:杭州 bg:普通211 渣硕 薪资情况 薪资构成:16 薪,属于互联网第一梯队。 硕士 总包:38W ~ 55W / 年普通档:38W ~ …...

Qwen3.5本地部署,非常详细收藏我这一篇就够了

这一篇我们来聊点更实际的——怎么本地跑起来。 397B 参数的模型,哪怕只激活 17B,完整模型也有 807GB。听起来吓人,但实际上,得益于 Unsloth 的 Dynamic 2.0 量化技术,192GB 内存的 Mac 就能跑 3-bit 版本&#xff0c…...

告别Telnet和Jmeter!用Apifox 2.3.24一站式调试Dubbo 3.x接口(保姆级Nacos集成教程)

告别Telnet和Jmeter!用Apifox 2.3.24一站式调试Dubbo 3.x接口(保姆级Nacos集成教程) 如果你正在使用Dubbo 3.x构建微服务,可能已经发现传统的调试工具越来越力不从心。Telnet虽然简单但功能有限,Jmeter需要额外插件且对…...

Level2行情接口全解析:从实时数据订阅到历史回测的量化实战指南

1. Level2行情接口入门:为什么量化交易离不开它 第一次接触Level2行情时,我也被那些专业术语搞得一头雾水。直到有次亲眼看到两个量化团队用相同策略回测,用Level1数据的团队年化收益12%,而用Level2数据的团队达到21%,…...

告别环境冲突:在Anaconda中为PyTorch创建独立的Python 3.10 + CUDA 12.1虚拟环境

深度隔离:用Anaconda构建PyTorchCUDA开发环境的工程化实践 在深度学习项目开发中,环境管理往往是最容易被忽视却最关键的一环。想象一下这样的场景:你正在开发一个基于Transformer的NLP模型,突然需要切换到另一个使用不同CUDA版本…...

告别黑盒!用MMDetection 3.x生成检测热力图,5分钟搞定论文级可视化

深度学习目标检测热力图可视化:5步打造学术级模型解释方案 在计算机视觉领域,目标检测模型的可解释性一直是研究者关注的焦点。当我们在学术论文或技术报告中展示检测结果时,传统的边界框往往难以直观呈现模型的注意力分布——而这正是热力图…...

AI赋能智能制造:预测性维护在工业4.0中的落地实践

1. 预测性维护:从被动维修到智能预防的革命 想象一下,你家的空调突然在炎热的夏天罢工了,维修师傅告诉你:"这个零件本来三个月前就该换了"。这种场景在工业生产中放大1000倍,就是传统维护方式带来的痛点。预…...

嵌入式EEPROM文件化存储库:轻量级持久化方案

1. 项目概述PersistentStorage 是一个面向嵌入式设备 EEPROM 的轻量级、文件语义化持久化存储库,专为资源受限的 MCU(如 ESP32、STM32F0/F1、nRF52 等)设计。其核心设计理念是在无文件系统(FS)的裸机或 RTOS 环境中&am…...

boss __zp_stoken__

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 部分python代码result ctx.…...

P0400YE FBM04输入输出模块

P0400YE FBM04输入输出模块是一款面向工业自动化系统的通用I/O单元,主要用于实现现场设备与控制系统之间的信号交互,具备高可靠性和良好扩展性,广泛应用于生产线、过程控制及分布式控制系统中。支持多通道数字输入输出,提高系统控…...

MMC储能、分布式储能Simulink仿真及DCDC升降压储能模块的SOC均衡控制采用模型预测控制

mmc储能 分布式储能simulink仿真 soc均衡控制 采用模型预测控制 dcdc升降压储能模块最近在搞MMC储能的仿真项目,发现这玩意儿真是电网调频的宝藏工具。特别是当分布式储能单元遇上模块化多电平换流器,SOC均衡控制就成了最烧脑的环节。今天咱们就撸起袖…...

面向“实时空间孪生系统”在煤化工行业落地应用:专家质询18问18答

《专家质询18问18答(煤化工专用版)》——面向“实时空间孪生系统”在煤化工行业落地应用的专家答辩标准话术一、系统定位类质询1. 专家问:你们这个系统和传统数字孪生到底有什么本质区别?不要泛泛而谈。答: 传统数字孪…...

设置 Docker 化的 Python 环境 — 优雅的方式

原文:towardsdatascience.com/setting-a-dockerized-python-environment-the-elegant-way-f716ef85571d?sourcecollection_archive---------1-----------------------#2024-04-02 本文提供了一个逐步指南,介绍如何使用 VScode 和 Dev Containers 扩展设…...

Span<T>跨平台序列化加速,深度集成System.Text.Json与MessagePack(含Benchmark实测:吞吐量提升4.2倍)

第一章&#xff1a;Span<T>跨平台序列化加速&#xff0c;深度集成System.Text.Json与MessagePack&#xff08;含Benchmark实测&#xff1a;吞吐量提升4.2倍&#xff09;<T> 作为 .NET Core 2.1 引入的零分配内存视图类型&#xff0c;为高性能序列化提供了底层基石。…...

【医疗信息化开发者必修课】:C# FHIR SDK实战指南——从零构建符合HL7 FHIR R4规范的患者数据服务

第一章&#xff1a;FHIR标准与医疗信息化开发全景概览 FHIR&#xff08;Fast Healthcare Interoperability Resources&#xff09;是由HL7组织制定的现代医疗数据交换标准&#xff0c;旨在通过RESTful API、结构化资源和开放格式&#xff08;如JSON/XML&#xff09;弥合异构医疗…...

Altium Designer原理图高效绘制:如何利用模板和快捷键提升3倍工作效率

Altium Designer原理图高效绘制&#xff1a;如何利用模板和快捷键提升3倍工作效率 在电子设计领域&#xff0c;效率往往决定着项目成败。当面对复杂电路设计时&#xff0c;熟练的设计师与新手之间的差距不仅体现在设计质量上&#xff0c;更体现在完成速度上。我曾参与过一个工业…...

ETASOLUTIONS钰泰 ETA3409S2F SOT23-5 DC-DC电源芯片

特性 宽输入电压范围:2.4-7.3V待机电流42uA(输出电压1.2V&#xff0c;输出电流0A) 最高可达96%效率最大输出电流可达3安培1MHz频率轻载运行内部补偿功能微型S0T23-5封装...

C# Span<T>性能优化实战指南(90%开发者忽略的栈内存安全边界与Unsafe.As<T>陷阱)

第一章&#xff1a;C# Span性能优化实战指南&#xff08;90%开发者忽略的栈内存安全边界与Unsafe.As陷阱&#xff09;Span 的栈内存安全边界 Span<T> 在栈上分配元数据&#xff08;仅 16 字节&#xff09;&#xff0c;但其指向的数据仍可能位于堆、本机内存或栈。关键约束…...

.NET 9边缘测试黄金标准(微软内部CI/CD流水线首次公开):含12项必验指标与3种硬件故障注入模板

第一章&#xff1a;.NET 9边缘部署测试的演进与战略定位.NET 9标志着微软在云边协同架构上的关键跃迁——其原生支持AOT编译、精简运行时&#xff08;Microsoft.NETCore.App.Runtime.Minimal&#xff09;及轻量级容器镜像&#xff0c;为边缘场景下的确定性启动、低内存占用与快…...

HsMod终极指南:如何让炉石传说体验提升300%

HsMod终极指南&#xff1a;如何让炉石传说体验提升300% 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 如果你是一位炉石传说玩家&#xff0c;是否曾经为漫长的动画等待、繁琐的开包操作或…...

【Python原生AOT编译2026企业落地白皮书】:覆盖金融/车载/边缘场景的7大不可替代性验证数据

第一章&#xff1a;Python原生AOT编译的2026企业级定位与战略价值从运行时依赖到零依赖交付 2026年&#xff0c;Python原生AOT&#xff08;Ahead-of-Time&#xff09;编译已突破实验阶段&#xff0c;成为金融、电信与边缘IoT等高合规、低延迟场景的核心交付范式。它不再依赖CPy…...

高光谱成像基础(完)光谱融合(Spectral Fusion)肆

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单&#xff0c;下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try:ks Ks(KS_ARCH_X86, KS_MODE_64)encoding, count ks.asm(CODE)…...

字符串拼接用“+”还是 StringBuilder?别再凭感觉写了嘏

前言 Kubernetes 本身并不复杂&#xff0c;是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps&#xff0c;这些基础组件简单直接&#xff0c;甚至显得有些枯燥。但后来我…...