在机器学习中,经常使用距离来计算相似性,通常距离越近,相似度就越大,今天我们就来总结一下,常用的距离计算方法:
1.欧式距离(Euclidean Distance)
欧式距离是我们平时使用最多的一种方法,也是非常容易理解的一种方法,源自欧式空间中两点的距离公式,是指在m维空间两点之间的真实距离,也就是通常我们所说的直线距离。在地图中,两地直接连线的距离就是欧式距离
二维空间中欧氏距离计算公式:
设两点分别为a(x1,y1),b(x2,y2)
d1,2=(x1?x2)2+(y1?y2)2d_{1,2}=\sqrt{(x1-x2)^2 + (y1-y2)^2}d1,2?=(x1?x2)2+(y1?y2)2?
三维空间中欧式距离计算公式:
设两点分别为a(x1,y1,z1),b(x2,y2,z2)
d1,2=(x1?x2)2+(y1?y2)2+(z1?z2)2d_{1,2}=\sqrt{(x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2}d1,2?=(x1?x2)2+(y1?y2)2+(z1?z2)2?
更高维的依次类推…
2.曼哈顿距离(Manhattan Distance)
曼哈顿距离指的是一次只能往一个维度的方向走,举个二维的例子,棋盘中的車只能直线走,而不能斜着走,他到某一点的要走的距离就是曼哈顿距离
二维空间中曼哈顿距离计算公式
设两点分别为a(x1,y1),b(x2,y2)
d1,2=∣x1?x2∣+∣y1?y2∣d_{1,2} = |x1 - x2| + |y1 - y2|d1,2?=∣x1?x2∣+∣y1?y2∣
三维空间中曼哈顿距离计算公式
设两点分别为a(x1,y1,z1),b(x2,y2,z2)
d1,2=∣x1?x2∣+∣y1?y2∣+∣z1?z2∣d_{1,2} = |x1 - x2| + |y1 - y2| + |z1 - z2|d1,2?=∣x1?x2∣+∣y1?y2∣+∣z1?z2∣
3.切比雪夫距离(Chebyshev Distance)
在国际象棋中,国王可以随意的向他相邻的8个点中的一个走一步,而国王从一点另一点的最短距离就是切比雪夫距离
二维空间中切比雪夫距离计算公式
设两点分别为a(x1,y1),b(x2,y2)
d1,2=max(∣x1?x2∣,∣y1?y2∣)d_{1,2} = max(|x1 - x2| ,|y1 - y2|)d1,2?=max(∣x1?x2∣,∣y1?y2∣)
三维空间中切比雪夫距离计算公式
设两点分别为a(x1,y1,z1),b(x2,y2,z2)
d1,2=max(∣x1?x2∣,∣y1?y2∣,∣z1?z2∣)d_{1,2} = max(|x1 - x2|, |y1 - y2|, |z1 - z2|)d1,2?=max(∣x1?x2∣,∣y1?y2∣,∣z1?z2∣)
4.闵可夫斯基距离(Minkowski Distance)
闵科夫斯基距离准确来说不是一种距离,而是一组距离的定义
他的定义为
d1,2=∑k=1n∣x1k?x2k∣ppd_{1,2} = \sqrt[p]{\sum_{k=1}^n|x_{1k}-x_{2k}|^p}d1,2?=pk=1∑n?∣x1k??x2k?∣p?
当p=1时就是曼哈顿距离
当p=2时就是欧式距离
当p->无穷大时就是切比雪夫距离
闵科夫斯基有一个很严重的缺点:包括曼哈顿、欧式、切比雪夫距离在内
举个例子: 二维样本(身高,体重),其中身高范围是150 ~ 190,体重范围是50 ~ 60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。
简单说来,闵氏距离的缺点主要有两个:(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。
5.马氏距离(Mahalanobis Distance)
马氏距离主要是针对于闵科夫斯基距离的缺点提出来的
https://cloud.tencent.com/developer/article/1049090
6.夹角余弦
在向量空间中,两个向量之间的夹角是属于[0,180]的,而余弦在0-180度是单调递减的,所以我们可以用两个向量的余弦值来表示他们的相关程度,他们的夹角越小,即余弦值越大,相关性就越大
二维空间中向量夹角余弦相似度
设两点分别为a(x1,y1),b(x2,y2)
cosΘ=x1x2+y1y2(x12+x22)(y12+y22)cos\Theta = \frac {x1x2+y1y2}{\sqrt{(x1^2+x2^2)(y1^2+y2^2)}}cosΘ=(x12+x22)(y12+y22)?x1x2+y1y2?
三维空间中向量夹角余弦相似度
设两点分别为a(x1,y1,z1),b(x2,y2,z2)
cosΘ=x1x2+y1y2+z1z2(x12+x22)(y12+y22)(z12+z22)cos\Theta = \frac {x1x2+y1y2+z1z2}{\sqrt{(x1^2+x2^2)(y1^2+y2^2)(z1^2+z2^2)}}cosΘ=(x12+x22)(y12+y22)(z12+z22)?x1x2+y1y2+z1z2?