二进制向量之间的距离或相似度可以使用以下度量方法:
- Jaccard 距离
- Hanming 距离
- Tanimoto 距离
1. Jaccard 相似度
- x ∪ y 表示 x 和 y 集合的并集
- x ∩ y 表示 x 和 y 集合的交集
- Jaccard 值取值范围在 [-1, 1] 之间, 值越大两个集合越不相似.
如果用于二进制向量的计算,计算过程如下:
A = [1, 1, 0, 1, 0]
B = [0, 1, 1, 1, 0]
根据对应位置会有下面四种情况:
- 情况 a:A = 1 并且 B = 1
- 情况 b:A = 1 并且 B = 0
- 情况 c:A = 0 并且 B = 1
- 情况 d:A = 0 并且 B = 0
Jaccard 距离为:(b + c) / (a + b + c),Jaccard 相似度为:a / (a + b + c),,从计算公式可以看到:
- Jaccard 相似度 = 1 – Jaccard 距离
- Jaccard 计算时,分母中不包含对应位置都是 0 的情况
- 如果两个向量全都是 1,则 Jaccard 相似度为 1
- 如果两个向量全都是 0,则 Jaccard 相似度为 0
2. Hanming 距离
Hanming 距离是以理查德·卫斯里·汉明的名字命名的。在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。
假设,我们有两个二进制向量如下:
A = [1, 1, 0, 1, 0]
B = [0, 1, 1, 1, 0]
汉明距离为对应位置不同的数量,这里是 2,Hanming 相似度计算为:1-(2/5) = 0.6。从计算过程可以看到,当两个二进制向量完全一样的时,Hanming 相似度的值为 1.
3. Tanimoto 距离
假设有两个列表如下:
A = [1, 2, 3, 4, 5]
B = [1, 3, 5, 6]
A ∩ B = [1, 3, 5]
计算公式如下:
根据公式可得:3/(5 + 4 – 3) = 1/2