两个数据集或数组之间的相似性

时间:2013-11-06 14:56:52

标签: algorithm correlation similarity

我们说我的数据集看起来像这样:

{A:1, B:3, C:6, D:6}

我还有一个其他集的列表来比较我的特定集:

{A:1, B:3, C:6, D:6},  
{A:2, B:3, C:6, D:6},  
{A:99, B:3, C:6, D:6},  
{A:5, B:1, C:6, D:9},  
{A:4, B:2, C:2, D:6}

我的参赛作品可以看作一张桌子(有四列,A,B,C,D和E)。

如何找到最相似的集合? 对于这个例子,第1行是完美匹配,第2行是第二行,而第3行是相当远的。

我正在考虑计算一个简单的delta,例如:Abs(a1 - a2) + Abs(b1 - b2) + etc并且可能为具有最佳增量的条目获得correlation value

这是一种有效的方法吗? 这个问题的名称是什么?

2 个答案:

答案 0 :(得分:2)

是的,这应该可以很好地运作。

在数学术语中,它将是:x ∈ (a,b,c,d) Abs(x1 - x2)

或许比率可能是一个更好的主意,这取决于你是否想要这样做。

考虑1000000, 5, 5, 5 vs 999995, 5, 5, 51000000, 0, 5, 5等内容。

根据上面的公式,第一个与第二个和第三个具有相同的相似性。

如果不需要(因为999995可以认为非常接近1000000,而0可以被认为距离5很远),你应该在计算每个距离时除以两者的最大值。

x ∈ (a,b,c,d) [ Abs(x1 - x2) / max(x1, x2) ]

这将把每个数字放在0和1之间,这是值之间的百分比差异。

这意味着,对于上面的示例,我们认为1000000, 5, 5, 5999995, 5, 5, 5非常相似(因为上述总和将是|1000000-999995|/1000000 + 0 + 0 + 0 = 0.000005)和1000000, 5, 5, 5并且1000000, 0, 5, 5将被视为更加不同(因为总和将是|0+5|/5 + 0 + 0 + 0 = 1)。

答案 1 :(得分:1)

你的问题让我想起找到Hamming distance。基本上,两个对象之间的汉明距离是一个对象中必须更改的元素数,以使其与另一个对象匹配。也有类似的措施(Damerau–Levenshtein distanceEuclidean distance等)。

您有多种选择可以实现此目的。例如,{1,3,4}和{1,7,4} 1之间的距离(因为一个元素改变了)或4(因为改变的大小)?你如何实际定义距离在很大程度上取决于问题的背景,而且不一定是正确答案。

相关问题