作为动态时间规整(DTW)的新手,我发现它的Python实现mlpy.dtw没有进行非常详细的扩展。我对其返回值有一些疑问。

关于返回值dist?我有两个问题:


这里有错字吗?对于标准DTW,该文件说



  如[Muller07]中所述,使用欧几里德距离的标准DTW
  (差的绝对值)或欧几里德距离的平方(为
  (在[Keogh01]中)作为本地费用指标。


该文件说,对于子序列DTW


  [Muller07]中所述的子序列DTW,假设长度为
  y的x比x的长度大得多,并且使用Manhattan
  距离(差的绝对值)作为本地成本度量。


相同的所谓“差的绝对值”对应两个不同的距离度量?


总距离?运行代码段后

dist,cost,path = mlpy.dtw_std(x,y,dist_only = False)


dist是一个值。那么,这是每个匹配对之间所有距离的总和吗?

最佳答案

是的,mlpy.dtw()函数没有充分的文档说明。


第一个问题:这里没有错字。如您在文档中所见,欧几里得距离,平方欧几里得距离和曼哈顿距离与本地成本度量有关。在这种情况下,成本度量定义为两个实数值(一维)之间的距离,请参见http://en.wikipedia.org/wiki/Dynamic_time_warping中伪代码中的成本。因此,在这种情况下,曼哈顿距离和欧几里得距离相同(http://en.wikipedia.org/wiki/Euclidean_distance#One_dimension)。无论如何,在标准dtw中,您可以通过平方参数来选择欧几里德距离(差的绝对值)或平方欧几里德距离(平方差):


>>> import mlpy
>>> mlpy.dtw_std([1,2,3], [4,5,6], squared=False) # Euclidean distance
9.0
>>> mlpy.dtw_std([1,2,3], [4,5,6], squared=True) # Squared Euclidean distance
26.0



第二个问题:dist是时间序列x和y之间的非标准化最小距离翘曲路径。它是未归一化的DTW距离。您可以将其除以len(X)+ len(Y)进行归一化。见http://www.irit.fr/~Julien.Pinquier/Docs/TP_MABS/res/dtw-sakoe-chiba78.pdf


干杯,
戴维德

关于python - 关于Python中的mlpy.dtw软件包的两个问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18889747/

10-12 23:30