algorithm - 寻找(子)时间序列的(非常)快速近似匹配

标签 algorithm pattern-matching time-series matching sequences

我正在处理一个庞大的时间序列数据库。每 n 毫秒保存一个值。必须根据数据库中已有的旧时间序列检查新时间序列。

此刻我陷入困境,因为每个解决方案都像 O(n²) 一样昂贵。

下面我有一些图片,显示了匹配的短时间序列(灰色和橙色)。该算法应该能够识别此类匹配项,而无需像我需要速度那样准确。一个近似值就足够了。

我在网上研究了一些关于“最长公共(public)子序列问题”或“动态时间扭曲”的论文。但要么处理完美的测量值或完美的尺寸,要么处理 O(n²)。

  1. 完美匹配两个时间序列(灰色和橙色)
  2. 新测量值不准确(橙色)但仍然匹配
  3. 一个简短的新测量(橙色)但仍然匹配
  4. 一个巨大的新测量值(橙色),但仍然匹配
  5. 新测量失败(橙色)但仍然匹配

最佳答案

DTW 的摊销时间小于 O(N)

以 100,000Hz 执行此操作非常容易

看看这个视频

https://www.youtube.com/watch?v=d_qLzMMuVQg

关于algorithm - 寻找(子)时间序列的(非常)快速近似匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33392743/

相关文章:

r - 如何有效地推断多个变量的缺失数据

带有时间序列的python递归矢量化

python - 更改 Pandas Dataframe 中的时间频率

algorithm - 约翰逊算法负边距矩阵

scala - 在 Scala 中,如何根据带有类型参数的类型测试 'Any' 对象的类型?

"pick the number up game"的算法

Haskell 匹配构造类似于 F# 类型测试模式?

postgresql - WHERE name = 'cat' 失败而 `WHERE name LIKE ' %cat` 在 PostGres 上工作

algorithm - 俄罗斯方 block 拼图的多项式时间解决方案

c# - 高度并行化的Levenshtein距离算法