Kaggle学习笔记--data leakage

原文:https://www.kaggle.com/alexisbcook/data-leakage

简介

在本教程中,您将学习什么是数据泄漏以及如何防止数据泄漏

如果您不知道如何预防,则会经常出现泄漏,并且会以微妙而危险的方式破坏模型。
数据泄露会导致模型在训练时高性能,使得结果准确;而在预测时变得效果很差。
泄漏有两种主要类型:【target leakage 】目标泄漏和【train-test contamination】训练-测试污染。

目标泄漏——预测变量包含不可用数据

1.要根据数据可用的时间顺序或时间顺序来考虑目标泄漏,而不仅仅是功能是否有助于做出良好的预测。
2.为防止目标泄漏,应排除在实现目标值后更新(或创建)的任何变量。

训练-测试污染

当您不小心将训练数据与验证数据区分开时,会发生另一种类型的泄漏——【train-test contamination】。验证【validation】是用来衡量模型如何处理之前未考虑过的数据。如果验证数据影响预处理行为,则可以用微妙的方式破坏此过程。如在调用train_test_split()之前进行了预处理(填补了缺失值)。最终结果是模型可能会获得良好的验证评分,但是在调用模型进行决策时却表现不佳。

如果您的验证是基于简单的train-test split,则将验证数据排除在任何类型的拟合中,包括预处理步骤的拟合。如果使用scikit-learn管道,这会更容易。使用交叉验证时,在管道内进行预处理就显得尤为重要!当您不小心区分训练数据和验证数据时,会发生不同类型的泄漏。

数据准备

在此示例中,将介绍一种检测和消除目标泄漏的方法。
1.使用有关信用卡申请的数据集来预测y系列接受了哪些应用程序。
2.由于这是一个很小的数据集,因此我们将使用交叉验证来确保模型质量的准确度量。

import pandas as pd
# Read the data
data = pd.read_csv('C:/Users/Administrator/Desktop/home-data-for-ml-course/AER_credit_card_data.csv',
                   true_values = ['yes'], false_values = ['no'])
# Select target
y = data.card
# Select predictors
X = data.drop
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值