相似距离测量

时间:2013-05-11 11:29:50

标签: vector data-mining similarity hamming-distance

像这样的矢量

v1 = {0 0 0 1 1 0 0 1 0 1 1}
v2 = {0 1 1 1 1 1 0 1 0 1 0}
v3 = {0 0 0 0 0 0 0 0 0 0 1}

需要计算它们之间的相似性。 v1v2之间的汉明距离是4,v1v3之间的汉明距离也是4.但是因为我对'1'的组合感兴趣v2v1更为相似,然后是v3

是否有可以在数据中捕获此值的距离指标?

数据代表房屋的入住率,这就是为什么它对我很重要。 “1”表示占用,“0”表示未占用。

5 个答案:

答案 0 :(得分:8)

听起来你需要cosine similarity衡量标准:

similarity = cos(v1, v2) = v1 * v2 / (|v1| |v2|)

其中v1 * v2v1v2之间的点积:

v1 * v2 = v1[1]*v2[1] + v1[2]*v2[2] + ... + v1[n]*v2[n]

基本上,点积显示两个向量中有多少元素在同一位置有1:如果v1[k] == 1v2[k] == 1,则最终总和(因此相似性)增加,否则不是改变。

您可以使用点积本身,但有时您会希望将最终相似度归一化,例如在这种情况下,您可以将v1v2的点积除以它们的长度 - |v1||v2|。基本上,矢量长度是矢量与其自身的点积的平方根:

|v| = sqrt(v[1]*v[1] + v[2]*v[2] + ... + v[n]*v[n])

拥有所有这些,很容易实现余弦距离,如下所示(Python中的例子):

from math import sqrt

def dot(v1, v2):
    return sum(x*y for x, y in zip(v1, v2))

def length(v):
    return sqrt(dot(v, v))

def sim(v1, v2): 
    return dot(v1, v2) / (length(v1) * length(v2))

注意,我描述了相似性(两个矢量彼此关闭多少),而不是距离(它们是)。如果您需要精确距离,则可以将其计算为dist = 1 / sim

答案 1 :(得分:4)

有数百种距离函数,包括的距离度量,例如Dice和Jaccard。

你可能想要获得“距离函数词典”这本书,这很不错。

答案 2 :(得分:1)

  

案例1:如果系列中的那些人的位置是相关的,那么:

我建议使用动态时间扭曲距离(DTW)。在应用时间序列数据时,它已被证明非常有用。

要检查是否可以将其应用于您的问题,我使用了此处提供的代码:https://jeremykun.com/2012/07/25/dynamic-time-warping/

d13 = dynamicTimeWarp(v1,v3)
d12 = dynamicTimeWarp(v1,v2)
d23 = dynamicTimeWarp(v2,v3)

d23,d12,d13
(3, 1, 3)

如您所见,d12最低,因此v1和v2最相似。有关DTW的更多信息可以在本论坛的任何地方找到,也可以在研究论文中找到,我建议Eamonn Keogh提供任何信息。

  

案例2:1的位置无关:

我只是同意Deepu将平均值作为一项功能。

答案 3 :(得分:0)

我认为你可以简单地取每组中的平均值。例如,v1此处的平均值 0.4545 v2的平均值 0.6363 v3的平均值 0.0909 即可。如果集合中唯一可能的值为0和1,则具有相等或几乎相等值的集合将满足您的目的。

答案 4 :(得分:-1)

有一个网站介绍了各种类型的矢量相似性方法

http://dataaspirant.com/2015/04/11/five-most-popular-similarity-measures-implementation-in-python/

我认为它可以帮助您确定应该使用的相似性

简要说明上述链接,矢量之间有五种流行的相似性度量

  1. 欧几里德距离 - 仅仅是向量之间的绝对距离

  2. 余弦 - 矢量之间的余弦度(θ)差异

  3. 曼哈顿 - 笛卡尔坐标的绝对差值之和,例如,

  4.   

    在p1位于(x1,y1)且p2位于(x2,y2)的平面中。曼哈顿距离   = | x1 - x2 | + | y1 - y2 |

    1. Minkowski - 欧几里德距离和曼哈顿距离的广义度量形式

    2. Jaccard - 对象之间的相似性。因此,一组中的每个特征将与另一组进行比较并找出其差异

    3. 使用上面的关键字,您可以谷歌进一步解释。 希望它能帮到你