作为动态时间规整(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/