我们说我的数据集看起来像这样:
{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。
这是一种有效的方法吗? 这个问题的名称是什么?
答案 0 :(得分:2)
是的,这应该可以很好地运作。
在数学术语中,它将是:∑x ∈ (a,b,c,d) Abs(x1 - x2)
或许比率可能是一个更好的主意,这取决于你是否想要这样做。
考虑1000000, 5, 5, 5
vs 999995, 5, 5, 5
和1000000, 0, 5, 5
等内容。
根据上面的公式,第一个与第二个和第三个具有相同的相似性。
如果不需要(因为999995
可以认为非常接近1000000
,而0
可以被认为距离5
很远),你应该在计算每个距离时除以两者的最大值。
∑x ∈ (a,b,c,d) [ Abs(x1 - x2) / max(x1, x2) ]
这将把每个数字放在0和1之间,这是值之间的百分比差异。
这意味着,对于上面的示例,我们认为1000000, 5, 5, 5
和999995, 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 distance,Euclidean distance等)。
您有多种选择可以实现此目的。例如,{1,3,4}和{1,7,4} 1之间的距离(因为一个元素改变了)或4(因为改变的大小)?你如何实际定义距离在很大程度上取决于问题的背景,而且不一定是正确答案。