双打的相似度量

时间:2014-07-08 17:53:58

标签: java double similarity measure

我正在设计匹配系统,并希望计算数字对之间的相似性。所以我们假设我们有两组数字:

15 13 17 100

1 14 15 105 27 30

我现在想要计算它们之间的相似性 a)这两组数字和 b)每个数字之间(例如sim(15,1),sim(13,1)等) 返回0和1之间的相似值。

现在我的问题是文献中是否存在针对此任务的相似性度量。如果甚至有一个java实现,我会更加欣赏这一点。

更新:

存在大量用于字符串相似性的度量(例如Levenshtein度量),但我找不到与数字等价的东西。

目标是在匹配系统中使用它,该系统应返回0和1之间两个数据库行的相似性。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

正如你所指出的,坏消息是它必须适用于任意数字集。好消息是你有一个来自数字集的样本。

您需要考虑整列中数字的范围和分布。

假设行A在特定列中的值为1,而行B的值为3.请考虑两种不同的情况:

  1. 所有行的值均为1,2或3,频率大致相等。在这种情况下,该列中的行A和行B不同。
  2. 所有行的值均为1到100,同样频率大致相等。现在,行A和行B在该列中非常相似 - 大多数行的值相差超过2。
  3. 在数据库的上下文中,您可能有关于数据库设计的其他信息,这些信息应该通知您的行相似性度量。即使没有这个,您也可以查看数字列中的数字分布,并询问“这个列中两个独立行的概率是多少?”。

    我通过搜索bayesian pairwise similarity在这个一般区域找到了一些论文。特别是,虽然对于不同的域Measuring similarity between gene expression profiles: a Bayesian approach,但可能包含一些相关的想法。