机器学习中常用的距离度量方法
文章目录
机器学习中常用的距离度量方法
欧氏距离(Euclidean Distance)
最常见的两点或多点之间的距离表示方法,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
二维空间中欧氏距离的公式:
ρ
=
(
x
1
−
x
2
)
2
+
(
y
1
−
y
2
)
2
\rho=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}
ρ=(x1−x2)2+(y1−y2)2
其中,
ρ
\rho
ρ为点
(
x
1
,
x
2
)
(x_1,x_2)
(x1,x2)和点
(
y
1
,
y
2
)
(y_1,y_2)
(y1,y2)之间的欧氏距离
三维空间中欧氏距离的表达方式为:
ρ
=
(
x
1
−
x
2
)
2
+
(
y
1
−
y
2
)
2
+
(
z
1
−
z
2
)
2
\rho=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2}
ρ=(x1−x2)2+(y1−y2)2+(z1−z2)2
n维空间中欧氏距离的表达方式为:
d
(
x
,
y
)
=
(
x
1
−
y
1
)
2
+
(
x
2
−
y
2
)
2
+
⋯
+
(
x
n
−
y
n
)
2
=
∑
i
=
1
n
(
x
i
−
y
i
)
2
d(x,y)=\sqrt{(x_1-y_1)^2+(x_2-y_2)^2+\cdots+(x_n-y_n)^2}=\sqrt{\sum^{n}_{i=1}(x_i-y_i)^2}
d(x,y)=(x1−y1)2+(x2−y2)2+⋯+(xn−yn)2=i=1∑n(xi−yi)2
欧氏距离是数据分析中常用的一种距离度量方法,分类算法K近邻和聚类算法K-means就是使用欧氏距离作为类划分的标准。
曼哈顿距离(Manhattan Distance)
曼哈顿距离用以标明两个点在标准坐标系上的绝对轴距总和,引入坐标系网格更容易理解。
如图所示,绿色的线代表的为欧氏距离,其他的为等价的曼哈顿距离。相比于欧氏距离,曼哈顿距离的计算更为简单,只需要对坐标进行相加减的运算,可以提高距离的计算速度。
两点间曼哈顿距离计算公式:
d
(
i
,
j
)
=
∣
x
i
−
x
j
∣
+
∣
y
i
−
y
j
∣
d(i,j)=|x_i-x_j|+|y_i-y_j|
d(i,j)=∣xi−xj∣+∣yi−yj∣
两个n维向量
a
(
x
11
,
x
12
,
⋯
,
x
1
n
)
a(x_{11},x_{12},\cdots,x_{1n})
a(x11,x12,⋯,x1n)和
b
(
x
21
,
x
22
,
⋯
,
x
2
n
)
b(x_{21},x_{22},\cdots,x_{2n})
b(x21,x22,⋯,x2n)之间的曼哈顿距离为:
d
(
a
,
b
)
=
∑
k
=
1
n
∣
x
1
k
−
x
2
k
∣
d(a,b)=\sum^{n}_{k=1}|x_{1k}-x_{2k}|
d(a,b)=k=1∑n∣x1k−x2k∣
切比雪夫距离(Chebyshev distance)
切比雪夫距离是向量空间中的一种度量,两个点之间的距离定义是其各坐标数值差绝对值的最大值。
直观的理解为:在网格坐标中,允许一个棋子横向,竖向,斜向移动,切比雪夫距离定义为两个点之间在以上移动方法中的最小步数。
如下图所示:
图中红线代表的是欧氏距离,从A点到B点的切比雪夫距离的定义为蓝色路线,即按照横向,竖向,斜向移动,按照蓝色路线移动的步数最少,其也有许多等价的路线,但是最少的移动步数是一样的,它的移动步数等于,从A点到B点的路径在坐标轴上投影的较大的值。即为图中的BC线段的长度。
a
(
x
1
,
y
1
)
a(x_1,y_1)
a(x1,y1)和
b
(
x
2
,
y
2
)
b(x_2,y_2)
b(x2,y2)之间的切比雪夫距离的计算公式为:
d
(
a
,
b
)
=
max
(
∣
x
1
−
x
2
∣
,
∣
y
1
−
y
2
∣
)
d(a,b)=\max(|x_1-x_2|,|y_1-y_2|)
d(a,b)=max(∣x1−x2∣,∣y1−y2∣)
扩展到n维向量
a
(
x
11
,
x
12
,
⋯
,
x
1
n
)
a(x_{11},x_{12},\cdots,x_{1n})
a(x11,x12,⋯,x1n)和
b
(
x
21
,
x
22
,
⋯
,
x
2
n
)
b(x_{21},x_{22},\cdots,x_{2n})
b(x21,x22,⋯,x2n)为:
d
(
a
,
b
)
=
max
i
(
∣
x
1
i
−
x
2
i
∣
)
d(a,b)=\max_i(|x_{1i}-x_{2i}|)
d(a,b)=imax(∣x1i−x2i∣)
切比雪夫距离的另一种等价形式为:
d
(
a
,
b
)
=
lim
k
→
∞
(
∑
i
=
1
n
∣
x
1
i
−
x
2
i
∣
k
)
1
/
k
d(a,b)=\lim_{k\rightarrow\infty}\left(\sum^{n}_{i=1}|x_{1i}-x_{2i}|^k\right)^{1/k}
d(a,b)=k→∞lim(i=1∑n∣x1i−x2i∣k)1/k
利用放缩法和夹逼准则可以证明两个公式的相似。
闵可夫斯基距离(Minkowski distance)
两个n维变量
a
(
x
11
,
x
12
,
⋯
,
x
1
n
)
a(x_{11},x_{12},\cdots,x_{1n})
a(x11,x12,⋯,x1n)与
b
(
x
21
,
x
22
,
⋯
,
x
2
n
)
b(x_{21},x_{22},\cdots,x_{2n})
b(x21,x22,⋯,x2n)间的闵可夫斯基距离定义为:
d
(
a
,
b
)
=
∑
k
=
1
n
∣
x
1
k
−
x
2
k
∣
p
p
d(a,b)=\sqrt[p]{\sum^{n}_{k=1}|x_{1k}-x_{2k}|^p}
d(a,b)=pk=1∑n∣x1k−x2k∣p
其中p是一个变参数。
- 当p=1时,就是曼哈顿距离
- 当p=2时,就是欧氏距离
- 当p→ ∞ \infty ∞时,就是切比雪夫距离
闵氏距离的缺点:
闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点。举个例子:二维样本(身高,体重),其中身高范围是150-190,体重范围是50~60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。
简单说来,闵氏距离的缺点主要有两个:(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。
标准化欧氏距离 (Standardized Euclidean distance )
标准化欧氏距离可以看坐是欧氏距离的一种修正,标准欧氏距离的思路:既然数据各维分量的分布不一样,那么先将各个分量都标准化到均值和方差。
具体方法为:假设样本集X的均值为m,标准差为S,那么X的标准化变量表示为:
X
∗
=
X
−
m
S
X^*=\frac{X-m}{S}
X∗=SX−m
而且标准化变量的数学期望为0,方差为1。
因此样本集的标准化过程用公式描述就是:
标
准
化
后
的
值
=
标
准
化
前
的
值
-
分
量
的
均
值
分
量
的
标
准
差
标准化后的值=\frac{标准化前的值-分量的均值}{分量的标准差}
标准化后的值=分量的标准差标准化前的值-分量的均值
在对长方体区域进行聚类的时候,普通的距离无法满足要求。按照普通的距离聚类出的大多是圆形的区域,这时候要采用标准的欧式距离。两个n维向量
a
(
X
11
,
X
12
,
X
13
,
⋯
,
X
1
n
)
a(X_{11},X_{12},X_{13},\cdots,X_{1n})
a(X11,X12,X13,⋯,X1n)与
b
(
X
21
,
X
22
,
⋯
,
X
2
n
)
b(X_{21},X_{22},\cdots,X_{2n})
b(X21,X22,⋯,X2n)间的标准化欧氏距离公式为:
d
(
a
,
b
)
=
∑
k
=
1
n
(
x
1
k
−
x
2
k
S
k
)
2
d(a,b)=\sqrt{\sum^{n}_{k=1}\left(\frac{x_{1k}-x_{2k}}{S_k}\right)^2}
d(a,b)=k=1∑n(Skx1k−x2k)2
其中
S
k
S_k
Sk为分量的标准差。
对于长宽比为2:1的矩形区域进行聚类时,使用的标准欧氏距离公式为:
s
=
(
x
2
−
x
1
2
)
2
+
(
y
2
−
y
1
1
)
2
s=\sqrt{\left(\frac{x_2-x_1}{2}\right)^2+\left(\frac{y_2-y_1}{1}\right)^2}
s=(2x2−x1)2+(1y2−y1)2
马氏距离(Mahalanobis Distance)
马氏距离可以看作是欧氏距离的一种修正,修正了欧式距离中各个维度尺度不一致且相关的问题。
设 S S S为多维随机变量的协方差矩阵。 μ \mu μ为样本均值
单数据点的马氏距离定义为:
d
(
x
)
=
(
X
−
μ
)
T
S
−
1
(
X
−
μ
)
d(x)=\sqrt{(X-\mu)^TS^{-1}(X-\mu)}
d(x)=(X−μ)TS−1(X−μ)
数据点x,y之间的马氏距离定义为:
d
(
X
i
,
X
j
)
=
(
X
i
−
X
j
)
T
S
−
1
(
X
i
−
X
j
)
d(X_i,X_j)=\sqrt{(X_i-X_j)^TS^{-1}(X_i-X_j)}
d(Xi,Xj)=(Xi−Xj)TS−1(Xi−Xj)
若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),马氏距离就简化为欧氏距离,此时x,y之间的马氏距离定义为:
d
(
X
i
,
X
j
)
=
(
X
i
−
X
j
)
T
(
X
i
−
X
j
)
d(X_i,X_j)=\sqrt{(X_i-X_j)^T(X_i-X_j)}
d(Xi,Xj)=(Xi−Xj)T(Xi−Xj)
若协方差矩阵为对角阵,其也可称为正规化的马氏距离:
d
(
x
⃗
,
y
⃗
)
=
∑
i
=
1
p
(
x
i
−
y
i
)
2
σ
i
2
d(\vec x,\vec y)=\sqrt{\sum^{p}_{i=1}\frac{(x_i-y_i)^2}{\sigma_i^2}}
d(x,y)=i=1∑pσi2(xi−yi)2
以身高和体重为例,这两个变量拥有不同的单位标准,也就是有不同的scale。比如身高用毫米计算,而体重用千克计算,显然差10mm的身高与差10kg的体重是完全不同的。但在普通的欧氏距离中,这将会算作相同的差距。
**马氏距离的几何意义:**马氏距离是将变量按照主成分进行旋转,让维度间相互独立,然后进行标准化,让维度同分布。由主成分分析可知,由于主成分就是特征向量方向,每个方向的方差就是对应的特征值,所以只需要按照特征向量的方向旋转,并将坐标缩放特征值倍,此时的马氏距离就是欧氏距离。
巴氏距离(Bhattacharyya Distance)
在统计中,巴氏距离用于度量两个概率分布的相似性。它与Bhattacharyya系数密切相关,后者是两个统计样本或总体之间重叠量的度量。
巴氏距离定义:
对于离散概率分布p和q在同一域X中,巴氏距离定义为:
D
B
(
p
,
q
)
=
−
ln
(
B
C
(
p
,
q
)
)
D_B(p,q)=-\ln(BC(p,q))
DB(p,q)=−ln(BC(p,q))
其中,BC被称作Bhattacharyya系数:
B
C
(
p
,
q
)
=
∑
x
∈
X
p
(
x
)
q
(
x
)
BC(p,q)=\sum_{x\in X}\sqrt{p(x)q(x)}
BC(p,q)=x∈X∑p(x)q(x)
公式满足以下的约束条件:
0
≤
B
C
≤
1
,
0
≤
D
B
≤
∞
0\le BC\le 1,0\le DB\le\infty
0≤BC≤1,0≤DB≤∞
优点:
可以测量两个离散或连续概率分布的相似性。
马氏距离的计算是不稳定的而欧氏和巴氏是稳定的
汉明距离(Hamming distance)
在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
例如:
1011101 与 1001001 之间的汉明距离是 2。
2143896 与 2233796 之间的汉明距离是 3。
“toned” 与 “roses” 之间的汉明距离是 3。
汉明距离就是两个码不同的数的个数。
相关系数( Correlation coefficient )
相关系数即为数学中的相关系数,公式定义如下:
ρ
X
Y
=
C
o
v
(
X
,
Y
)
D
(
X
)
D
(
Y
)
=
E
(
(
X
−
E
X
)
(
Y
−
E
Y
)
)
D
(
X
)
D
(
Y
)
\rho_{XY}=\frac{Cov(X,Y)}{\sqrt{D(X)}\sqrt{D(Y)}}=\frac{E((X-EX)(Y-EY))}{\sqrt{D(X)}\sqrt{D(Y)}}
ρXY=D(X)D(Y)Cov(X,Y)=D(X)D(Y)E((X−EX)(Y−EY))
对上式展开计算,样本
x
i
x_i
xi与样本
x
j
x_j
xj之间的相关系数为:
r
i
j
=
∑
k
=
1
m
(
x
k
i
−
x
‾
i
)
(
x
k
j
−
x
‾
j
)
[
∑
k
=
1
m
(
x
k
i
−
x
‾
i
)
2
∑
k
=
1
m
(
x
k
j
−
x
‾
j
)
2
]
r_{ij}=\frac{\sum^{m}_{k=1}(x_{ki}-\overline x_i)(x_{kj}-\overline x_j)}{\left[\sum^{m}_{k=1}(x_{ki}-\overline x_i)^2\sum^{m}_{k=1}(x_{kj}-\overline x_j)^2\right]}
rij=[∑k=1m(xki−xi)2∑k=1m(xkj−xj)2]∑k=1m(xki−xi)(xkj−xj)
其中:
x
‾
i
=
1
m
∑
k
=
1
m
x
k
i
,
x
‾
j
=
1
m
∑
k
=
1
m
x
k
j
\overline x_i=\frac{1}{m}\sum^{m}_{k=1}x_{ki},\overline x_j=\frac{1}{m}\sum^{m}_{k=1}x_{kj}
xi=m1k=1∑mxki,xj=m1k=1∑mxkj
相关系数的取值越接近1表示样本越相似,取值越接近于0表示样本越独立。
相
关
系
数
相
关
程
度
0.8
−
1.0
极
强
相
关
0.6
−
0.8
强
相
关
0.4
−
0.6
中
等
程
度
相
关
0.2
−
0.4
弱
相
关
0.0
−
0.2
极
弱
相
关
0.0
不
相
关
\begin{array}{c|lcr} 相关系数 &相关程度 \\ \hline 0.8-1.0 & 极强相关 \\ 0.6-0.8 & 强相关 \\ 0.4-0.6 & 中等程度相关 \\ 0.2-0.4 & 弱相关 \\ 0.0-0.2 & 极弱相关 \\ 0.0 & 不相关 \\ \end{array}
相关系数0.8−1.00.6−0.80.4−0.60.2−0.40.0−0.20.0相关程度极强相关强相关中等程度相关弱相关极弱相关不相关
夹角余弦(Cosine)
几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
在二维空间中向量
A
(
x
1
,
y
1
)
A(x_1,y_1)
A(x1,y1)与向量
B
(
x
2
,
y
2
)
B(x_2,y_2)
B(x2,y2)的夹角余弦公式为:
cos
θ
=
x
1
x
2
+
y
1
y
2
x
1
2
+
y
1
2
x
2
2
+
y
2
2
\cos\theta=\frac{x_1x_2+y_1y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}}
cosθ=x12+y12x22+y22x1x2+y1y2
类似的,对于两个n维样本点
a
(
x
11
,
x
12
,
⋯
,
x
1
n
)
a(x_{11},x_{12},\cdots,x_{1n})
a(x11,x12,⋯,x1n)和
b
(
x
21
,
x
22
,
⋯
,
x
2
n
)
b(x_{21},x_{22},\cdots,x_{2n})
b(x21,x22,⋯,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。
cos
(
θ
)
=
a
⋅
b
∣
a
∣
∣
b
∣
\cos(\theta)=\frac{a·b}{|a||b|}
cos(θ)=∣a∣∣b∣a⋅b
cos ( θ ) = ∑ k = 1 n x 1 k x 2 k ∑ k = 1 n x 1 k 2 ∑ k = 1 n x 2 k 2 \cos(\theta)=\frac{\sum^{n}_{k=1}x_{1k}x_{2k}}{\sqrt{\sum^{n}_{k=1}x_{1k}^2}\sqrt{\sum^{n}_{k=1}x_{2k}^2}} cos(θ)=∑k=1nx1k2∑k=1nx2k2∑k=1nx1kx2k
夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。
当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。