例如,假设我们每 5 秒就有来自传感器的实时数据,同时我们去年一整年都在收集这些数据。现在,我们今天从下午 5:00 到下午 5:10 出现了峰值。我们也想在过去的数据中搜索相似形状(幅度和形状)的尖峰。
我们尝试使用 DTW(动态时间环绕),但对于 5 秒频率数据,需要花费大量时间。如果有人可以帮忙请告诉我。
我建议使用指数阻尼移动平均线创建“指纹”,以限制要比较的候选者数量,然后像现在一样进行比较。
指数阻尼移动平均线由
avg[n] = a*value[n] + (1-a)*avg[n-1]
计算,其中 a
是常数。如果 t
是样本之间的时间,则这大致是一个平均值,表明趋势在时间 t/a
的位置。如果您曾经通过 uptime
计算看到过 Unix 负载平均值,这就是它们的计算方式。
因此计算 3 个平均值。如果用
a
中的{1/12, 1/24, 1/60}
来计算,那么它们基本上就是1分钟、2分钟、5分钟移动平均线。这些数字的组合是 3 维空间中的一个点,代表一个“指纹”。您可以将其扔进k/d 树。现在,当您看到峰值时,请在树中查找与此峰值接近的过去指纹,然后对过去的峰值进行更广泛的比较。
您需要用实际数据进行实验才能回答以下问题:
但是仅从合理的候选人开始应该会取得良好的性能胜利。