动态时间规整和归一化

机器算法验证 时间序列 正常化 功能数据分析
2022-03-04 07:04:15

我正在使用动态时间扭曲来匹配“查询”和“模板”曲线,并且到目前为止取得了相当大的成功,但我有一些基本问题:

  1. 我通过评估 DTW 结果是否小于我启发式得出的某个阈值来评估“匹配”。这是使用 DTW 确定“匹配”的一般方法吗?如果不是,请解释...

    假设 (1) 的答案是“是”,那么我很困惑,因为 DTW 结果对 a) 曲线幅度的差异和 b) 查询向量的长度和“模板”矢量。

    我使用的是对称阶跃函数,因此对于 (b),我通过除以 M+N(DTW 矩阵的宽度 + 高度)来归一化我的 DTW 结果。这似乎有点有效,但它似乎会惩罚距离对角线较远的 DTW 匹配(即,通过 DTW 矩阵的路径较长)。对于“标准化”方法来说,这似乎有点武断。除以通过矩阵的步数似乎具有直观意义,但根据文献,这似乎不是这样做的方法。

  2. 那么有没有更好的方法来根据查询和模板向量的大小调整 DTW 结果呢?

  3. 最后,如何针对查询和模板向量之间的幅度差异对 DTW 结果进行归一化?

事实上,鉴于缺乏可靠的标准化技术(或我缺乏理解),在处理样本数据以确定定义“匹配”的最佳阈值水平时似乎需要进行大量手动工作。我错过了什么吗?

1个回答

至少据我所知,不存在对此的“一般方法”。此外,无论如何您都在尝试最小化距离度量。例如,在 DTW 论文的祖父 Sakoe & Chiba (1978)中使用作为两个特征向量之间差异的度量。||aibi||

正如您正确识别的那样,您需要(通常)具有相同数量的点才能开箱即用。我建议在曲线上使用 lowess() 平滑器/插值器,以使它们首先具有相同的大小。这是“曲线统计”的非常标准的东西。您可以在Chiou 等人中看到一个示例应用程序。(2003)作者在这项工作中并不关心 DTW,但它是如何处理大小不等的读数的一个很好的例子。

此外,正如您所说,“幅度”是一个问题。老实说,这有点开放。您可以尝试像Zhang 和 Mueller (2011)提出的曲线下面积方法来解决这个问题,但实际上是为了时间扭曲甚至超范数归一化(即将替换为可以像Tang and Mueller (2009)的这篇论文中那样做。我会遵循第二个,但无论如何你也注意到样本的归一化是必要性。f(x)f(x)supy|f(x)|

根据数据的性质,您可以找到更多特定于应用的文献。我个人认为关于目标成对翘曲函数的最小化方法是最直观的。所以要最小化的目标函数是: ,尽管它是不可思议的,但整个事情实际上非常简单:您尝试找到扭曲函数,该函数 g 最小化扭曲查询曲线与参考曲线(项gCλ(Yi,Yk,g)=E{T(Yi(g(t))Yk(t))2+λ(g(t)t)2dt|Yi,Yk}gYi(g(t))Yk(t)Yi(g(t))Yk(t)) 受到对该扭曲施加的时间失真的一些归一化(术语)。这就是 MATLAB 包PACE正在实现的内容。我知道JO Ramsay 等人的 R 包fda存在。这也可能有帮助,但我没有亲自使用它(有点烦人的是,该包方法的标准参考在许多情况下是 Ramsay 和 Silverman 的优秀书籍,Functional Data Analysis (2006) 2nd ed.,你必须搜索400 页的书,可以找到你想要的东西;至少它还是很好读的)g(t)t

您在统计文献中描述的问题被广泛称为“曲线配准”(例如,参见Gasser 和 Kneip (1995)对该问题的早期处理),属于功能数据分析技术的一般范畴。

(如果我能在网上找到原始论文,链接指向那里;否则链接指向一个通用数字图书馆。几乎所有提到的论文都可以免费找到草稿版本。我删除了我原来的评论被本帖取代。)