向量距离与相似度(Distance and Similarity)

本文介绍了几种常见的距离函数,包括闵可夫斯基距离、曼哈顿距离、欧式距离、切比雪夫距离、海明距离及KL散度,并讨论了余弦相似度、皮尔逊相关系数和Jaccard相似系数等相似度函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设当前有两个 nnn 维向量 xxxyyy ,可以通过两个向量之间的距离或者相似度来判定这两个向量的相近程度,显然两个向量之间距离越小,相似度越高;两个向量之间距离越大,相似度越低。

常见的距离函数

闵可夫斯基距离(Minkowski Distance)

MinkowskiDistance=(∑i=1n∣xi−yi∣p)1pMinkowskiDistance=\displaystyle (\sum^n_{i=1}|x_i-y_i|^p)^{\frac 1 p}MinkowskiDistance=(i=1nxiyip)p1Minkowski Distane 是对多个距离度量公式概括性的表述,当 p=1p=1p=1 时,Minkowski Distane 便是曼哈顿距离;当 p=2p=2p=2 时,Minkowski Distane 便是欧式距离;Minkowski Distane 取极限的形式便是切比雪夫距离。

曼哈顿距离(Manhattan Distance)

ManhattanDistance=∑i=1n∣xi−yi∣ManhattanDistance=\displaystyle \sum^n_{i=1}|x_i-y_i|ManhattanDistance=i=1nxiyi

欧式距离/欧几里得距离(Euclidean distance)

EuclideanDistance=∑i=1n(xi−yi)2EuclideanDistance= \displaystyle \sqrt {\sum^n_{i=1}(x_i-y_i)^2}EuclideanDistance=i=1n(xiyi)2

切比雪夫距离(Chebyshev Distance)

ChebyshevDistance=lim⁡p→∞(∑i=1n∣xi−yi∣p)1p=max⁡(∣xi−yi∣)ChebyshevDistance= \displaystyle \lim_{p \rightarrow \infin} (\sum^n_{i=1}|x_i-y_i|^p)^{\frac 1 p}=\max(|x_i-y_i|)ChebyshevDistance=plim(i=1nxiyip)p1=max(xiyi)

海明距离(Hamming Distance)

在信息论中,两个等长字符串之间的海明距离是两个字符串对应位置的不同字符的个数。假设有两个字符串分别是:x=[x1,x2,...,xn]x=[x_1,x_2,...,x_n]x=[x1,x2,...,xn]y=[y1,y2,...,yn]y=[y_1,y_2,...,y_n]y=[y1,y2,...,yn],则两者的距离为:HammingDistance=∑i=1nΠ(xi=yi)HammingDistance=\displaystyle \sum^n_{i=1} \Pi(x_i=y_i)HammingDistance=i=1nΠ(xi=yi)其中,Π\PiΠ 表示指示函数,两者相同为1,否则为0。

KL散度(Kullback-Leibler Divergence)

给定随机变量X和两个概率分布P和Q,KL散度可以用来衡量两个分布之间的差异性,其公式如下:KL(P∣∣Q)=∑x∈XP(x)log⁡P(x)Q(x)KL(P||Q)=\displaystyle \sum_{x \in X}P(x)\log \frac {P(x)} {Q(x)}KL(P∣∣Q)=xXP(x)logQ(x)P(x)推导

在信息理论中,相对熵(KL散度)是用来度量使用基于 QQQ 的编码来编码来自 PPP 的样本平均所需的额外的比特个数。典型情况下, PPP 表示数据的真实分布, QQQ 表示数据的理论分布,模型分布,或 PPP 的近似分布。给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是 XXX,对 x∈Xx \in XxX,其出现概率为 P(x)P(x)P(x),那么其最优编码平均需要的比特数等于这个字符集的熵:H(x)=−∑x∈XP(x)log⁡1Q(x)H(x)=-\displaystyle \sum_{x \in X} P(x) \log \frac {1} {Q(x)}H(x)=xXP(x)logQ(x)1在同样的字符集上,假设存在另一个概率分布 Q(x)Q(x)Q(x),如果用概率分布 P(x)P(x)P(x) 的最优编码(即字符 xxx 的编码长度等于 log⁡1P(x)\displaystyle \log \frac 1 {P(x)}logP(x)1),来为符合分布 P(x)P(x)P(x) 的字符编码,那么表示这些字符就会比理想情况多用一些比特数。相对熵就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离,即:KL(P∣∣Q)=−∑x∈XP(x)log⁡1P(x)+∑x∈XP(x)log⁡1Q(x)=∑x∈XP(x)log⁡P(x)Q(x)KL(P||Q)=-\displaystyle \sum_{x \in X} P(x) \log \frac {1} {P(x)}+\displaystyle \sum_{x \in X} P(x) \log \frac {1} {Q(x)}=\sum_{x \in X}P(x)\log \frac {P(x)} {Q(x)}KL(P∣∣Q)=xXP(x)logP(x)1+xXP(x)logQ(x)1=xXP(x)logQ(x)P(x)

常见的相似度函数

余弦相似度(Cosine Similarity)

CosineSimilarity=x⋅y∣x∣⋅∣y∣=∑i=1nxi⋅yi∑i=1nxi2⋅∑i=1nyi2CosineSimilarity= \displaystyle \frac {x \cdot y} {|x| \cdot |y|}=\frac {\sum_{i=1}^nx_i \cdot y_i} {\sqrt {\sum^n_{i=1}x_i^2} \cdot \sqrt {\sum^n_{i=1}y_i^2}}CosineSimilarity=xyxy=i=1nxi2i=1nyi2i=1nxiyi

皮尔逊相关系数 (Pearson Correlation Coefficient)

给定两个随机变量X和Y,皮尔逊相关系数可以用来衡量两者的相关程度,公式如下:Pearson(X,Y)=cov(X,Y)σXσY=E[(X−μX)(Y−μY)]σXσY=∑i=1n(Xi−X‾)(Yi−Y‾)∑i=1n(Xi−X‾)2∑i=1n(Yi−Y‾)2\begin{aligned} Pearson(X,Y)&= \frac {cov(X,Y)} {\sigma_X\sigma_Y}\\ &=\frac {E[(X-\mu_X)(Y-\mu_Y)]} {\sigma_X \sigma_Y}\\ &=\frac {\sum^n_{i=1}(X_i- \overline X)(Y_i-\overline Y)} {\sqrt {\sum^n_{i=1}(X_i-\overline X)^2} \sqrt {\sum^n_{i=1}(Y_i-\overline Y)^2}} \end{aligned}Pearson(X,Y)=σXσYcov(X,Y)=σXσYE[(XμX)(YμY)]=i=1n(XiX)2i=1n(YiY)2i=1n(XiX)(YiY)其中 μXμ_XμXμYμ_YμY 分别表示向量 XXXYYY 的均值,σXσ_XσXσYσ_YσY 分别表示向量 XXXYYY 的标准差。

Jaccard 相似系数(Jaccard Coefficient)

假设有两个集合X和Y(注意这里的两者不是向量),则其计算公式为:Jaccard(X,Y)=X∪YX∩Y\displaystyle Jaccard(X,Y)=\frac {X \cup Y} {X \cap Y}Jaccard(X,Y)=XYXY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值