【发布时间】:2013-05-14 14:31:08
【问题描述】:
我有多个时间序列表示为多个整数列表(在主内存中,而不是在数据库中)。我需要在所有系列中执行快速搜索以找到特定模式。
例如,检测模式 [ (0,1), (3,2), (4,1) ] 其中 (x,y) x = time, y = # series。
我在谷歌上搜索了模式检测、模式匹配,但似乎有数千种算法,而且我大部分时间都不太明白与我的问题的关系。 我可以做第一个想到的想法,比如,对于每个点,根据模式检查到特定火车上下一个点的距离,等等。
我需要关于从哪里开始的指导,因为我对所有这些研究人员的出版物感到困惑!
非常感谢
尼哥
规范:我将进行多次传递,并带有相关的抖动。 例如,让我们采用上面定义的模式。对于第一遍,我需要匹配精确的模式。第二遍,我需要匹配抖动为 1 的模式 -> [ (0,1), ( 3 +- 1, 2) (4 +- 1, 1) ], 第二遍 -> [ (0,1), (3 +- 2, 2) (4 +- 1, 1) ] 等。抖动上升到五个。 只有第一个“事件”(时间,# serie)始终是“恒定的”。
我还需要补充一点,时间序列中的最大时间在10万左右,所以可以转换成0和1的“位串”。
编辑:特定时间的价值无关紧要,我什至没有。它只是在不同时间和位置的一系列“事件”(事件发生在哪个系列)。所有事件都是平等的。 (论文有时会检测到具有双重价值等的模式,但在这里它是无用的)
【问题讨论】:
-
您需要近似匹配,还是只需要精确匹配?
-
我添加了更详细的规范:)
-
除了搜索“模式匹配”之外,还尝试搜索时间序列数据的“查询”或“索引”,这会产生例如this paper、this paper 和 this thesis。
-
您是否也在寻找速度,或者只是任何可行的方法?
-
速度很关键,内存使用并不重要。它是用于科学程序的。
标签: java algorithm pattern-matching design-patterns