常见相似度计算方法

什么是相似度

两个事物的相似程度

常见方法

数据是连续、有序的

向量

用向量表示事物,通常有三种方式计算其相似度:

  • 距离
  • 夹角
  • 相关系数
基于距离的相似度计算
  • 闵可夫斯基距离(Minkowski Distance) d i s t ( X , Y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 / p dist(X,Y) = (\sum_{i=1}^n\left|{x_i-y_i}\right|^p)^{1/p} dist(X,Y)=(i=1nxiyip)1/p
    • p = 1 p=1 p=1 曼哈顿距离(Manhattan Distance) d i s t ( X , Y ) = ∑ i = 1 n ∣ x i − y i ∣ dist(X,Y) = \sum_{i=1}^n{\left|x_i-y_i\right|} dist(X,Y)=i=1nxiyi
      Manhattan Distance

    • p = 2 p=2 p=2 欧氏距离(Euclidean Distance) d i s t ( X , Y ) = ∑ i = 1 n ( x i − y i ) 2 dist(X,Y) = \sqrt{\sum_{i=1}^n{(x_i-y_i)^2}} dist(X,Y)=i=1n(xiyi)2
      Euclidean Distance

    • p = ∞ p=\infty p= 切比雪夫距离(Chebyshev Distance) d i s t ( X , Y ) = m a x ( ∣ x i − y i ∣ ) dist(X,Y) = max(\left|x_i-y_i\right|) dist(X,Y)=max(xiyi)
      Chebyshev Distance

缺点:

  1. 将各个分量的量纲 (scale),也就是“单位”
  2. 没有考虑各分量的分布(期望、方差等)
  • 马氏距离(Mahalanobis Distance)
    有M个样本向量 X 1 X_1 X1~ X m X_m Xm,协方差矩阵记为S,均值记为向量μ。
    d i s t ( X i , Y j ) = ( X i − X j ) T S − 1 ( X i − X j ) dist(X_i,Y_j) = \sqrt{(X_i-X_j)^TS^{-1}(X_i-X_j)} dist(Xi,Yj)=(XiXj)TS1(XiXj)
    • S = I S=I S=I 欧氏距离(Euclidean Distance),协方差矩阵是单位矩阵(各个样本向量之间独立同分布)
    • S = Λ S=\Lambda S=Λ 标准化欧氏距离(Standardized Euclidean distance),协方差矩阵是对角矩阵
  • 兰氏距离(Lance Williams Distance)
    d i s t ( X , Y ) = ∑ i = 1 n ∣ x i − y i ∣ x i + y i dist(X,Y) = \sum_{i=1}^n{\frac{\left|{x_i-y_i}\right|}{x_i+y_i}} dist(X,Y)=i=1nxi+yixiyi
基于夹角的相似度计算
  • 点积(投影)
    可以反映一个向量在另一个向量上投影的长度(标量)
    S i m i l a r i t y = A ⋅ B = ∣ A ∣ ∣ B ∣ c o s θ = ∣ B ∣ ( ∣ A ∣ c o s θ ) Similarity = A\cdot B = \left|A\right|\left|B\right|cos\theta = \left|B\right|(\left|A\right|cos\theta) Similarity=AB=ABcosθ=B(Acosθ)
    a·b
  • 余弦相似度(Cosine Similarity)
    两个向量之间的夹角大小
    S i m i l a r i t y = c o s ( θ ) = A ⋅ B ∣ A ∣ ∣ B ∣ Similarity = cos(\theta)=\frac{A \cdot B}{\left|A\right| \left|B\right|} Similarity=cos(θ)=ABAB
  • Tanimoto系数 (Tanimoto Coefficient)(广义Jaccard相似系数)
    S i m i l a r i t y = A ⋅ B ∣ ∣ A ∣ ∣ 2 + ∣ ∣ B ∣ ∣ 2 − A ⋅ B Similarity = \frac{A \cdot B}{{\left||A\right||^2} + {\left||B\right||^2} -A \cdot B} Similarity=A2+B2ABAB
基于相关系数的相似度计算
  • 皮尔逊相关系数 (Pearson Correlation Coefficient)
    消除量纲的影响
    S i m i l a r i t y = p ( x , y ) = ∑ x i y i − n x y ˉ ( n − 1 ) S x S y = n ∑ x i y i − ∑ x i ∑ y i n ∑ x i 2 − ( ∑ x i ) 2 n ∑ y i 2 − ( ∑ y i ) 2 Similarity = p(x,y)=\frac{\sum{x_iy_i}-n\bar{xy}}{(n-1)S_xS_y} = \frac{n\sum{x_iy_i}-\sum{x_i}\sum{y_i}}{\sqrt{n\sum{x_i^2}-(\sum{x_i})^2}\sqrt{n\sum{y_i^2}-(\sum{y_i})^2}} Similarity=p(x,y)=(n1)SxSyxiyinxyˉ=nxi2(xi)2 nyi2(yi)2 nxiyixiyi
    当两个向量均值都为0时,皮尔逊相对系数等于余弦相似性。

数据是离散、无序的

集合

事物使用集合表示时,用交并补计算其相似度

  • 汉明距离(Hamming Distance)(信号距离)
    将其中一个字符串变为另外一个字符串所需要的最小替换次数

  • 杰卡德相似系数 (Jaccard similarity coefficient)
    两个集合的交集元素在并集中所占的比例
    J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A,B) = \frac{ \left|A \cap B \right| } { \left|A \cup B \right|} J(A,B)=ABAB

  • 杰卡德距离(Jaccard distance)
    用两个集合中不同元素占所有元素的比例,杰卡德相似系数的补。
    J δ ( A , B ) = 1 − J ( A , B ) = ∣ A ∪ B ∣ − ∣ A ∩ B ∣ ∣ A ∪ B ∣ J_{\delta}(A,B) = 1- J(A,B) = \frac{ \left|A \cup B \right| - \left|A \cap B \right| } {\left|A \cup B \right|} Jδ(A,B)=1J(A,B)=ABABAB

分布

  • KL散度(Kullback-Leibler Divergence)
    相对熵,表示两个随机分布之间的相似性。
    D K L ( p ∣ ∣ q ) = ∑ i = 1 N p ( x i ) ( l o g p ( x i ) q ( x i ) ) D_{KL}(p||q) = \sum_{i=1}^N{p(x_i)(log\frac{p(x_i)}{q(x_i)})} DKL(pq)=i=1Np(xi)(logq(xi)p(xi))
    KL散度大于等于0,当p=q时等于0;KL散度不满足对称性。

适用场景

  • 数据是离散无序的、还是连续有序的
  • 数据量纲影响大小,大的话使用皮尔逊相关系数
  • 数据密集程度,数据密集、类似聚类问题使用距离类方法,数据稀疏使用角度类方法

相关文章:

  1. 相似度计算方法
  2. 计算向量间相似度的常用方法
  3. 常用的相似度计算方法原理及实现
  4. 【机器学习】几种相似度算法分析
  5. Kullback-Leibler(KL)散度介绍
  6. 如何理解K-L散度(相对熵
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值