距离度量的多种方法
1.距离的定义
定义距离空间:设 X X X是非空集合,若对于 X X X中的任意两个元素 x , y x,y x,y均有一个实数与之对应,此实数记为 d ( x , y ) d(x,y) d(x,y),它满足一下的3个条件:
- 非负性: d ( x , y ) ≥ 0 d(x,y)\geq{0} d(x,y)≥0,并且 d ( x , y ) = 0 d(x,y)=0 d(x,y)=0的充要条件是 x = y x=y x=y;
- 对称性: d ( x , y ) = d ( y , x ) d(x,y)=d(y,x) d(x,y)=d(y,x);
- 三角不等式: d ( x , y ) ≤ d ( x , z ) + d ( z , y ) d(x,y)\leq{d(x,z)+d(z,y)} d(x,y)≤d(x,z)+d(z,y),其中 x x x是 X X X中的任意元素。
则称 d ( x , y ) d(x,y) d(x,y)是定义在非空集合 X X X上 x , y x,y x,y的距离,并且称 X X X是以 d d d为距离的距离空间,并表示为 ( X , d ) (X,d) (X,d),简单记为 X X X.
2.各种不同种类的距离
2.1 常见的距离表达
首先我们这里定义在距离空间中的两个点,设点的坐标为 x = ( x 1 , x 2 , … , x N ) , y = ( y 1 , y 2 , … , y N ) \textbf{x}=(x_{1},x_{2},\dots,x_{N}),\textbf{y}=(y_{1},y_{2},\dots,y_{N}) x=(x1,x2,…,xN),y=(y1,y2,…,yN),那么以下的距离表达式是基于在这个定义上的表达形式。
2.1.1 欧式(euclidean)距离(2-范数)
这是最为简单的距离表达式,也是最容易只管理解的距离度量的方法,设点的坐标为 x = ( x 1 , x 2 , … , x N ) , y = ( y 1 , y 2 , … , y N ) \textbf{x}=(x_{1},x_{2},\dots,x_{N}),\textbf{y}=(y_{1},y_{2},\dots,y_{N}) x=(x1,x2,…,xN),y=(y1,y2,…,yN)距离表达式为
d ( x , y ) = ∑ k = 1 N ( x k − y k ) 2 d(\textbf{x},\textbf{y})=\sqrt{\sum\limits_{k=1}^{N}(x_{k}-y_{k})^{2}} d(x,y)=k=1∑N(xk−yk)2
2.1.2 标准化欧氏距离
在对于长方体区域进行聚类表示的时候,普通的欧式距离公式并不能满足要求,按照普通聚类的方式表现的是圆形区域的形式,所以采用标准化欧式距离表达的是球体的形式,距离表达式为
d ( x , y ) = ∑ k = 1 N ( x k − y k s k ) 2 d(\textbf{x},\textbf{y})=\sqrt{\sum\limits_{k=1}^{N}\left(\frac{x_{k}-y_{k}}{s_{k}}\right)^{2}} d(x,y)=k=1∑N(skxk−yk)2
其中 s k s_{k} sk是分量的标准差。当然也可以称这种标准化的欧式距离为带有权重值的欧氏距离。
2.1.3 曼哈顿(Manhattan)距离(1-范数)
它是一种使用在几何度量空间中使用到的一种距离,用以标注两个点在标准坐标系上的绝对轴距离总和,曼哈顿距离是超凸度量。
d ( x , y ) = ∑ k = 1 N ∣ x k − y k ∣ d(\textbf{x},\textbf{y})={\sum\limits_{k=1}^{N}|x_{k}-y_{k}|} d(x,y)=k=1∑N∣xk−yk∣
2.1.4 切比雪夫(Chebyshev)距离( ∞ \infty ∞-范数)
在数学中,切比雪夫距离或者称之为 L ∞ L\infty L∞度量是向量空间中的一种度量,即各个坐标数值差的绝对值取最大值。切比雪夫距离是由一致范数(上确界范数)所衍生的度量,也是超凸度量。详细的证明和解释过程参见参考资料[1].
d ( x , y ) = max ( ∣ x k − y k ∣ ) = lim N → ∞ ( ∑ k = 1 N ∣ x k − y k ∣ k ) 1 / k d(\textbf{x},\textbf{y})=\max{(|x_{k}-y_{k}|)}=\lim\limits_{N\rightarrow{\infty}}{\left(\sum\limits_{k=1}^{N}|x_{k}-y_{k}|^{k}\right)}^{1/k} d(x,y)=max(∣xk−yk∣)=N→∞lim(k=1∑N∣xk−yk∣k)1/k
2.1.5 闵可夫斯基(minkowski)距离(p-范数)
它是欧几里得距离的一种推广:
d ( x , y ) = ( ∑ k = 1 N ∣ x k − y k ∣ p ) 1 / p d(\textbf{x},\textbf{y})={\left(\sum\limits_{k=1}^{N}|x_{k}-y_{k}|^{p}\right)}^{1/p} d(x,y)=(k=1∑N∣xk−yk∣p)1/p
当 p = 1 p=1 p=1时候,则是曼哈顿距离,当 p = 2 p=2 p=2时候为欧氏距离,当 p → ∞ p\rightarrow\infty p→∞时候为切比雪夫距离。
2.1.6 马氏(mahalanobis)距离
马氏距离表示数据的协方差距离的一个度量,有效计算两个位置样本集合相似度的一种方法,它考虑到了各种特性之间的关系并且是尺度无关的。设均值为
μ = ( μ 1 , μ 2 , … , μ N ) T \mu=(\mu_{1},\mu_{2},\dots,\mu_{N})^{T} μ=(μ1,μ2,…,μN)T
对应的观测数据为
x = ( x 1 , x 2 , … , x N ) T \textbf{x}=(x_{1},x_{2},\dots,x_{N})^{T} x=(x1,x2,…,xN)T
马氏距离为
D ( x ) = ( x − μ ) T Σ − 1 ( x − μ ) T D(\textbf{x})=\sqrt{(\textbf{x}-\mu)^{T}\Sigma^{-1}(\textbf{x}-\mu)^{T}} D(x)=(x−μ)TΣ−1(x−μ)T
马氏距离也可以定义为两个服从同一分布并且其协方差为 Σ \Sigma Σ的随机变量 x \textbf{x} x与 y \textbf{y} y的差异程度:
d ( x , y ) = ( x − y ) T Σ − 1 ( x − y ) T d(\textbf{x},\textbf{y})=\sqrt{(\textbf{x}-\textbf{y})^{T}\Sigma^{-1}(\textbf{x}-\textbf{y})^{T}} d(x,y)=(x−y)TΣ−1(x−y)T
协方差矩阵为单位矩阵的时候,为欧氏距离;协方差矩阵为对角矩阵的时候,则化为正规化的欧氏距离。
2.1.7 余弦距离
余弦距离用于比较相似度问题上,例如在词向量空间中用于比较两个词义的相似度问题,它用于衡量两个个体之间差异的大小。相比较距离度量,余弦相似度更加注重于两个向量在方向上的差异性而非距离或者长度上的差异性。公式如下所示
d ( x , y ) = cos θ = x ⋅ y ∣ ∣ x ∣ ∣ ⋅ ∣ ∣ y ∣ ∣ d(\textbf{x},\textbf{y})=\cos\theta=\frac{\textbf{x}\cdot\textbf{y}}{||\textbf{x}||\cdot||\textbf{y}||} d(x,y)=cosθ=∣∣x∣∣⋅∣∣y∣∣x⋅y
2.1.8 布雷柯蒂斯(Bray-Curtis)距离
布雷柯蒂斯距离经常用于生态学和环境科学中定义的距离,计算坐标之间的距离。距离通常取值在 [ 0 , 1 ] [0,1] [0,1]之间。它也可以用于计算样本之间的差异性。
d ( x , y ) = ∑ k = 1 N ∣ x k − y k ∣ ∑ k = 1 N ∣ x k + y k ∣ d(\textbf{x},\textbf{y})=\frac{\sum\limits_{k=1}^{N}|x_{k}-y_{k}|}{\sum\limits_{k=1}^{N}|x_{k}+y_{k}|} d(x,y)=k=1∑N∣xk+yk∣k=1∑N∣xk−yk∣
2.1.9 堪培拉(Canberra)距离
它通常被认为是曼哈顿距离的加权版本。公式定义为:
d ( x , y ) = ∑ k = 1 N ∣ x k − y k ∣ ∣ x k ∣ + ∣ y k ∣ d(\textbf{x},\textbf{y})=\sum\limits_{k=1}^{N}\frac{|x_{k}-y_{k}|}{|x_{k}|+|y_{k}|} d(x,y)=k=1∑N∣xk∣+∣yk∣∣xk−yk∣
通常这个距离对于接近于0的变化非常敏感。与马氏距离一样,对于数据的纲量不敏感,它并没有考虑到变量之间的相互独立性,没有考虑到变量之间的相关性。
2.2 概率统计中用到的距离定义
2.2.1 KL散度
KL散度也称为相对熵,如果对于同一个随机变量 x x x有两个单独的概率分布 p ( x ) p(x) p(x)和 q ( x ) q(x) q(x),那么就可以使用 K L KL KL散度来衡量这两个分布的差异性质。KL散度通常被定义为以下公式
D K L ( p ∣ ∣ q ) = ∑ k = 1 N p ( x k ) log p ( x k ) q ( x k ) D_{KL}(p||q)=\sum\limits_{k=1}^{N}p(x_{k})\log\frac{p(x_{k})}{q(x_{k})} DKL(p∣∣q)=k=1∑Np(xk)logq(xk)p(xk)
连续形式表示为
D K L ( p ∣ ∣ q ) = ∫ p ( x ) log p ( x ) q ( x ) d x D_{KL}(p||q)=\int{p(x)}\log\frac{p(x)}{q(x)}dx DKL(p∣∣q)=∫p(x)logq(x)p(x)dx
一般 N N N表示事件的所有可能性, D K L D_{KL} DKL的值越小,表示分布 p p p和分布 q q q越接近。
2.2.2 交叉熵
交叉熵经常用于机器学习中的分类问题,需要评估label和predictions之间的差距。交叉熵的公式通常定义如下所示
H ( p , q ) = − ∑ k = 1 N p ( x i ) log q ( x i ) H(p,q)=-\sum\limits_{k=1}^{N}p(x_{i})\log{q(x_{i})} H(p,q)=−k=1∑Np(xi)logq(xi)
连续形式表示为
H ( p , q ) = − ∫ p ( x ) log q ( x ) d x H(p,q)=-\int{p(x)}\log{q(x)}dx H(p,q)=−∫p(x)logq(x)dx
实际上交叉熵是可以由KL散度公式推导可以得到的:
D K L ( p ∣ ∣ q ) = ∑ k = 1 N p ( x i ) log p ( x i ) − ∑ k = 1 N p ( x i ) log q ( x i ) = − H [ p ( x ) ] − ∑ k = 1 N p ( x i ) log q ( x i ) D_{KL}(p||q)=\sum\limits_{k=1}^{N}p(x_{i})\log{p(x_{i})}-\sum\limits_{k=1}^{N}p(x_{i})\log{q(x_{i})}\\ =-H[p(x)]-\sum\limits_{k=1}^{N}p(x_{i})\log{q(x_{i})} DKL(p∣∣q)=k=1∑Np(xi)logp(xi)−k=1∑Np(xi)logq(xi)=−H[p(x)]−k=1∑Np(xi)logq(xi)
可见等式的前一部分就是 p p p的熵,等式后一部分就是交叉熵。由于等式中前一部分的值并不变,所以只需要关注后一部分的交叉熵即可。
2.2.3 JS散度
JS散度即JS距离,是KL散度的一种变形。公式如下所示
D J S ( p ∣ ∣ q ) = 1 2 D K L ( p ∣ ∣ p + q 2 ) + 1 2 D K L ( q ∣ ∣ p + q 2 ) D_{JS}(p||q)=\frac{1}{2}D_{KL}\left(p||\frac{p+q}{2}\right)+\frac{1}{2}D_{KL}\left(q||\frac{p+q}{2}\right) DJS(p∣∣q)=21DKL(p∣∣2p+q)+21DKL(q∣∣2p+q)
JS散度有以下的特点
- 取值范围是 [ 0 , 1 ] [0,1] [0,1],两个随机变量分布相同则是0,相反则是1.
- 对称性:即 J S ( p ∣ ∣ q ) = J S ( q ∣ ∣ p ) JS(p||q)=JS(q||p) JS(p∣∣q)=JS(q∣∣p).
但是也有一些缺点,当两个分布 p , q p,q p,q距离很远,基本上没有什么重叠的时候,那么KL散度就没有什么意义,此时的JS散度值就是一个常熟,在机器学习算法中这意味着反向传播过程中的梯度值变为0,出现梯度消失,这是一个致命的弱点。
2.2.4 F散度
在概率统计中,F散度是一个函数,用于衡量两个密度 p , q p,q p,q之间的区别关系,衡量两个分布相同还是不相同的程度。它们之间的F散度可以用以下的关系表达式表示
D K L ( p ∣ ∣ q ) = ∑ k = 1 N q ( x k ) f [ p ( x k ) q ( x k ) ] D_{KL}(p||q)=\sum\limits_{k=1}^{N}q(x_{k})f\left[\frac{p(x_{k})}{q(x_{k})}\right] DKL(p∣∣q)=k=1∑Nq(xk)f[q(xk)p(xk)]
连续形式表示为
D F ( p ∣ ∣ q ) = ∫ q ( x ) f [ p ( x ) q ( x ) ] d x D_{F}(p||q)=\int{q(x)}f\left[\frac{p(x)}{q(x)}\right]dx DF(p∣∣q)=∫q(x)f[q(x)p(x)]dx
其中,函数 f f f必须满足以下的两个条件: f f f函数是一个凸函数,并且有 f ( 1 ) = 0 f(1)=0 f(1)=0。特别地,若 f ( x ) = x log x f(x)=x\log{x} f(x)=xlogx,则为KL散度,若 f ( x ) = − log x f(x)=-\log{x} f(x)=−logx,那么就表示reverse KL散度。通常函数 f f f取以下的几种函数
- KL-divergence: f ( x ) = x log x f(x)=x\log{x} f(x)=xlogx
- reverse KL-divergence: f ( x ) = − log x f(x)=-\log{x} f(x)=−logx
- Pearson χ 2 \chi^{2} χ2-divergence: f ( x ) = ( x − 1 ) 2 , f ( x ) = x 2 − 1 , f ( x ) = x 2 − x f(x)=(x-1)^{2},f(x)=x^{2}-1,f(x)=x^{2}-x f(x)=(x−1)2,f(x)=x2−1,f(x)=x2−x
- Neumann χ 2 \chi^{2} χ2-divergence: f ( x ) = 1 x − 1 , f ( x ) = 1 x − x f(x)=\frac{1}{x}-1,f(x)=\frac{1}{x}-x f(x)=x1−1,f(x)=x1−x
- α \alpha α-divergence: f ( x ) = { 4 1 − α 2 ( 1 − x ( 1 + α ) / 2 ) , if α ≠ ± 1 x ln x , if α = 1 − ln x , if α = − 1 f(x)=\begin{cases} \frac{4}{1-\alpha^{2}}\left(1-x^{(1+\alpha)/2}\right)&,\text{ if }\alpha\neq{\pm{1}}\\ x\ln{x}&,\text{ if }\alpha=1\\ -\ln{x}&,\text{ if }\alpha=-1 \end{cases} f(x)=⎩⎪⎨⎪⎧1−α24(1−x(1+α)/2)xlnx−lnx, if α=±1, if α=1, if α=−1
- α \alpha α-divergence(other designation): f ( x ) = { x α − x α ( α − 1 ) , if α ≠ 0 , α ≠ 1 x ln x , if α = 1 − ln x , if α = 0 f(x)=\begin{cases} \frac{x^{\alpha}-x}{\alpha(\alpha-1)}&,\text{ if }\alpha\neq{0},\alpha\neq{1}\\ x\ln{x}&,\text{ if }\alpha=1\\ -\ln{x}&,\text{ if }\alpha=0 \end{cases} f(x)=⎩⎪⎨⎪⎧α(α−1)xα−xxlnx−lnx, if α=0,α=1, if α=1, if α=0
- Hellinger distance: f ( x ) = ( x − 1 ) 2 , f ( x ) = 2 ( 1 − x ) f(x)=(\sqrt{x}-1)^{2},f(x)=2(1-\sqrt{x}) f(x)=(x−1)2,f(x)=2(1−x)
- Total variation distance: f ( x ) = 1 2 ∣ x − 1 ∣ f(x)=\frac{1}{2}|x-1| f(x)=21∣x−1∣
2.2.5 巴氏距离
在统计学中,巴氏距离(巴塔恰里雅距离 ,Bhattacharyya distance)用于测量两离散概率分布。它常在分类中测量类之间的可分离性。在直方图相似度计算的时候,这个距离获得到的效果最好。
假设有同一随机变量 x x x的两个分布 p , q p,q p,q,公式如下所示
D B ( p , q ) = − ln [ B C ( p , q ) ] D_{B}(p,q)=-\ln[B_{C}(p,q)] DB(p,q)=−ln[BC(p,q)]
其中,离散形式如下所示
B C ( p , q ) = ∑ k = 1 N p ( x k ) q ( x k ) B_{C}(p,q)=\sum\limits_{k=1}^{N}\sqrt{p(x_{k})q(x_{k})} BC(p,q)=k=1∑Np(xk)q(xk)
连续形式如下所示
B C ( p , q ) = ∫ p ( x ) q ( x ) d x B_{C}(p,q)=\int\sqrt{p(x)q(x)}dx BC(p,q)=∫p(x)q(x)dx
其中 0 ≤ B C ≤ 1 0\leq{B_{C}}\leq{1} 0≤BC≤1, 0 ≤ D B ≤ + ∞ 0\leq{D_{B}}\leq{+\infty} 0≤DB≤+∞
一般称 B C B_{C} BC为巴氏系数。 B C B_{C} BC系数随着因某块中有两个样本的公共成员而变大,也会随着某块中有一大片重叠的样本成员而变大。分块数的选定依赖于样本中的成员数量;如果分块太少会因过估了重叠区域而失去精确性,如果分块太多会因为造成空块而失去精确性。
如果两个样本完全没有重叠,巴氏系数将会等于0,因为每一个分块都将被0乘。这意味着完全分离的样本不能被巴氏系数单独测定出来。
2.2.6 Hellinger 距离
Hellinger 距离 又称 Bhattacharyya 距离,在概率和统计学中,Hellinger 距离被用来衡量两个概率分布之间的相似性,属于 F散度的一种。公式如下所示
d ( x , y ) = 1 2 ∑ k = 1 N ( x k − y k ) 2 d(x,y)=\frac{1}{\sqrt{2}}\sqrt{\sum\limits_{k=1}^{N}(\sqrt{x_{k}}-\sqrt{y_{k}})^{2}} d(x,y)=21k=1∑N(xk−yk)2
2.3 机器学习中常用数值指标距离表达
2.3.1 逐点互信息
逐点互信息是用来衡量两个事物之间的相关性。设事件 A , B A,B A,B发生的概率为 p ( x ) , p ( y ) p(x),p(y) p(x),p(y),两个事件同时发生的概率为 p ( x , y ) p(x,y) p(x,y),则公式如下所示
P M I ( p , q ) = log p ( x , y ) p ( x ) p ( y ) PMI(p,q)=\log\frac{p(x,y)}{p(x)p(y)} PMI(p,q)=logp(x)p(y)p(x,y)
显然,如果事件 A , B A,B A,B相互独立,那么事件 A , B A,B A,B一定相关。二者相关性越大,则 p ( x , y ) p(x,y) p(x,y)就相比于 p ( x ) , p ( y ) p(x),p(y) p(x),p(y)越大。所以根据条件概率公式可以得到
P M I ( x , y ) = log p ( x , y ) p ( x ) p ( y ) = log p ( x ∣ y ) p ( x ) = log p ( y ∣ x ) p ( y ) PMI(x,y)=\log\frac{p(x,y)}{p(x)p(y)}=\log\frac{p(x|y)}{p(x)}=\log\frac{p(y|x)}{p(y)} PMI(x,y)=logp(x)p(y)p(x,y)=logp(x)p(x∣y)=logp(y)p(y∣x)
PMI在机器学习中经常使用到用于衡量训练模型之后label与predictions之间的关系。
2.3.2 pearson系数
统计学中pearson系数是用于度量两个变量 x \textbf{x} x和 y \textbf{y} y之间的相关性,实际上就是线性相关性,值保持在 [ − 1 , 1 ] [-1,1] [−1,1]。公式如下所示
ρ ( x , y ) = cov ( x , y ) σ x σ y = E [ ( x − μ x ) ( y − μ y ) ] σ x σ y \rho(\textbf{x},\textbf{y})=\frac{\text{cov}(\textbf{x},\textbf{y})}{\sigma_{\textbf{x}}\sigma_{\textbf{y}}}=\frac{E[(\textbf{x}-\mu_{\textbf{x}})(\textbf{y}-\mu_{\textbf{y}})]}{\sigma_{\textbf{x}}\sigma_{\textbf{y}}} ρ(x,y)=σxσycov(x,y)=σxσyE[(x−μx)(y−μy)]
2.4 其他距离表示
2.4.1 汉明距离
汉明距离是用在数据传输差错控制编码中的,它表示两个长度相同的字对应位不同的数量。对两个字符串进行异或运算,并统计结果为1的个数就是汉明距离。
2.4.2 杰拉德相关系数
即Jaccard相似系数,用于比较有限样本之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。设两个集合 A , B A,B A,B,Jaccard系数定义为 A A A与 B B B交集的大小和 A A A与 B B B并集的大小的比值:
J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A,B)=\frac{|A\cap{B}|}{|A\cup{B}|} J(A,B)=∣A∪B∣∣A∩B∣
特别地,集合 A , B A,B A,B都为空的时候, J ( A , B ) J(A,B) J(A,B)定义为1。
2.4.3 Ochiai 系数
这个系数表示两个集合的交集大小与两个集合大小的集合平均值,属于余弦相似度的一种形式
K ( A , B ) = ∣ A ∩ B ∣ ∣ A ∣ ⋅ ∣ B ∣ K(A,B)=\frac{|A\cap{B}|}{\sqrt{|A|\cdot{|B|}}} K(A,B)=∣A∣⋅∣B∣∣A∩B∣
2.4.4 Hausdorff距离
设欧式空间中的两个点集合 A = { a 1 , a 2 , … } A=\{a_{1},a_{2},\dots\} A={
a1,a2,…}, A = { b 1 , b 2 , … } A=\{b_{1},b_{2},\dots\} A={
b1,b2,…},Hausdorff距离用于衡量这两个点集合之间的距离。公式如下所示
H ( A , B ) = max [ h ( A , B ) , h ( B , A ) ] H(A,B)=\max[h(A,B),h(B,A)] H(A,B)=max[h(A,B),h(B,A)]
其中 h ( A , B ) = max min ∣ ∣ a − b ∣ ∣ h(A,B)=\max\min||a-b|| h(A,B)=maxmin∣∣a−b∣∣, h ( B , A ) = max min ∣ ∣ b − a ∣ ∣ h(B,A)=\max\min||b-a|| h(B,A)=maxmin∣∣b−a∣∣。 H ( A , B ) H(A,B) H(A,B)称为双向Hausdorff距离, h ( A , B ) h(A,B) h(A,B)称为从点集A到点集B的单向Hausdorff距离, h ( B , A ) h(B,A) h(B,A)称为从点集B到点集A的单向Hausdorff距离。
2.4.5 Levenshtein 距离
Levenshtein 距离是针对二个字符串的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。Levenshtein 距离可以用在自然语言处理中,例如拼写检查可以根据一个拼错的字和其他正确的字的Levenshtein 距离,判断哪一个(或哪几个)是比较可能的字。DNA也可以视为用A、C、G和T组成的字符串,因此Levenshtein 距离也用在生物信息学中,判断二个DNA的类似程度。
Levenshtein 距离是1965年由苏联数学家Vladimir Levenshtein发明的。Levenshtein 距离也被称为编辑距离(Edit Distance)。
设两个字符串 a , b a,b a,b,长度分别为 ∣ a ∣ , ∣ b ∣ |a|,|b| ∣a∣,∣b∣,那么它们的Levenshtein 距离为
lev a , b ( i , j ) = { max ( j , j ) , if min ( i , j ) = 0 min { lev a , b ( i − 1 , j ) + 1 lev a , b ( i , j − 1 ) + 1 lev a , b ( i − 1 , j − 1 ) + l a i ≠ b j , otherwise \text{lev}_{a,b}(i,j)=\begin{cases} \max{(j,j)}&,\text{ if }\min{(i,j)}=0\\ \min\begin{cases} \text{lev}_{a,b}(i-1,j)+1\\ \text{lev}_{a,b}(i,j-1)+1\\ \text{lev}_{a,b}(i-1,j-1)+l_{a_{i}\neq{b_{j}}} \end{cases}&,\text{otherwise}\\ \end{cases} leva,b(i,j)=⎩⎪⎪⎪⎨⎪⎪⎪⎧max(j,j)min⎩⎪⎨⎪⎧leva,b(i−1,j)+1leva,b(i,j−1)+1leva,b(i−1,j−1)+lai=bj, if min(i,j)=0,otherwise
其中当 a i = b j a_{i}=b_{j} ai=bj时候, l a i ≠ b j = 0 l_{a_{i}\neq{b_{j}}}=0 lai=bj=0否则为 l a i ≠ b j = 1 l_{a_{i}\neq{b_{j}}}=1 lai=bj=1。 lev a , b ( i , j ) \text{lev}_{a,b}(i,j) leva,b(i,j)表示 a a a的前 i i i个字符与 b b b的前 j j j个字符之间的编辑距离。
字符串 a , b a,b a,b的相似度为
Sim a , b = 1 − lev a , b ( ∣ a ∣ , ∣ b ∣ ) max ( ∣ a ∣ , ∣ b ∣ ) \text{Sim}_{a,b}=1-\frac{\text{lev}_{a,b}(|a|,|b|)}{\max{(|a|,|b|)}} Sima,b=1−max(∣a∣,∣b∣)leva,b(∣a∣,∣b∣)
3.实现各种距离的计算
在python语言中经常使用到这些距离计算的包有scipy.spatial.distance,当然最好的方法就是依照公式自己写出对应的距离计算的公式。
计算的函数有scipy.spatial.distance.pdist和scipy.spatial.distance.cdist.通过metric参数指定计算距离的不同方式得到不同的距离度量值,参数的表示如下所示
函数 | 表示的字符串 | 含义 |
---|---|---|
braycurtis(u, v) | braycurtis | 布雷柯蒂斯(Bray-Curtis)距离 |
canberra(u, v) | canberra | 堪培拉(Canberra)距离 |
chebyshev(u, v) | chebyshev | 切比雪夫(Chebyshev)距离 |
cityblock(u, v) | cityblock | 曼哈顿(Manhattan)距离 |
correlation(u, v) | correlation | 相关系数,或者是pearson系数 |
cosine(u, v) | cosine(u, v) | 余弦距离 |
euclidean(u, v) | euclidean | 欧氏(euclidean)距离 |
hamming(u, v) | hamming | 汉明距离 |
jaccard(u, v) | jaccard | jaccard距离 |
mahalanobis(u,v,VI) | mahalanobis | 马氏距离 |
minkowski(u, v, p) | minkowski | 闵可夫斯基距离 |
seuclidean(u, v, V) | seuclidean | 标准化欧氏距离 |
sqeuclidean(u, v) | sqeuclidean | 平方欧几里德距离 |
wminkowski(u, v, p, w) | wminkowski | 带有权重值的闵可夫斯基距离 |
还有几种是输入的是有布尔值的数组
函数 | 表示的字符串 | 含义 |
---|---|---|
dice(u, v) | dice | Computes the Dice dissimilarity between two boolean 1-D arrays. |
kulsinski(u, v) | kulsinski | Computes the Kulsinski dissimilarity between two boolean 1-D arrays. |
matching(u, v) | matching | Computes the Matching dissimilarity between two boolean 1-D arrays. |
rogerstanimoto(u, v) | rogerstanimoto | Computes the Rogers-Tanimoto dissimilarity between two boolean 1-D arrays. |
russellrao(u, v) | russellrao | Computes the Russell-Rao dissimilarity between two boolean 1-D arrays. |
sokalmichener(u, v) | sokalmichener | Computes the Sokal-Michener dissimilarity between two boolean 1-D arrays. |
sokalsneath(u, v) | sokalsneath | Computes the Sokal-Sneath dissimilarity between two boolean 1-D arrays. |
yule(u, v) | yule | Computes the Yule dissimilarity between two boolean 1-D arrays. |
4.小结
本文介绍了基本的距离空间中的表达形式。除此之外,还有很多的距离表达形式,这只是基本的一小部分而已。在机器学习中,应当合适合理使用这些距离公式来对机器学习中一些问题进行深入的研究和探讨。
参考
[1] 实用泛函分析
[2] 24种距离度量小结
[3] 数理统计与概率