出于描述目的在其自己的训练数据上应用算法?

数据挖掘 模型选择 描述性统计
2022-03-15 02:23:57

美好的一天,我是数据科学的新手,所以我对此没有信心。为了提出这个问题,我将描述我的数据和方法。

数据

我不想分享具体的数据示例,因为我想尝试保持匿名。我有 2016 年到 2019 年之间事件的数据。每个事件都有大约 14 个特征(分类和数字)以及成功或失败的二进制标签。这些中的每一个都通过不同的转换器(规范化和单热编码)运行。

方法

我感兴趣的是知道事件成功的可能性有多大(不一定预测它们是否成功)。

我尝试了训练/测试拆分,以找到最有效的算法。我对网格搜索中的数据进行了分层 k 折交叉验证,以调整超参数,并将logloss其用作我选择的度量。我在 Python 中实现这个,所以 Scikit-Learn 作为我的选择工具。我确定的算法是GradientBoostingClassifier.

问题

我现在感兴趣的是,当我审视 2020 年的事件时,我很好奇它们成功的可能性有多大。当我查看 2020 年的数据时,我拥有相同的 14 个特征(以相同的方式对其进行转换),并且我立即知道它们是成功还是失败。所以预测成功/失败并不有趣,也不是我想做的事。我可以使用我经过训练的模型轻松地在 2020 年的数据上生成概率,其中predict_proba包含sklearn.

问题

现在我的伙伴希望我将这个模型应用到 2016-2019 年的相同训练数据上。最初,这感觉像是一个很大的禁忌。你永远不会预测你自己的训练数据,因为它会有很大的偏差。但我不是在预测。这些感觉更像是一个传统的统计描述性问题,我在其中查看已知数据的性质并查看其行为方式。

再说一次,我对知道/预测某件事是否会成功或失败并不感兴趣(我们立即知道这一点)。我更感兴趣的是知道它是否成功(或失败)以及它这样做的可能性有多大。在这个问题中,有 5% 的机会成功与有 40% 的机会成功相比更有趣。

因此,根据标题,我的问题是,如果我的兴趣不是预测未来,而是评估成功与成功的可能性(并且仍然会产生有用的信息),您能否将经过训练的算法/模型应用于其自己的训练数据?

1个回答

如果我的兴趣不是向前预测而是评估成功与成功的可能性(并且仍然会产生有用的信息),您能否将经过训练的算法/模型应用于其自己的训练数据?

是的,一点没错。在很多情况下,在训练数据上应用模型很有用。最常见的可能是检测过拟合:训练集和测试集之间的性能差异很大是过拟合的标志。通常,了解模型如何在训练集上执行以获得性能的上限也是很有用的。

每个人都说“不要在训练集上进行预测”只是因为这是一条简单易记的规则,而且对于初学者来说是一个容易犯的错误。但只要了解他们在做什么,并且知道显然在训练集上获得的预测是有偏差的,就没有问题。

问题中描述的任务对我来说很有意义,您有权在训练集上进行预测;)

再说一句:训练数据本身可能存在偏差,即如果一个事件不太可能成功,那么即使满足其成功条件,该事件也会比成功更频繁地失败。如果数据包含这种情况,则意味着该模型被训练来预测可能成功的特征的“失败”。我认为这是否会影响模型取决于数据中是否有足够多的相似但成功的事件。