【问题标题】:mlpy - Dynamic Time Warping depends on x?mlpy - 动态时间规整取决于 x?
【发布时间】:2013-09-24 02:18:48
【问题描述】:

我试图通过 DTW 获取下面显示的这两个数组之间的距离。

我正在使用提供的 Python mlpy

dist, cost, path = mlpy.dtw_std(y1, y2, dist_only=False)

我了解 DTW 确实负责“转移”。此外,从上面可以看出,mlpy.dtw_std() 只接受 2 个一维数组。所以我希望无论我如何左/右移动曲线,函数返回的dist 都不会改变。

然而,在我的绿色曲线向右移动一点之后,mlpy.dtw_std() 返回的 dist 发生了变化!

转移前:Python mlpy.dwt_std 报告 dist = 14.014

转移后:Python mlpy.dwt_std 报告dist = 38.078 显然,由于曲线仍然是那两条曲线,我不希望距离不同!

为什么会这样?哪里出错了?

【问题讨论】:

  • 你是怎么换档的?你能显示你的代码吗?如果在向量的开头添加“人工”点,问题是这些点也需要被映射,所以最终的 DTW 值会改变。

标签: python algorithm machine-learning pattern-matching data-mining


【解决方案1】:

让我重申一下我的理解,如果我在任何地方出错,请纠正我。我观察到,在您的两个图中,蓝色的一维系列保持不变,而绿色则被拉伸。你是怎么做的,你已经在 2013 年 9 月 19 日 9:36 的帖子中解释了它。您的前提是,因为(1)DTW“照顾”时移,并且(2)您所做的只是纵向拉伸一个时间序列,而不影响 y 值,(推论:)您期望距离保持不变。

[(1),(2)] 和 [(Inference)] 之间缺少一点联系。也就是说,对应于映射的各个距离值将随着您更改信号集本身而改变。这将导致整体距离计算的差异。 绘制弯曲路径、成本网格以亲自查看。

让我们来看一个过于简单的案例......

a=range(0,101,5) = [0,5,10,15...95, 100]

b=range(0,101,5) = [0,5,10,15...95, 100]。

现在直观地说,您/我希望 2 个信号(用于 DTW 映射)之间一一对应,并且所有映射的距离都为 0,信号看起来相同。

如果我们现在,b=range(0,101,4) = [0,4,8,12...96,100], a 和 b 之间的 DTW 映射仍然会以 a 的 0 开始映射到 b 的 0,并以 a 的 100 结束并映射到 b 的 100(边界约束)。此外,由于 DTW 会“处理”时移,我还希望两个信号中的 20、40、60 和 80 能够相互映射。 (我自己没有尝试对这两个进行DTWing,是凭直觉说的,所以请检查一下。根据允许的步骤模式/全局约束,也几乎没有发生非直觉变形的可能性,但让我们使用直观的变形为了便于理解/简单起见的时刻)。

对于剩余的数据点,很明显,映射对应的距离现在非零,因此总距离也非零。我们的距离/总成本值已从零变为非零。

现在,当我们的信号过于简单,呈线性增长时,就是这种情况。想象一下当你有现实生活中的非单调信号时会出现的变化,并且需要在它们之间找到时间扭曲。 :)

(PS:请不要忘记为答案投票:D)。谢谢。

【讨论】:

    【解决方案2】:

    显然,曲线不相同,因此距离函数不能为0(否则,它不是定义的距离)。

    什么是“相对较大”?距离大概不是无限的吧?

    140 个时间点,每个时间点都有一个小的增量,这仍然是一个非零数字。

    “纽约”到“北京”的距离大约是 11018 公里。或 1101800000 毫米。

    到 Alpha Centauri 的距离很小,只有 4.34 lj。那是离我们最近的其他恒星系统......

    与非相似系列的距离进行比较;这个距离应该更大。

    【讨论】:

    • 是的,我没有说它们是相同的。但我希望系统能够识别它们是相似的。我的问题是,假设我将红色曲线向右移动了一点,那么我希望 dtw 报告的 dist 会更小,尽管它是相同的红色曲线。我在问如何消除对 dwt 的移位影响。谢谢!
    • DTW 应该主要负责转移,所以如果您手动转移,这应该不会对相似度产生太大影响。
    • 所以你的意思是我必须先手动移动它然后应用DTW? AFAIK,DTW 报告的 dist 确实受其相对位置的影响。
    • 请参考更新后的问题,显示 DTW 如何随移动效果而变化。谢谢!
    • 你是如何完成换班的?您是将其作为一维(仅 y)系列还是二维(x,y)系列进行 DTW?这也很重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2020-01-31
    • 2013-02-01
    • 2021-06-14
    相关资源
    最近更新 更多