关于Python中mlpy.dtw包的两个问题?

时间:2013-09-19 08:28:47

标签: python machine-learning

作为Dynamic Time Warping(DTW)的新手,我发现它的Python实现mlpy.dtw没有详细记录。我的返回值有些问题。

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

  • 这里有任何错字?对于标准DTW,文档说
  

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

对于子序列DTW,该文件说

  

[Muller07]中描述的子序列DTW,假设长度   y的长度远大于x的长度并使用曼哈顿   距离(差异的绝对值)作为本地成本度量。

相同的所谓“差异的绝对值”对应两个不同的距离指标?

  • 总距离?运行代码段后

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

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

2 个答案:

答案 0 :(得分:2)

是的,mlpy.dtw()功能没有详细记录。

  • 第一个问题:此处没有拼写错误。正如您在文档中看到的那样,欧几里得,欧氏距离和曼哈顿距离的平方与本地成本指标有关。在这种情况下,成本度量被定义为两个实际值(一维)之间的距离,参见http://en.wikipedia.org/wiki/Dynamic_time_warping中伪代码中的 cost 。因此,在这种情况下,曼哈顿距离和欧几里德距离是相同的(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

干杯, 的Davide

答案 1 :(得分:2)

这似乎是文档中的错误。欧几里德距离不是“差值的绝对值”,它是对曼哈顿度量的正确描述。可能作者正在考虑一个维度的情况,如在R中,欧几里得和曼哈顿的指标都是相同的(并且欧几里德度量确实表达了差异的绝对值)。 我不熟悉该库,如果它只对1维对象进行操作,则没有错误,这两个距离度量是等价的

dist值是最佳时间扭曲的值(以匹配的汇总成本see the algorithm definiton on wikipedia衡量)。实际上它是两个序列之间的最小编辑距离,其中特定编辑的成本以“匹配”对象之间的不相似(距离)表示