7、机器学习中的数据泄露(Data Leakage)

找到并修复这个以微妙的方式破坏你的模型的问题。

数据泄露这个概念在kaggle算法竞赛中经常被提到,这个不同于我们通常说的生活中隐私数据暴露,而是在竞赛中经常出现某支队伍靠着对极个别feature的充分利用,立即将对手超越,成功霸占冠军位置,而且与第二名的差距远超第二名与第十名的差距,那么很有可能是出现了数据泄露(Data Leakage)这些feature却不是在因果关系上顺利解释预测值的‘因’,反而是预测值的‘果’。

在本教程中,您将了解什么是数据泄漏以及如何防止数据泄漏。如果你不知道如何防止它,泄漏将经常出现,它将破坏您的模型在微妙和危险的方式。因此,对于实践数据科学家来说,这是最重要的概念之一。

本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2 提取码:uDzP

1、简介

当训练数据包含目标信息时,会发生数据泄漏(或泄漏) Data leakage (or leakage) ,但是当模型用于预测时,类似的数据将不可用。这将导致在训练集(甚至可能是验证数据)上获得高性能,但是该模型在生产中的性能将很差。

换句话说,泄漏会导致模型看起来很精确,直到您开始使用该模型做出决策,然后该模型变得非常不精确。

2、两种主要泄漏类型

有两种主要类型的泄漏: target leakage** 和train-test contamination.

2.1目标泄漏

当预测器包含在进行预测时不可用的数据时,就会发生目标泄漏。重要的是要考虑目标泄漏的时间或数据变得可用的时间顺序,而不仅仅是一个特征是否有助于做出良好的预测。

举个例子会有帮助的。假设你想预测谁会得肺炎。原始数据的前几行如下:

got_pneumonia age weight male took_antibiotic_medicine
False 65 100 False False
False 72 130 True False
True 58 100 False True

人们在患肺炎后服用抗生素药物是为了恢复健康。

原始数据显示这些列之间有很强的关系,但是在确定got_pneumonia的值之后,took_antibiotic_medicine经常被更改。

这是目标泄漏。该模型将看到,任何对took_tic_medicine值为False的人都没有患肺炎。

由于验证数据与培训数据来自同一个源,因此模式将在验证中重复,并且模型将具有良好的验证(或交叉验证)得分。

但这个模型在随后的实际应用中会非常不准确,因为即使是肺炎患者,在我们需要对他们未来的健康状况做出预测时,他们也不会使用抗生素。

为了防止这种类型的数据泄漏,应该排除在实现目标值之后更新(或创建)的任何变量。
在这里插入图片描述

2.2Train-Test 污染

当我们不小心将训练数据与验证数据区分开来时,就会发生另一种类

相关推荐

  1. 机器学习数据分析

    2024-01-24 20:24:01       24 阅读
  2. 分析一下多方联合计算数据泄露场景

    2024-01-24 20:24:01       22 阅读
  3. 机器学习算法在数据挖掘应用

    2024-01-24 20:24:01       132 阅读
  4. 稀疏数据机器学习任务应用问题

    2024-01-24 20:24:01       34 阅读
  5. 机器学习LeetCode

    2024-01-24 20:24:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-24 20:24:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-24 20:24:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-24 20:24:01       82 阅读
  4. Python语言-面向对象

    2024-01-24 20:24:01       91 阅读

热门阅读

  1. 前端笔试题(七)

    2024-01-24 20:24:01       52 阅读
  2. xtu oj 1067

    2024-01-24 20:24:01       54 阅读
  3. 内网信息收集总结

    2024-01-24 20:24:01       55 阅读
  4. BIgInteger和BigDecimal

    2024-01-24 20:24:01       57 阅读
  5. GoLang刷题之leetcode

    2024-01-24 20:24:01       52 阅读
  6. docker 创建oceanbase数据库

    2024-01-24 20:24:01       62 阅读
  7. 网络通信(17)-C#TcpClient 和 TcpListener的详解

    2024-01-24 20:24:01       46 阅读
  8. docker常用的命令

    2024-01-24 20:24:01       46 阅读
  9. 计算机视觉有什么发展方向

    2024-01-24 20:24:01       52 阅读
  10. Spring和SpringBoot的区别

    2024-01-24 20:24:01       61 阅读
  11. 142. 环形链表 II(Python3)

    2024-01-24 20:24:01       60 阅读
  12. openssl3.2/test/certs - 025 - client intermediate ca: cca-cert

    2024-01-24 20:24:01       55 阅读
  13. 一次查找某些后缀的文件

    2024-01-24 20:24:01       48 阅读
  14. GDB调试crashdump

    2024-01-24 20:24:01       72 阅读