时间序列数据实时标准化的算法?

机器算法验证 时间序列 正常化 即时的
2022-03-20 11:25:43

我正在研究一种算法,该算法从多个传感器流中获取最新数据点的向量,并将欧几里德距离与先前的向量进行比较。问题是不同的数据流来自完全不同的传感器,因此采用简单的欧几里德距离会大大过分强调某些值。显然,我需要一些方法来规范化数据。但是,由于该算法被设计为实时运行,因此我不能在规范化中使用有关任何数据流的任何信息作为一个整体。到目前为止,我一直在跟踪每个传感器在启动阶段看到的最大值(前 500 个数据向量),然后将来自该传感器的所有未来数据除以该值。这工作得非常好,但感觉非常不雅。

我没有太多运气为此找到一个预先存在的算法,但也许我只是没有在正确的地方寻找。有人知道吗?或者有什么想法?我看到一个建议使用运行平均值(可能由 Wellford 算法计算),但如果我这样做,那么相同值的多个读数不会显示为相同,这似乎是一个很大的问题,除非我我错过了一些东西。任何想法表示赞赏!谢谢!

1个回答

根据您的问题,我了解到您希望:

  1. 找到一种方法来标准化来自每个传感器的数据贡献。
  2. 查看新数据点是否与以前的点有很大不同。

这是我要开始的地方

1.对于你的第一个问题:去除平均值和美白是你要找的。白化变换可确保您的所有特征都在相同的动态范围内。

我将做一些简化的假设,这些假设可能完全相关,但非常适合作为构建的起点。

假设您的数据是单模态的,它有一个明显的平均值。我将首先减去数据的平均值并执行白化变换(可能是 PCA,也可能是 ZCA,具体取决于您的数据)

如果您想实时执行此操作,我将使用正在运行的样本计数来在移动窗口上执行白化。确保您有足够的样本来使白化准确(白化需要协方差矩阵是可逆的,因此您需要比传感器更多的时间样本)。

现在,如果您的数据不是单峰的,我可能会对数据进行聚类以查看模式所在的位置。在最基本的情况下,对于每个到达的新点,我会将其关联到适当的集群并从那里移动。

2.为了有效地测量与过去点的距离,我会使用马氏距离实际上,马氏距离几乎就是白化空间中的欧几里得距离。

总之,请阅读有关美白和马氏距离的信息,我认为这些将为您指明您所寻求的方向。