向量距离与相似度函数
假设当前有两个nn维向量xx和yy (除非特别说明,本文默认依此写法表示向量),可以通过两个向量之间的距离或者相似度来判定这两个向量的相近程度,显然两个向量之间距离越小,相似度越高;两个向量之间距离越大,相似度越低。
1. 常见的距离计算方式
1.1 闵可夫斯基距离(Minkowski Distance)
\[Minkowski\;Distance = {(\sum\limits_{i = 1}^n {|{x_i} - {y_i}{|^p}} )^{\frac{1}{p}}}\]
Minkowski Distane 是对多个距离度量公式概括性的表述,当p=1p=1时,Minkowski Distane 便是曼哈顿距离;当p=2p=2时,Minkowski Distane 便是欧式距离;Minkowski Distane 取极限的形式便是切比雪夫距离。
1.2 曼哈顿距离(Manhattan Distance)
\[Manhattan\;Distance = (\sum\limits_{i = 1}^n | {x_i} - {y_i}|)\]
1.3 欧式距离/欧几里得距离(Euclidean distance)
\[Euclidean\;Distance = \sqrt {\sum\limits_{i = 1}^n {{{({x_i} - {y_i})}^2}} } \]
1.4 切比雪夫距离(Chebyshev Distance)
\[\mathop {{\rm{lim}}}\limits_{p \to \infty } {(\sum\limits_{i = 1}^n {|{x_i} - {y_i}{|^p}} )^{\frac{1}{p}}} = {\rm{max}}\;(|{x_i} - {y_i}|)\]
1.5 海明距离(Hamming Distance)
在信息论中,两个等长字符串之间的海明距离是两个字符串对应位置的不同字符的个数。假设有两个字符串分别是:x=[x1,x2,...,xn]x=[x1,x2,...,xn]和y=[y1,y2,...,yn]y=[y1,y2,...,yn],则两者的距离为:
\[Hamming\;Distance = \sum\limits_{i = 1}^n {{\rm{II}}} ({x_i} = {y_i})\]
其中IIII表示指示函数,两者相同为1,否则为0。
1.6 KL散度
给定随机变量XX和两个概率分布PP和QQ,KL散度可以用来衡量两个分布之间的差异性,其公式如下:
\[KL(P||Q) = \sum x \in Xp(x)logP(x)Q(x)\]
2. 常见的相似度函数
2.1 余弦相似度(Cosine Similarity)
\[Cosine\;Similarity = \frac{{x \cdot y}}{{|x| \cdot |y|}} = \frac{{\sum\limits_{i = 1}^n {{x_i}} {y_i}}}{{\sqrt {\sum\limits_{i = 1}^n {x_i^2} } \sqrt {\sum\limits_{i = 1}^n {y_i^2} } }}\]
2.2 皮尔逊相关系数 (Pearson Correlation Coefficient)
给定两个随机变量XX和YY,皮尔逊相关系数可以用来衡量两者的相关程度,公式如下:
\[\begin{array}{*{20}{l}}
{{\rho _{x,y}}}&{ = \frac{{cov(X,Y)}}{{{\sigma _X}{\sigma _Y}}} = \frac{{E[(X - {\mu _X})(Y - {\mu _Y})]}}{{{\sigma _X}{\sigma _Y}}}}\\
{}&{ = \frac{{\sum\limits_{i = 1}^n {({X_i} - \bar X)} ({Y_i} - \bar Y)}}{{\sqrt {\sum\limits_{i = 1}^n {{{({X_i} - \bar X)}^2}} } \sqrt {\sum\limits_{i = 1}^n {{{({Y_i} - \bar Y)}^2}} } }}}
\end{array}\]
{{\rho _{x,y}}}&{ = \frac{{cov(X,Y)}}{{{\sigma _X}{\sigma _Y}}} = \frac{{E[(X - {\mu _X})(Y - {\mu _Y})]}}{{{\sigma _X}{\sigma _Y}}}}\\
{}&{ = \frac{{\sum\limits_{i = 1}^n {({X_i} - \bar X)} ({Y_i} - \bar Y)}}{{\sqrt {\sum\limits_{i = 1}^n {{{({X_i} - \bar X)}^2}} } \sqrt {\sum\limits_{i = 1}^n {{{({Y_i} - \bar Y)}^2}} } }}}
\end{array}\]
其中μXμX和μYμY分别表示向量XX和YY的均值,σXσX和σYσY分别表示向量XX和YY的标准差。
2.3 Jaccard 相似系数(Jaccard Coefficient)
假设有两个集合XX和YY(注意这里的两者不是向量),则其计算公式为:
\[Jaccard(X,Y) = \frac{{X \cup Y}}{{X \cap Y}}\]