IT技术博客大学习 共学习 共进步

相似度计算之兰氏距离

标点符 2018-07-05 14:00:16 浏览 3,583 次

   兰氏距离(Lance and Williams distance)堪培拉距离(Canberra Distance),被认为是曼哈顿距离的加权版本。

   其定义公式为:

    \[d(\mathbf {p} ,\mathbf {q} )=\sum _{i=1}^{n}{\frac {|p_{i}-q_{i}|}{|p_{i}|+|q_{i}|}}\]

   通常兰氏距离对于接近于0(大于等于0)的值的变化非常敏感。与马氏距离一样,兰氏距离对数据的量纲不敏感。不过兰氏距离假定变量之间相互独立,没有考虑变量之间的相关性。

   Python实现:

def canberra_distance(p, q):
    n = len(p)
    distance = 0
    for i in n:
        if p[i] == 0 and q[i] == 0:
            distance += 0
        else:
            distance += abs(p[i] - q[i]) / (abs(p[i]) + abs(q[i]))
    return distance

   参考资料:

建议继续学习

  1. 相似度计算常用方法综述 (阅读 10,443)
  2. 字符串匹配那些事(一) (阅读 7,102)
  3. 如何计算两个文档的相似度(一) (阅读 6,584)
  4. 如何计算两个文档的相似度(二) (阅读 5,104)
  5. URL相似度计算的思考 (阅读 4,562)
  6. Levenshtein distance相似度算法 (阅读 4,381)
  7. 如何计算两个文档的相似度(三) (阅读 3,802)
  8. 若无云,岂有风——词语语义相似度计算简介 (阅读 3,664)
  9. 常见相似度计算方法回顾 (阅读 3,244)
  10. 相似度计算之马氏距离 (阅读 3,143)