测量不同长度的阵列的相似性

时间:2015-03-19 21:06:28

标签: machine-learning

我有两个2-D阵列:

a: [(1,2), (1,3) (2,3), (4,5), ...... (100,101), (101,102)]

b: [(2,2), (2,1) (3,2), (4,3), ...... (100,99), (101,101)]

假设a: 101 的长度 假设b的长度: 101

和一个数组:

c: [(4,4), (4,5), (7,7) ... (22,24)]

假设c的长度: 21

我想找到一种方法来了解数组c是否更多类似于a或b。

===========

到目前为止我所尝试的很简单,但结果并不完美:

  1. 步骤1:计算c和a的DTW distance,使用数组c长度的窗口大小(因为数组c较小),你将获得一个DTW距离数组,得到平均值它的价值。即0.212

  2. 第2步:在c和b上做同样的事情,得到平均值。即0.32

  3. 步骤3:由于上面的计算要知道,c更类似于a,因为平均dtw距离较小。

  4. 但是(总有一个但是:|),结果并不完美,错误发生了。

    ===========

    附加到我原来的问题:

    更好的方法吗?小心c的数组不固定。

    非常感谢你们。

1 个答案:

答案 0 :(得分:0)

DTW是距离的一个很好的测量方法,但在拍摄之后,你只是做了一个平均值,这显然不是一个很好的距离测量,因为它没有考虑到偏差,例如。目前尚不清楚如何在获取距离后以阵列结束。你的数组似乎是由向量组成的,所以它只是一个常见的数组,但是不要将A和B作为| A - B |中的标量,而应该将它们作为向量。

另外你说数组a小于c,但在例子中,数组a的长度为101,而数组c的数组长度为21。

我还建议您进一步研究,看看FastDTW,它是DTW的时间和空间分摊线性算法: https://code.google.com/p/fastdtw/

和HMM: http://en.wikipedia.org/wiki/Hidden_Markov_model