【问题标题】:Query sub-sequences in time-series sequence data查询时序序列数据中的子序列
【发布时间】:2020-09-16 10:51:22
【问题描述】:

我遇到了一个问题,我觉得图论或图数据库中有解决方案。我在这些领域的知识非常有限。我希望有人能认出我的问题,或许可以指出用于解决问题的技术名称。

简化示例:

我正在处理时间序列的状态。一个简单的例子,只有两种状态:

TS    State
t0    T
t1    F
t2    F
t3    F
t4    T
t5    T
t6    T
t7    F
t...  ...

我可以将其转换为具有两个节点(T 和 F)的图表,其中状态中的“停留时间”是一个属性(在括号中):

T(1) -> F(3) -> T(3) -> F(1)

我的问题的一个例子是编写一个“查询”来提取与此模式F(>=2) -> T(<10) 匹配的任何子序列。 在上面的示例中,我的查询将提取子序列: F(3) -> T(3)

但如果它存在于数据集中,查询也可以提取如下序列:

F(2) -> T(8)
F(20) -> T(3)

我举的例子是简化的:有两个以上的状态,更高级的查询将允许循环,这些循环可以限制在循环中花费的总时间,或者可以进行的循环数完成:例如

`T(>2) -> [loops of F(1)->T(1)] -> T(<10)` 

我的循环可能会被限制为不超过 10 次迭代,或者不超过 10 个时间单位。 锦上添花的是找到这样的序列

T(n)->F(<n)

翻译为:以 T 开头的序列(并在 T 中停留 n 个时间单位),然后是 F 状态,它在 F 中停留小于 n em>(即F比前面的T短)

我尝试了什么

我最初想将其转换为字符串,并使用正则表达式来提取匹配项。正则表达式可以满足我的所有需求,但无法理解像“大于”这样的算术。我想我可以保留我的原始时间序列状态 (TFFFTTTF) 并对此进行正则表达式...但它看起来很丑。

想到自然语言处理、图论、图数据库等领域,这些领域也会有类似的问题。 我不知道如何在我的图表中编码“状态持续时间”属性。我不知道是否有某种“行业标准”查询语言用于图形数据库中的子序列搜索。

问题

-是否有解决这些子序列提取问题的框架,如果有,它是如何调用的?有“最佳实践”吗?我应该如何构建我的数据?是否有查询语言来查询序列数据库中的子序列?

【问题讨论】:

    标签: nlp sequence graph-theory graph-databases graph-data-science


    【解决方案1】:

    我可能会解决这个问题。您已经指出这是时间序列数据。鉴于此,我可能会在每次状态更改时创建一个新的状态节点。然后,我将对前一个节点中的“停留”时间进行编码,并将新节点链接到前一个状态节点,在图形数据库中创建一个链表。有了这种结构,您的模式查询就变得简单了。

    Objectivity/DB 是一个基于模式的对象/图形数据库,具有一整套图形导航查询功能。它有自己的查询语言,称为声明性客观性或 DO。

    我们从模式定义开始:

    UPDATE SCHEMA { 
        CREATE CLASS State{
            label       : String,
            dwellTime   : INTEGER { Storage: B32 },               
            prev        : Reference { referenced: State, Inverse: next },
            next        : Reference { referenced: State, Inverse: prev}
        }           
    };
    

    然后我们可以执行如下的 DO 查询:

    MATCH p = (:State {label == 'T' AND dwellTime > 5})
               -->(:State {label == 'F' AND dwellTime > 5})
               -->(:State {label == 'T' AND dwellTime < 2})
               -->(:State {label == 'T' AND dwellTime > 100})
               -->(:State {label == 'F' AND dwellTime > 100})
               RETURN p;
    

    这种查询会找到所有满足指定停留时间的“TFTTF”模式。

    【讨论】:

      猜你喜欢
      • 2013-08-02
      • 2021-02-20
      • 2016-12-22
      • 2014-09-07
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      相关资源
      最近更新 更多