在模式识别,数据挖掘,机器学习等领域,距离度量和相似度度量有着很广泛的应用,对这些度量算法有一定程度的理解,可以帮助我们更好的处理和优化在这些领域遇到的问题。
距离度量算法和相似度度量算法是基础算法,经常被用在其他更高级的算法中。比如K最近邻(KNN)和K均值(K-Means)可以使用曼哈顿距离或者欧式距离作为度量方法。
本文介绍一些常见的距离度量算法和相似度度量算法。
算法定义描述,部分内容摘自百度百科,下面不一一标注。
常见距离度量
曼哈顿距离
算法说明
曼哈顿距离(Manhattan Distance),又称出租车距离,是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和。
曼哈顿距离可以理解为路径距离。
使用图来说明,比较直观。
如图,其中红线代表曼哈顿距离,绿线代表欧式距离(空间中两点之间的直线距离,下文会介绍),而蓝线和黄线代表等价的曼哈顿距离。
可以看出,在一个二维空间,曼哈顿距离就是两个点的横纵坐标的差值的绝对值之和,即 D ( A , B ) = ∣ A x − B x ∣ + ∣ A y − B y ∣ D(A,B)=|A_x-B_x|+|A_y-B_y| D(A,B)=∣Ax−Bx∣+∣Ay−By∣。
在一个具有正南正北,正东正西方向规则布局的城镇街道,从一个点到达另一个点的最短移动距离,就是南北方向上的最短移动距离加上东西方向上的最短移动距离,所以,曼哈顿距离又称为出租车距离。
曼哈顿距离计算公式:
D
(
A
,
B
)
=
∑
i
=
1
n
∣
A
i
−
B
i
∣
D(A,B) = \sum_{i=1}^n\left | A_i - B_i \right |
D(A,B)=i=1∑n∣Ai−Bi∣
应用场景
计算机图形学
在早期的计算机图形学中,屏幕是由像素构成,是整数,点的坐标也一般是整数,应用曼哈顿距离度量AB两个像素点之间的距离。
如果使用AB的欧氏距离,则必须要进行浮点运算,浮点运算很昂贵,很慢而且有误差,如果使用AC和CB,则只要计算加减法即可,这就大大提高了运算速度,而且不管累计运算多少次,都不会有误差。
相似度
可以用来度量两个向量的相似度,距离越小,越相似。
欧式距离
算法说明
欧式距离(Euclidean Distance),比较学术的名称是欧几里得度量(euclidean metric),是一个通常采用的距离定义,指在n维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
在上文介绍曼哈顿距离的图中,绿线代表的就是二维空间中两点之间的欧式距离。
欧式距离计算公式:
D
(
A
,
B
)
=
(
A
1
−
B
1
)
2
+
(
A
2
−
B
2
)
2
+
⋯
+
(
A
n
−
B
n
)
2
=
∑
i
=
1
n
(
A
i
−
B
i
)
2
D(A,B) = \sqrt{(A_1-B_1)^2+(A_2-B_2)^2+\dots+(A_n-B_n)^2} = \sqrt{\sum_{i=1}^n(A_i-B_i)^2}
D(A,B)=(A1−B1)2+(A2−B2)2+⋯+(An−Bn)2=i=1∑n(Ai−Bi)2
应用场景
广泛应用于度量向量空间的两个向量之间的距离。
也常应用于协同过滤系统的用户相似度度量。将用户对物品的评分抽象成用户向量,然后计算两个用户向量的欧式距离,用以代表用户间的相似度,距离越小,越相似。
切比雪夫距离
算法说明
切比雪夫距离(Chebyshev distance),是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。
切比雪夫距离计算公式:
D
(
A
,
B
)
=
max
i
(
∣
A
i
−
B
i
∣
)
D(A,B) = \max_{i}(\left | A_i-B_i \right |)
D(A,B)=imax(∣Ai−Bi∣)
在国际象棋中,王从一个点到达另一个点的距离就是二维直角坐标系中两点之间的切比雪夫距离。故切比雪夫距离也称为棋盘距离。
如下图,王所在位置为f6,棋盘格子上的数字代表王到该格子的步数,也就是距离。
闵可夫斯基距离
算法说明
闵可夫斯基距离(Minkowski distance),是闵氏空间两点的距离的度量。
闵氏空间指狭义相对论中由一个时间维和三个空间维组成的时空,为俄裔德国数学家闵可夫斯基(H.Minkowski,1864-1909)最先表述。闵氏空间的概念以及表示为特殊距离量的几何学是与狭义相对论的要求相一致的。
因此,闵氏距离有时也指时空间隔。设n维空间中有两点坐标A,B,p为常数,闵式距离定义为
D
(
A
,
B
)
=
(
∑
i
=
1
n
∣
A
i
−
B
i
∣
p
)
1
p
D(A,B) = (\sum_{i=1}^n\left | A_i-B_i \right |^p)^\frac{1}{p}
D(A,B)=(i=1∑n∣Ai−Bi∣p)p1
注意:
(1)闵氏距离与特征参数的量纲有关,有不同量纲的特征参数的闵氏距离常常是无意义的。
(2)闵氏距离没有考虑特征参数间的相关性,而马哈拉诺比斯距离(马氏距离)解决了这个问题。
一些特例
闵氏距离可以认为是一组距离的定义,当p代表不同的值时,闵氏距离可以得到其他距离。
当p=1时,得到曼哈顿距离;
当p=2时,得到欧式距离;
当p -> ∞ 时,得到切比雪夫距离。
其中曼哈顿距离和欧式距离的推导比较简单,切比雪夫距离的推导需要用到范数知识。
下面的范数内容摘自 百度百科-范数。
上文提到,特征参数的量纲和相关性会影响闵氏距离,这同样会影响曼哈顿距离,欧式距离和切比雪夫距离。
欧式距离相比其他距离度量,在应用上更加广泛。以欧式距离来说明,例如有两个向量A(1,10)和B(10,1000),当计算AB的欧式距离时,我们可以发现第二个维度对于距离度量的影响远大于第一个维度,这就是不同维度的量纲对距离度量的影响。
如果想要消除维度量纲和相关性的影响,可以进行主成分分析(PCA),提取出综合指标,消除维度相关性影响,然后再进行特征缩放,消除量纲影响,最后再计算距离。另外可以考虑使用接下来要介绍的马氏距离。
马氏距离
算法说明
马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示点与一个分布之间的距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是,它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的(scale-invariant),即独立于测量尺度。
马氏距离公式参考自https://blog.csdn.net/qq_37053885/article/details/79359427。
有M个样本向量
X
1
∼
X
m
X_1 \sim X_m
X1∼Xm,协方差矩阵记为S,则两个向量之间的马氏距离定义为:
D
(
A
,
B
)
=
(
A
i
−
B
i
)
T
S
−
1
(
A
i
−
B
i
)
D(A,B) = \sqrt{(A_i-B_i)^TS^{-1}(A_i-B_i)}
D(A,B)=(Ai−Bi)TS−1(Ai−Bi)
当协方差矩阵S为单位矩阵时(各个样本向量之间独立同分布),则公式就变成:
D
(
A
,
B
)
=
(
A
i
−
B
i
)
T
(
A
i
−
B
i
)
D(A,B) = \sqrt{(A_i-B_i)^T(A_i-B_i)}
D(A,B)=(Ai−Bi)T(Ai−Bi)
此时马氏距离就是欧式距离。
当协方差矩阵是单位矩阵时,以向量A=(a1,a2,…,an)和向量B=(b1,b2,…,bn)的马氏距离为例,
将向量转化为矩阵,A=
[
a
1
a
2
.
.
.
a
n
]
\begin{bmatrix} a_1\\a_2\\...\\a_n\end{bmatrix}
⎣⎢⎢⎡a1a2...an⎦⎥⎥⎤ 和B=
[
b
1
b
2
.
.
.
b
n
]
\begin{bmatrix} b_1\\b_2\\...\\b_n\end{bmatrix}
⎣⎢⎢⎡b1b2...bn⎦⎥⎥⎤ ,
套用上图第三个公式,推导欧式距离如下:
D
(
A
,
B
)
=
(
A
i
−
B
i
)
T
(
A
i
−
B
i
)
=
[
a
1
−
b
1
,
a
2
−
b
2
,
.
.
.
,
a
n
−
b
n
]
[
a
1
−
b
1
a
2
−
b
2
.
.
.
a
n
−
b
n
]
=
(
a
1
−
b
1
)
2
+
(
a
2
−
b
2
)
2
+
.
.
.
+
(
a
n
−
b
n
)
2
=
∑
i
=
1
n
(
a
i
−
b
i
)
2
\begin{aligned} D(A,B) &= \sqrt{(A_i - B_i)^T(A_i - B_i)}\\ &= \sqrt{\begin{bmatrix}a_1 - b_1, a_2 - b_2,..., a_n - b_n\end{bmatrix} \begin{bmatrix} a_1 - b_1\\ a_2 - b_2\\ ...\\ a_n - b_n \end{bmatrix}}\\ &= \sqrt{(a_1 - b_1)^2 + (a_2 - b_2)^2 + ... + (a_n - b_n)^2}\\ &= \sqrt{\sum_{i=1}^n(a_i - b_i)^2} \end{aligned}
D(A,B)=(Ai−Bi)T(Ai−Bi)=[a1−b1,a2−b2,...,an−bn]⎣⎢⎢⎡a1−b1a2−b2...an−bn⎦⎥⎥⎤=(a1−b1)2+(a2−b2)2+...+(an−bn)2=i=1∑n(ai−bi)2
向量转矩阵,可以转成行矩阵或列矩阵,这里为了矩阵计算结果是一个数值,所以第一个因子矩阵需要是一个行矩阵,进而A,B两个向量转成列矩阵比较合适。
应用场景
同欧式距离,当特征参数之间的相关性影响较大时,考虑用马氏距离代替欧式距离。
相似度度量
余弦相似度
算法说明
余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。公式如下:
c
o
s
(
Θ
)
=
A
⋅
B
∥
A
∥
∥
B
∥
=
∑
i
=
1
n
(
A
i
×
B
i
)
∑
i
=
1
n
(
A
i
)
2
×
∑
i
=
1
n
(
B
i
)
2
cos(\Theta) = \frac{A \cdot B}{\left \| A \right \| \left \| B \right \|} = \frac{\sum_{i=1}^n(A_i \times B_i)}{\sqrt{\sum_{i=1}^n(A_i)^2} \times \sqrt{\sum_{i=1}^n(B_i)^2}}
cos(Θ)=∥A∥∥B∥A⋅B=∑i=1n(Ai)2×∑i=1n(Bi)2∑i=1n(Ai×Bi)
余弦相似度常用于计算文本相似度,并且非常有效。但是在有些场景中使用余弦相似度得出的结果并不准确,于是出现了修正余弦相似度,公式如下:
s
i
m
(
A
,
B
)
=
∑
i
=
1
n
(
A
i
−
D
i
ˉ
)
(
B
i
−
D
i
ˉ
)
∑
i
=
1
n
(
A
i
−
D
i
ˉ
)
2
×
∑
i
=
1
n
(
B
i
−
D
i
ˉ
)
2
sim(A,B) = \frac{\sum_{i=1}^n(A_i-\bar{D_i})(B_i-\bar{D_i})} {\sqrt{\sum_{i=1}^n(A_i-\bar{D_i})^2}\times\sqrt{\sum_{i=1}^n}(B_i-\bar{D_i})^2}
sim(A,B)=∑i=1n(Ai−Diˉ)2×∑i=1n(Bi−Diˉ)2∑i=1n(Ai−Diˉ)(Bi−Diˉ)
其中
D
i
ˉ
\bar{D_i}
Diˉ 代表第i个维度(或分量)的期望。
为了对比余弦相似度和修正余弦相似度,举个协同过滤的例子。设用户对物品的评分范围是[1,5],有两个用户(U1,U2)对三个物品(A,B,C)进行评分,评分矩阵如下:
Item\User | U1 | U2 |
---|---|---|
A | 1 | 2 |
B | 3 | 4 |
C | 3 | 5 |
用户U1一般不评高分,1分代表不喜欢,3分代表喜欢;用户U2严格按照等级评分。根据协同过滤思想,我们通过评分矩阵,可以判断出A和B,C都不相似,B和C相似。
现在通过算法计算Item相似度,根据评分矩阵,得到Item向量:A=(1,2),B=(3,4),C=(3,5)
通过余弦相似度计算Item相似度:
s
i
m
(
A
,
B
)
=
1
×
3
+
2
×
4
1
2
+
2
2
×
3
2
+
4
2
=
11
5
×
25
≈
0.98386991
s
i
m
(
A
,
C
)
=
1
×
3
+
2
×
5
1
2
+
2
2
×
3
2
+
5
2
=
13
5
×
34
≈
0.997054486
s
i
m
(
B
,
C
)
=
3
×
3
+
4
×
5
3
2
+
4
2
×
3
2
+
5
2
=
29
25
×
34
≈
0.994691794
\begin{aligned} sim(A,B) &= \frac{1\times3+2\times4}{\sqrt{1^2+2^2}\times\sqrt{3^2+4^2}} = \frac{11}{\sqrt{5}\times\sqrt{25}} \approx 0.98386991\\ sim(A,C) &= \frac{1\times3+2\times5}{\sqrt{1^2+2^2}\times\sqrt{3^2+5^2}} = \frac{13}{\sqrt{5}\times\sqrt{34}} \approx 0.997054486\\ sim(B,C) &= \frac{3\times3+4\times5}{\sqrt{3^2+4^2}\times\sqrt{3^2+5^2}} = \frac{29}{\sqrt{25}\times\sqrt{34}} \approx 0.994691794 \end{aligned}
sim(A,B)sim(A,C)sim(B,C)=12+22×32+421×3+2×4=5×2511≈0.98386991=12+22×32+521×3+2×5=5×3413≈0.997054486=32+42×32+523×3+4×5=25×3429≈0.994691794
通过修正余弦相似度计算Item相似度,首先计算维度期望,也就是计算每个用户的评分的均值:
U
1
ˉ
=
1
+
3
+
3
3
≈
2.33
U
2
ˉ
=
2
+
4
+
5
3
≈
3.67
\begin{aligned} \bar{U_1} = \frac{1+3+3}{3} \approx 2 .33\\ \bar{U_2} = \frac{2+4+5}{3} \approx 3.67 \end{aligned}
U1ˉ=31+3+3≈2.33U2ˉ=32+4+5≈3.67
接下来计算相似度:
s
i
m
(
A
,
B
)
=
(
1
−
2.33
)
×
(
3
−
2.33
)
+
(
2
−
3.67
)
×
(
4
−
3.67
)
(
1
−
2.33
)
2
+
(
2
−
3.67
)
2
×
(
3
−
2.33
)
2
+
(
4
−
3.67
)
2
=
−
1.4422
4.5578
×
0.5578
≈
−
0.904500069
s
i
m
(
A
,
C
)
=
(
1
−
2.33
)
×
(
3
−
2.33
)
+
(
2
−
3.67
)
×
(
5
−
3.67
)
(
1
−
2.33
)
2
+
(
2
−
3.67
)
2
×
(
3
−
2.33
)
2
+
(
5
−
3.67
)
2
=
−
3.1122
4.5578
×
2.2178
≈
−
0.978878245
s
i
m
(
B
,
C
)
=
(
3
−
2.33
)
×
(
3
−
2.33
)
+
(
4
−
3.67
)
×
(
5
−
3.67
)
(
3
−
2.33
)
2
+
(
4
−
3.67
)
2
×
(
3
−
2.33
)
2
+
(
5
−
3.67
)
2
=
0.8878
0.5578
×
2.2178
≈
0.798205464
\begin{aligned} sim(A,B) &= \frac{(1-2.33)\times(3-2.33)+(2-3.67)\times(4-3.67)}{\sqrt{(1-2.33)^2+(2-3.67)^2}\times\sqrt{(3-2.33)^2+(4-3.67)^2}}\\ &= \frac{-1.4422}{\sqrt{4.5578}\times\sqrt{0.5578}} \approx -0.904500069\\ sim(A,C) &= \frac{(1-2.33)\times(3-2.33)+(2-3.67)\times(5-3.67)}{\sqrt{(1-2.33)^2+(2-3.67)^2}\times\sqrt{(3-2.33)^2+(5-3.67)^2}}\\ &= \frac{-3.1122}{\sqrt{4.5578}\times\sqrt{2.2178}} \approx -0.978878245\\ sim(B,C) &= \frac{(3-2.33)\times(3-2.33)+(4-3.67)\times(5-3.67)}{\sqrt{(3-2.33)^2+(4-3.67)^2}\times\sqrt{(3-2.33)^2+(5-3.67)^2}}\\ &= \frac{0.8878}{\sqrt{0.5578}\times\sqrt{2.2178}} \approx 0.798205464 \end{aligned}
sim(A,B)sim(A,C)sim(B,C)=(1−2.33)2+(2−3.67)2×(3−2.33)2+(4−3.67)2(1−2.33)×(3−2.33)+(2−3.67)×(4−3.67)=4.5578×0.5578−1.4422≈−0.904500069=(1−2.33)2+(2−3.67)2×(3−2.33)2+(5−3.67)2(1−2.33)×(3−2.33)+(2−3.67)×(5−3.67)=4.5578×2.2178−3.1122≈−0.978878245=(3−2.33)2+(4−3.67)2×(3−2.33)2+(5−3.67)2(3−2.33)×(3−2.33)+(4−3.67)×(5−3.67)=0.5578×2.21780.8878≈0.798205464
修正余弦相似度的重点在于修正,其实就是将维度进行了中心化,然后再计算余弦相似度。
其实我们可以将A,B,C先进行中心化,得到A1=(-1.33,-1.67),B1=(0.67,0.33),C1=(0.67,1.33),然后再计算余弦相似度。在实际的算法实现中,也可以利用这种分步操作对算法进行优化。
应用场景
广泛应用于文本相似度和协同过滤系统的物品相似度。
皮尔逊相关系数
算法说明
在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coefficient,简称 PPMCC或PCCs),是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。
两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:
ρ
(
X
,
Y
)
=
c
o
v
(
X
,
Y
)
σ
X
σ
Y
=
E
[
(
X
−
μ
X
)
(
Y
−
μ
Y
)
]
σ
X
σ
Y
=
∑
i
=
1
n
(
X
i
−
X
ˉ
)
(
Y
i
−
Y
ˉ
)
∑
i
=
1
n
(
X
i
−
X
ˉ
)
2
∑
i
=
1
n
(
Y
i
−
Y
ˉ
)
2
\begin{aligned} \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_{i=1}^n(X_i-\bar{X})(Y_i-\bar{Y})}{\sqrt{\sum_{i=1}^n(X_i-\bar{X})^2}\sqrt{\sum_{i=1}^n(Y_i-\bar{Y})^2 }} \end{aligned}
ρ(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ˉ)
注意这个公式和修正余弦相似度很像,再看修正余弦相似度公式:
s
i
m
(
A
,
B
)
=
∑
i
=
1
n
(
A
i
−
D
i
ˉ
)
(
B
i
−
D
i
ˉ
)
∑
i
=
1
n
(
A
i
−
D
i
ˉ
)
2
×
∑
i
=
1
n
(
B
i
−
D
i
ˉ
)
2
sim(A,B) = \frac{\sum_{i=1}^n(A_i-\bar{D_i})(B_i-\bar{D_i})} {\sqrt{\sum_{i=1}^n(A_i-\bar{D_i})^2}\times\sqrt{\sum_{i=1}^n}(B_i-\bar{D_i})^2}
sim(A,B)=∑i=1n(Ai−Diˉ)2×∑i=1n(Bi−Diˉ)2∑i=1n(Ai−Diˉ)(Bi−Diˉ)
对于两者的区别,可以这样理解:
修正余弦相似度解决的是向量相似性,将集合看作向量,修正余弦相似度对同一维度进行中心化,也就是按列中心化;皮尔逊相关系数解决的是线性相关性,将集合看作正太连续变量,皮尔逊相关系数对同一变量进行中心化,也就是按行中心化。
下面同样举个协同过滤的例子,计算User相似度,说明皮尔逊相关系数的中心化方式。
还是以评分矩阵为例,假设有如下的评分矩阵:
User\Item | I1 | I2 | I3 |
---|---|---|---|
A | 1 | 2 | 3 |
B | 4 | 4 | 1 |
C | 3 | 4 | 5 |
得到变量A=(1,2,3),B=(4,4,1),C=(3,4,5),根据协同过滤思想,我们通过评分矩阵,可以判断出A与C相似,B和A,C都不相似。
计算期望:
U
1
ˉ
=
1
+
2
+
3
3
=
2
U
2
ˉ
=
4
+
4
+
1
3
=
3
U
3
ˉ
=
3
+
4
+
5
3
=
4
\bar{U_1} = \frac{1+2+3}{3} = 2\\ \bar{U_2} = \frac{4+4+1}{3} = 3\\ \bar{U_3} = \frac{3+4+5}{3} = 4
U1ˉ=31+2+3=2U2ˉ=34+4+1=3U3ˉ=33+4+5=4
先进行中心化,得到新的变量:A1=(-1,0,1),B1=(1,1,-2),C1=(-1,0,1)
计算皮尔逊相关系数:
ρ
(
A
1
,
B
1
)
=
−
1
×
1
+
0
×
1
+
1
×
(
−
2
)
(
−
1
)
2
+
0
2
+
1
2
1
2
+
1
2
+
(
−
2
)
2
=
−
3
2
6
≈
−
0.866025404
ρ
(
A
1
,
C
1
)
=
−
1
×
(
−
1
)
+
0
×
0
+
1
×
1
(
−
1
)
2
+
0
2
+
1
2
(
−
1
)
2
+
0
2
+
1
2
=
2
2
2
=
1
ρ
(
B
1
,
C
1
)
=
1
×
(
−
1
)
+
1
×
0
+
(
−
2
)
×
1
1
2
+
1
2
+
(
−
2
)
2
(
−
1
)
2
+
0
2
+
1
2
=
−
3
6
2
≈
−
0.866025404
\begin{aligned} \rho (A_1,B_1) &= \frac{-1\times1+0\times1+1\times(-2)}{\sqrt{(-1)^2+0^2+1^2}\sqrt{1^2+1^2+(-2)^2}} = \frac{-3}{\sqrt{2}\sqrt{6}} \approx -0.866025404\\ \rho (A_1,C_1) &= \frac{-1\times(-1)+0\times0+1\times1}{\sqrt{(-1)^2+0^2+1^2}\sqrt{(-1)^2+0^2+1^2}} = \frac{2}{\sqrt{2}\sqrt{2}} = 1\\ \rho (B_1,C_1) &= \frac{1\times(-1)+1\times0+(-2)\times1}{\sqrt{1^2+1^2+(-2)^2}\sqrt{(-1)^2+0^2+1^2}} = \frac{-3}{\sqrt{6}\sqrt{2}} \approx -0.866025404\\ \end{aligned}
ρ(A1,B1)ρ(A1,C1)ρ(B1,C1)=(−1)2+02+1212+12+(−2)2−1×1+0×1+1×(−2)=26−3≈−0.866025404=(−1)2+02+12(−1)2+02+12−1×(−1)+0×0+1×1=222=1=12+12+(−2)2(−1)2+02+121×(−1)+1×0+(−2)×1=62−3≈−0.866025404
统计学三大相关系数:皮尔逊相关系数,斯皮尔曼相关系数,肯德尔相关系数。
应用场景
应用于变量相关性观测,数据降维。
可用于协同过滤系统的用户相似度。
Jaccard系数
算法说明
Jaccard index, 又称为Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。
给定两个集合A,B,Jaccard 系数定义为A与B交集的大小与A与B并集的大小的比值,定义如下:
J
(
A
,
B
)
=
∣
A
∩
B
∣
∣
A
∪
B
∣
=
∣
A
∩
B
∣
∣
A
∣
+
∣
B
∣
−
∣
A
∩
B
∣
J(A,B) = \frac{\left | A \cap B \right |}{\left | A \cup B \right |} = \frac{\left | A \cap B \right |}{\left | A \right |+\left | B \right |-\left | A \cap B \right |}
J(A,B)=∣A∪B∣∣A∩B∣=∣A∣+∣B∣−∣A∩B∣∣A∩B∣
J(A,B)取值范围是[0,1],当集合A,B都为空时,J(A,B)定义为1。
与Jaccard 系数相关的指标叫做Jaccard 距离,用于描述集合之间的不相似度。Jaccard 距离越大,样本相似度越低。公式定义如下:
D
j
(
A
,
B
)
=
1
−
J
(
A
,
B
)
=
∣
A
∪
B
∣
−
∣
A
∩
B
∣
∣
A
∪
B
∣
=
A
Δ
B
∣
A
∪
B
∣
D_j(A,B) = 1-J(A,B) = \frac{\left | A \cup B \right |-\left | A \cap B \right |}{\left | A \cup B \right |} = \frac{A \Delta B}{\left | A \cup B \right |}
Dj(A,B)=1−J(A,B)=∣A∪B∣∣A∪B∣−∣A∩B∣=∣A∪B∣AΔB
Jaccard系数,度量的是非对称二元属性的相似性。
在数据挖掘领域,常常需要比较两个具有布尔值属性的对象之间的距离,Jaccard距离就是常用的一种方法。给定两个比较对象A,B。A,B 均有n个二元属性,即每个属性取值为{0,1}。定义如下4个统计量:
M 00 M_{00} M00 :A,B属性值同时为0的属性个数;
M 01 M_{01} M01 :A属性值为0且B属性值为1的属性个数;
M 10 M_{10} M10 :A属性值为1且B属性值为0的属性个数;
M 11 M_{11} M11 :A,B属性值同时为1的属性个数。
如下表:
A\B | 0 | 1 |
---|---|---|
0 | M 00 M_{00} M00 | M 01 M_{01} M01 |
1 | M 10 M_{10} M10 | M 11 M_{11} M11 |
Jaccard 系数:
J
(
A
,
B
)
=
M
11
M
01
+
M
10
+
M
11
J(A,B) = \frac{M_{11}}{M_{01}+M{10}+M{11}}
J(A,B)=M01+M10+M11M11
Jaccard距离:
D
j
(
A
,
B
)
=
1
−
J
(
A
,
B
)
=
M
01
+
M
10
M
01
+
M
10
+
M
11
D_j(A,B) = 1-J(A,B) = \frac{M_{01}+M_{10}}{M_{01}+M_{10}+M_{11}}
Dj(A,B)=1−J(A,B)=M01+M10+M11M01+M10
应用场景
比较文本相似度,用于文本查重与去重;
计算对象间距离,用于数据聚类等。
也可用于计算协同过滤系统中的物品相似度。 相关研究中,基于物品协同过滤系统的相似性度量方法普遍使用余弦相似性。 然而,在许多实际应用中,评价数据稀疏度过高,物品之间通过余弦相似度计算会产生误导性结果。 将杰卡德相似性度量应用到基于物品的协同过滤系统中,并建立起相应的评价分析方法。 与传统相似性度量方法相比,杰卡德方法完善了余弦相似性只考虑用户评分而忽略了其他信息量的弊端,特别适合于应用到稀疏度过高的数据。
度量差异总结
欧式距离和马氏距离
欧式距离会受到特征参数的量纲和相关性影响,而马氏距离除以了协方差矩阵,进而消除了量纲影响,当协方差矩阵为单位矩阵时,马氏距离就是欧式距离。
欧式距离和余弦相似度
欧式距离度量的是向量空间两点之间的距离,余弦相似度度量的是向量空间两个向量的方向差异性。对于同一组向量,欧式距离和余弦相似度得到的结果会有很大差异,在进行选择时,需要根据实际场景,判断要度量的是距离还是方向,然后再选择算法。
余弦相似度和皮尔逊相关系数
在协同过滤系统中,余弦相似度常用于计算物品相似度,皮尔逊相关系数常用于计算用户相似度。
余弦相似度和Jaccard系数
在协同过滤系统中,计算物品相似度最常用的是余弦相似度,但是评分矩阵稀疏度过高的情况下,余弦相似度会产生误导性结果,此时通过建立相应的评价分析方法,然后结合Jaccard系数,计算得到的物品相似度的效果可能会比较好。