我想知道为什么泄漏特征在机器学习/数据科学中有问题。我正在阅读一本使用泰坦尼克号数据集进行说明的书。它说body(身体识别号)列泄漏数据,因为如果我们正在创建一个模型来预测乘客是否会死亡,知道他们有一个先验的身体识别号会让我们知道他们已经死了。
从逻辑上讲,这是有道理的。但是假设我对这个数据集一无所知,我只会保留身体特征并建立一个模型,比如 RandomForestClassifier。即使后来我发现它泄漏了数据,那又如何?只要我的测试集有这个列,模型仍然运行并且仍然给我一个预测(确实是一个非常好的预测)。
更新
我在这里关注了一个链接的线程,为什么我的模型产生的输出太好而不是真实的输出?并有了更多的想法。让我们假设一个非常假设的情况:有人想通过故意攻击我的数据源并更改body列中的数据来扰乱我的预测。在这种情况下,我可以看到在模型训练之前放弃它是有道理的,因为这完全愚弄了模型。这让我想到,数据治理与构建一个好的 ML 模型同样重要,甚至可能更重要。
但我很少在实际项目中看到这种做法。通常,期望是:给定数据,训练最好的模型。这些数据集通常具有数千个特征,并且已经由数据工程师准备好。很可能他们不小心包含了使验证分数高得不可靠的特性,即使一个人应用了大量的高级验证技术。这似乎使数据科学家很难正确地训练和验证模型,因为唯一的方法就是梳理数据生成过程,这可能被认为是徒劳的。