Kaggle Learn 数据泄露(data leakage)的几个例子

本文探讨了数据泄露问题,包括目标泄露和训练测试污染,通过几个例子,如生病与吃药、原料消耗与产值、病人与感染率、房价与售价,揭示了数据泄露如何影响预测模型的准确性,并提出了正确处理方式。

数据泄露

数据泄露是指,在训练数据中包含目标信息,但在预测时没有可用的类似数据。这会使得训练数据(或者验证数据)效果比较好,但实际生产(预测)时效果特别差。

有两种泄露类型:target leakage(目标泄露)train-test contamination(训练测试污染)

当测试集上的预测结果准确率特别高,比如95%以上时,要检查一下是否数据泄露了。

target leakage

预测包含未来才知道的数据时,会发生目标泄露。
在这里插入图片描述

train-test contamination

比如在切分训练集 / 测试集之前,就使用了如均值插值法处理缺失值,那么训练集中其实就已经包含了测试集的信息。

例子

生病与吃药

用是否吃药,来预测是否会得病。

**数据泄露:**生病的才会吃药,所以用是否吃药来预测是否得病贼准。

原料消耗与产值

用当月皮革使用量,来预测鞋带的需求量。

**数据泄露:**咋一看没有直接联系,其实,皮革使用量 -> 鞋子产量 -> 鞋带需求量,这是确定的关系。预测未来一个月时,你根本拿不到当月的皮革使用量。

正确的做法,应该把皮革使用量,换成皮革预算。

病人与感染率

用手术数据中医生的感染率,来预测病人的感染率。

这里既有数据泄露,又有训练测试污染。

### Kaggle 数据集适合线性回归分析且包含多重共线性的示例 在进行线性回归分析时,选择一个具有多重共线性的数据集可以帮助研究模型的稳定性和预测能力。以下是几个来自 Kaggle 的数据集示例,这些数据集适合用于线性回归分析,并可能包含多重共线性。 #### 1. **波士顿房价数据集(Boston Housing Dataset)** 波士顿房价数据集是一个经典的数据集,通常用于回归分析。它包含多个特征,例如犯罪率、平均房间数、工业用地比例等。某些特征之间可能存在较高的相关性,例如“平均房间数”和“住宅土地面积”之间的关系[^2]。此数据集可以通过 `scikit-learn` 轻松加载或从 Kaggle 下载。 ```python from sklearn.datasets import load_boston boston = load_boston() print(boston.DESCR) ``` 下载链接: [Kaggle Boston Housing Dataset](https://www.kaggle.com/c/boston-housing) #### 2. **汽车性能数据集(Auto MPG Dataset)** 该数据集包含汽车的燃油消耗量(MPG)以及多个影响因素,例如气缸数、排量、马力、重量等。这些特征之间可能存在多重共线性,例如“重量”和“排量”之间的关系。可以从 UCI 数据库或 Kaggle 下载: - 下载链接: [Kaggle Auto MPG Dataset](https://www.kaggle.com/uciml/autompg-dataset) #### 3. **房屋价格预测数据集(House Prices Dataset)** Kaggle 上的房屋价格预测数据集是一个广泛使用的回归分析数据集。它包含许多可能相关的特征,例如房屋面积、卧室数量、浴室数量等。这些特征之间的相关性可能导致多重共线性问题。 - 下载链接: [Kaggle House Prices Dataset](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data) #### 4. **糖尿病数据集(Diabetes Dataset)** 这个数据集包含患者的生理特征和一年后疾病进展指数。部分特征之间可能存在较高相关性,适合用于研究多重共线性问题[^2]。可以通过 `scikit-learn` 加载: ```python from sklearn.datasets import load_diabetes diabetes = load_diabetes() print(diabetes.DESCR) ``` #### 5. **学生表现数据集(Student Performance Dataset)** 该数据集记录了学生的学术表现及其影响因素,例如学习时间、课外活动参与度等。某些特征可能具有较强的线性相关性,例如“学习时间”和“课外活动时间”。可以从 UCI 数据库或 Kaggle 下载: - 下载链接: [Kaggle Student Performance Dataset](https://www.kaggle.com/spscientist/students-performance-in-exams) --- ### 示例代码:检测多重共线性 以下是一个简单的 Python 示例,展示如何检测数据集中是否存在多重共线性: ```python import pandas as pd from statsmodels.stats.outliers_influence import variance_inflation_factor # 假设我们已经加载了一个数据集 df # df = pd.read_csv("your_dataset.csv") # 提取自变量 X = df.drop('target', axis=1) # 'target' 是因变量列名 # 计算 VIF(方差膨胀因子) vif_data = pd.DataFrame() vif_data["feature"] = X.columns vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])] print(vif_data) ``` 如果某个特征的 VIF 值大于 10,则表明该特征与其他特征之间可能存在多重共线性[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值