假设当前有两个 nnn 维向量 xxx 和 yyy ,可以通过两个向量之间的距离或者相似度来判定这两个向量的相近程度,显然两个向量之间距离越小,相似度越高;两个向量之间距离越大,相似度越低。
常见的距离函数
闵可夫斯基距离(Minkowski Distance)
MinkowskiDistance=(∑i=1n∣xi−yi∣p)1pMinkowskiDistance=\displaystyle (\sum^n_{i=1}|x_i-y_i|^p)^{\frac 1 p}MinkowskiDistance=(i=1∑n∣xi−yi∣p)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=1∑n∣xi−yi∣
欧式距离/欧几里得距离(Euclidean distance)
EuclideanDistance=∑i=1n(xi−yi)2EuclideanDistance= \displaystyle \sqrt {\sum^n_{i=1}(x_i-y_i)^2}EuclideanDistance=i=1∑n(xi−yi)2
切比雪夫距离(Chebyshev Distance)
ChebyshevDistance=limp→∞(∑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=p→∞lim(i=1∑n∣xi−yi∣p)p1=max(∣xi−yi∣)
海明距离(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=1∑nΠ(xi=yi)其中,Π\PiΠ 表示指示函数,两者相同为1,否则为0。
KL散度(Kullback-Leibler Divergence)
给定随机变量X和两个概率分布P和Q,KL散度可以用来衡量两个分布之间的差异性,其公式如下:KL(P∣∣Q)=∑x∈XP(x)logP(x)Q(x)KL(P||Q)=\displaystyle \sum_{x \in X}P(x)\log \frac {P(x)} {Q(x)}KL(P∣∣Q)=x∈X∑P(x)logQ(x)P(x)推导:
在信息理论中,相对熵(KL散度)是用来度量使用基于 QQQ 的编码来编码来自 PPP 的样本平均所需的额外的比特个数。典型情况下, PPP 表示数据的真实分布, QQQ 表示数据的理论分布,模型分布,或 PPP 的近似分布。给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是 XXX,对 x∈Xx \in Xx∈X,其出现概率为 P(x)P(x)P(x),那么其最优编码平均需要的比特数等于这个字符集的熵:H(x)=−∑x∈XP(x)log1Q(x)H(x)=-\displaystyle \sum_{x \in X} P(x) \log \frac {1} {Q(x)}H(x)=−x∈X∑P(x)logQ(x)1在同样的字符集上,假设存在另一个概率分布 Q(x)Q(x)Q(x),如果用概率分布 P(x)P(x)P(x) 的最优编码(即字符 xxx 的编码长度等于 log1P(x)\displaystyle \log \frac 1 {P(x)}logP(x)1),来为符合分布 P(x)P(x)P(x) 的字符编码,那么表示这些字符就会比理想情况多用一些比特数。相对熵就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离,即:KL(P∣∣Q)=−∑x∈XP(x)log1P(x)+∑x∈XP(x)log1Q(x)=∑x∈XP(x)logP(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)=−x∈X∑P(x)logP(x)1+x∈X∑P(x)logQ(x)1=x∈X∑P(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=∣x∣⋅∣y∣x⋅y=∑i=1nxi2⋅∑i=1nyi2∑i=1nxi⋅yi
皮尔逊相关系数 (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(Xi−X)2∑i=1n(Yi−Y)2∑i=1n(Xi−X)(Yi−Y)其中 μXμ_XμX和 μYμ_YμY 分别表示向量 XXX 和 YYY 的均值,σXσ_XσX和 σYσ_YσY 分别表示向量 XXX 和 YYY 的标准差。
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)=X∩YX∪Y