为什么泄漏的功能是有问题的

数据挖掘 数据泄露
2022-02-20 01:00:29

我想知道为什么泄漏特征在机器学习/数据科学中有问题。我正在阅读一本使用泰坦尼克号数据集进行说明的书。它说body(身体识别号)列泄漏数据,因为如果我们正在创建一个模型来预测乘客是否会死亡,知道他们有一个先验的身体识别号会让我们知道他们已经死了。

从逻辑上讲,这是有道理的。但是假设我对这个数据集一无所知,我只会保留身体特征并建立一个模型,比如 RandomForestClassifier。即使后来我发现它泄漏了数据,那又如何?只要我的测试集有这个列,模型仍然运行并且仍然给我一个预测(确实是一个非常好的预测)。

更新 我在这里关注了一个链接的线程,为什么我的模型产生的输出太好而不是真实的输出?并有了更多的想法。让我们假设一个非常假设的情况:有人想通过故意攻击我的数据源并更改body列中的数据来扰乱我的预测。在这种情况下,我可以看到在模型训练之前放弃它是有道理的,因为这完全愚弄了模型。这让我想到,数据治理与构建一个好的 ML 模型同样重要,甚至可能更重要。

但我很少在实际项目中看到这种做法。通常,期望是:给定数据,训练最好的模型。这些数据集通常具有数千个特征,并且已经由数据工程师准备好。很可能他们不小心包含了使验证分数高得不可靠的特性,即使一个人应用了大量的高级验证技术。这似乎使数据科学家很难正确地训练和验证模型,因为唯一的方法就是梳理数据生成过程,这可能被认为是徒劳的。

1个回答

是的,你给出的论点是完全有效的。但是让我们看看两种不同的场景,看看它在现实世界中是如何无益的:

  1. 如果您已经有一个可以完美预测目标变量的变量,为什么还要将资源用于创建 ML 模型。请记住,ML 模型的目标不应该是很好地测试数据,但是当它部署在生产环境中时,它应该表现良好。

  2. 在现实世界中,这种泄漏变量会导致模型预测不佳。在某些情况下,此变量可能不存在,因此您的模型管道和模型性能将大大降低。