有序二元向量的相似性度量

数据挖掘 相似
2021-09-17 18:31:33

我想请教您对如何选择相似度度量的意见。我有一组长度为 N 的向量,每个元素可以包含 0 或 1。向量实际上是有序序列,因此每个元素的位置很重要。假设我有三个长度为 10、x_1 x2、x3 的向量:x1 在位置 6、7、8 有三个 1(索引从 1 开始。x2 和 x3 都有一个额外的 1,但是 x2 在位置 9 有它,而 x3 有它在位置 1。我正在寻找一个指标,根据该指标,x1 与 x2 比与 x3 更相似,因为额外的 1 更接近于“大部分”。我想这是一个相对常见的问题,但我我对处理它的最佳方法感到困惑。非常感谢提前!

3个回答

您可以做的一件事是模糊您的向量:将每个 1 替换为(例如)其位置的 0.4,相邻位置的 0.2,以及第二个位置的 0.1。然后将每个位置的内容加起来。使用这些模糊化向量,您可以应用基于距离或类似余弦相似度的相似度度量。您的示例将产生:(仅显示第一个小数)

0000011100 -> 0001378731

0000011110 -> 0001378873

1000011100 -> 4211378731

cos(x1, x2) = 0.9613, cos(x1,x3) = 0.9469

如果速度不是一个大问题,您可以使用具有高带宽的KDE来获取相邻元素之间的相似性,然后使用适当的指标,如KL 散度当然,相似性和差异性是互补的,因此作为最后一步,您必须将它们联系起来;例如,sim(A, B) = exp[- KLD(A, B)]

另一种可能性是地球移动器的距离我将它应用于计算机视觉,但我认为它可能适合您的具体问题。