对测试集中不存在的派生特征进行训练

数据挖掘 分类 预测建模
2021-09-22 04:42:21

所以我有一个奇怪的现实世界问题,其中将被馈送到分类预测模型的数据具有(一些)某些特征,并且在构建模型时,我可以使用额外的数据集来为其中一些特征添加上下文,但是当它要实时运行时,我将无法使用任何额外的数据——模型本身需要已经“知道”原始数据的特定值的重要性,并且能够仅对这些属性进行操作.

这里的主要特征是城市内的时间(/日期/DOW)和位置(纬度/经度)。因此,附加数据集是关于该位置(分区、人口统计、交通)或时间(交通、商业活动等)的上下文。但是出于性能原因(加入成本等),我们不能实时使用它们,我们只有时间和位置编号(加上易于解析的衍生产品)。

我正在想象一个过程,模型使用这些附加功能来了解时间和位置的哪些子集或分界实际上很重要,然后即使没有附加功能,也可以继续使用这些权重和规则或其他任何东西,只是依靠数值。但也有可能没有这种方法。任何人都可以提出一种算法或方法来让我们保留一些价值吗?

3个回答

这不是它的工作原理,如果测试集中缺少数据,则无法提取果汁。

您将在训练中具有可能具有区分性但在测试中缺失的特征。然后,当您尝试预测时,不会有任何输入可以映射到输出。

这个beeing说我应该提到NaiveBayesclassifier不会使用缺少的功能,所以包含它们不会有任何害处,但你不会得到任何额外的信息,只会增加不必要的复杂性。

这听起来像是特征工程的绝佳机会。您在最后一段中正在考虑这一点,因此您走在正确的轨道上,但我将在此处详细说明可能的解决方案。

您可以使用您知道将存在于测试集中的特征来构建基于上下文信息的合成特征。例如,您可以在给定日期时间和位置的情况下预测流量,而分区只能基于位置。与人口统计和交通类似。你在这个阶段的目标是构建一个算法来构建每个合成特征,知道你必须在测试数据(以及部署时的任何传入数据)上每行应用它。

然后使用测试集中存在的特征合成特征(不是额外的上下文信息)来训练你的算法。

之后,在测试数据中构建合成特征。您不是在这里创建新数据,您只是将特征转换为希望更具描述性的特征。现在您可以使用真实和合成特征来评估您之前训练的模型。我并不是说这肯定会给你带来更好的结果,但这是我会探索的。

最终,这只是为您的 ML 算法提供了一个良好的开端。我们可以使用逻辑和常识(以及一些额外的信息)首先构建算法的一部分(特征转换),而不是盲目地在现有特征上训练通用算法,从而为最终分类器提供更好的机会。此外,通过这种方式,您可以对来自额外训练数据的信息进行编码,而无需处理测试集中缺失的特征。

尽管大多数库会为此出错,但即使我们设法(假设)基于任何逻辑(例如 Fill NAN)创建功能,它也无法正常工作

ML 模型只是根据数据创建一个模式如果它使用一组特征创建了一个模式,并且在预测时这些特征不可用,那肯定会影响结果。

我相信我们正在尝试解决机器学习领域的数据工程问题。我们必须看看为什么我们不能解决加入/成本问题。