处理信息缺失

数据挖掘 时间序列 预测建模 美国有线电视新闻网 异常检测 缺失数据
2022-03-14 08:59:37

如何处理包含缺失数据的时间序列,这意味着什么?

所以缺失的值并没有错。它是故意丢失的,并且估算这些缺失值将意味着信息丢失。

因此,您可以将其视为“仅在满足条件 y 时才测量 x”之类的东西。在我的例子中,只有在某一天有人对此感兴趣时,才会衡量某个价格。这导致了一个包含数千个数据点的时间序列,其中大约 40% 不包含任何值。

我想使用 1D-CNN 作为异常检测器的一部分,以查找数据中的错误。CNN 提供与实际数据进行比较的预测。如果预测和真实数据点之间的差异高于某个阈值,我想将其标记为异常。(但是 missing_values 没有异常)

我想过使用嵌入来处理缺失值,但不确定这是否是处理此问题的正确方法。

3个回答

我看不出嵌入如何提供帮助。嵌入有助于降低数据的维度。我认为您只需要引入一个功能,如果有人感兴趣,则为 1,如果没有人感兴趣,则为 0。那么如果你有足够的数据,convnet 应该能够理解时间序列和你添加的特征之间的关系。

如果不知道您的数据是什么样的,这有点困难,但您也可以忽略丢失的数据,并训练一个预测连续时间序列的模型。然后,模型可能会在数据丢失时标记异常,但只有在数据没有丢失且异常是真实的情况下才真正声明异常。

我认为这篇论文(Recurrent Neural Networks for Multivariate Time Series with Missing Values)试图解决您的类似问题。他们的想法是训练一个神经网络来捕捉缺失的模式,然后将这些信息结合到主网络以提高性能。

这里有一个重新实现,但我不知道源代码的质量。

很久以后,我找到了我真正想要的东西:实体嵌入

基本上,我将上下文信息添加到神经网络中,我声明如果该字段丢失,则为零。

我将每个字段分为 3 个类别:零、非零、缺失,因为字段内的数据中有多种模式,我并不总是知道。

我通过阅读这篇论文找到了这个解决方案:Outlier Detection for Multidimensional Time Series using Deep Neural Networks (DOI:10.1109/MDM.2018.00029)