相似度意义
在机器学习的各种领域都会遇到需要去衡量两个样本或者两个特征之间的关系的情况,因此就需要一种准则去数值化反映这种差别–相似度。相似度的计算方法有很多种,每种都有着各自的优缺点。下面详细展开介绍
几种重要的相似度计算方法
欧几里得相似度
欧几里得相似度是生活中碰到最多的一种。在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。欧几里得距离有时候有称欧氏距离,在数据分析及挖掘中经常会被使用到,例如聚类或计算相似度。
如果我们将两个点
X
1
,
X
2
X_1,X_2
X1,X2分别记作
(
p
1
,
p
2
,
p
3
,
p
4
…
p
d
)
(p_1,p_2,p_3,p_4…p_d)
(p1,p2,p3,p4…pd)和
(
q
1
,
q
2
,
q
3
,
q
4
,
…
q
d
)
(q_1,q_2,q_3,q_4,…q_d)
(q1,q2,q3,q4,…qd),则欧几里得距离的计算公式为:
d
(
X
1
,
X
2
)
=
∑
i
=
1
d
(
p
i
−
q
i
)
2
d(X_1,X_2)=\sqrt{\sum_{i=1}^d(p_i-q_i)^2}
d(X1,X2)=i=1∑d(pi−qi)2
可以看到,欧几里得距离得到的结果是一个非负数,最大值是正无穷,但是通常情况下相似度结果的取值范围在 [-1, 1] 之间。可以对它求倒数将结果转化到 (0, 1]之间。
#$可以看到,欧几里得距离得到的结果是一个非负数,最大值是正无穷大,但是通常情况下相似度结果的取值范围在 [-1, 1] 之间。可以对它求倒数将结果转化到 (0, 1]
1
1
+
∑
i
=
1
d
(
p
i
−
q
i
)
2
\frac{1}{1+\sqrt{\sum_{i=1}^d(p_i-q_i)^2}}
1+∑i=1d(pi−qi)21
但是通过深入了解发现,每个特征分量之间的维度量纲差异会影响欧氏距离的大选,例如某个特征的量纲特别大,对削弱其他特征对欧式相似度的影响。为了解决这种问题,需要对特征进行标准化:
X
∗
=
X
−
m
e
a
n
s
t
d
X^*=\frac{X-mean}{std}
X∗=stdX−mean
d
(
X
1
,
X
2
)
=
∑
i
=
1
d
(
(
p
i
−
q
i
)
s
i
)
2
d(X_1,X_2)=\sqrt{\sum_{i=1}^d(\frac{(p_i-q_i)}{s_i})^2}
d(X1,X2)=i=1∑d(si(pi−qi))2
余弦相似度
在推荐系统中常常会计算相似度的问题,其中最常见的是采用余弦相似度的方式进行计算,今天就一起来学习下余弦相似度,搞清楚这样的计算方式更加适合什么样的场景。
余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为0到1之间。
二维空间为例,上图的a和b是两个向量,我们要计算它们的夹角θ。余弦定理告诉我们,可以用下面的公式求得:
c
o
s
θ
=
a
∗
b
∣
a
∣
∗
∣
b
∣
cos\theta =\frac{a*b}{|a|*|b|}
cosθ=∣a∣∗∣b∣a∗b
存在的问题:余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。比如用户对内容评分,5分制。A和B两个用户对两个商品的评分分别为A:(1,2)和B:(4,5)。我们分别用两种方法计算相似度。使用余弦相似度得出的结果是0.98,看起来两者极为相似,但从评分上看X似乎不喜欢这两个东西,而Y比较喜欢。造成这个现象的原因就在于,余弦相似度没法衡量每个维数值的差异,对数值的不敏感导致了结果的误差。
需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值。比如A和B对两部电影评分的均值分别是(1+4)/2=2.5,(2+5)/2=3.5。那么调整后为A和B的评分分别是:(-1.5,-1.5)h和(1.5,2.5),再用余弦相似度计算,得到-0.98,相似度为负值,显然更加符合现实。修正的余弦相似度可以说就是对余弦相似度进行归一化处理的算法,公式如下:
c
o
s
θ
=
(
a
−
m
e
a
n
)
∗
(
b
−
m
e
a
n
)
∣
a
−
m
e
a
n
∣
∗
∣
b
−
m
e
a
n
∣
cos\theta =\frac{(a-mean)*(b-mean)}{|a-mean|*|b-mean|}
cosθ=∣a−mean∣∗∣b−mean∣(a−mean)∗(b−mean)
欧几里得距离和余弦相似度的区别:
直观来说,欧几里得距离衡量空间点的直线距离,余弦距离衡量点在空间的方向差异。
皮尔逊相关系数
在统计学中,皮尔逊相关系数相关系数(英语:Pearson product-moment correlation coefficient,又称作 PPMCC或PCCs, 用r表示)用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。通常情况下通过以下相关系数取值范围判断变量的相关强度:
8-1.0 极强相关
6-0.8 强相关
4-0.6 中等程度相关
2-0.4 弱相关
0-0.2 极弱相关或无相关
该相关系数是判断两组数据与某一直线拟合程度的一种度量,对应的公式比欧几里得距离计算公式要复杂,但是他在数据不是很规范(normalized)的时候,会倾向于给出更好的结果。
皮尔逊相关系数公式
r
a
,
b
=
∑
i
=
1
n
(
a
i
−
a
‾
)
∗
(
b
i
−
b
‾
)
∑
i
=
1
n
(
a
i
−
a
‾
)
2
∗
∑
i
=
1
n
(
b
i
−
b
‾
)
2
r_{a,b}=\frac{\sum_{i=1}^n(a_i-\overline{a})*(b_i-\overline{b})}{\sqrt{\sum_{i=1}^n(a_i-\overline{a})^2}*\sqrt{\sum_{i=1}^n(b_i-\overline{b})^2}}
ra,b=∑i=1n(ai−a)2∗∑i=1n(bi−b)2∑i=1n(ai−a)∗(bi−b)
从上式可以看出,皮尔逊相关系数和余弦相似度度十分相似,可以理解为去中心化的余弦相似度,不过要注意的是,皮尔逊相关系数只对线性相关有效,并不是所有衡量特征重要性都可以这么用,需要因地制宜。
我们一般用欧氏距离(向量间的距离)来衡量向量的相似度,但欧氏距离无法考虑不同变量间取值的差异。举个例子,变量a取值范围是0至1,而变量b的取值范围是0至10000,计算欧式距离时变量b上微小的差异就会决定运算结果。而Pearson相关性系数可以看出是升级版的欧氏距离平方,因为它提供了对于变量取值范围不同的处理步骤。因此对不同变量间的取值范围没有要求(unit free),最后得到的相关性所衡量的是趋势,而不同变量量纲上差别在计算过程中去掉了,等价于z-score标准化。而未经升级的欧氏距离以及cosine相似度,对变量的取值范围是敏感的,在使用前需要进行适当的处理。例如,在低维度可以优先使用标准化后的欧式距离或者其他距离度量,在高维度时Pearson相关系数更加适合。不过说到底,这几个衡量标准差别不大,很多时候的输出结果是非常相似的。