在分类和聚类问题中,除了使用距离之外,还可以使用相似系数。显而易见,距离和相似系数应该呈反比,距离越小越相似;距离越大越不同。在上一篇文章中,我们已经对距离进行了详细的说明:明考夫斯基距离和马氏距离。
本文将主要介绍相似系数的定义,而后介绍两种比较常用的相似系数:夹角余弦和相关系数。
相似系数的定义
假设 x i x_i xi和 x j x_j xj是两个不同的变量,其相似系数使用 c i j c_{ij} cij来表示,一般需要满足三个条件:
- c i j = ± 1 c_{ij} = ±1 cij=±1,当且仅当 x i = a x j + b x_i = ax_j + b xi=axj+b,其中 a ( ≠ 0 ) a(≠0) a(̸=0)和 b b b是常数;
- ∣ c i j ∣ ≤ 1 |c_ij|≤1 ∣cij∣≤1, ∀ i , j \forall i,j ∀i,j
- c i j = c j i c_{ij} = c_{ji} cij=cji, ∀ i , j \forall i,j ∀i,j
夹角余弦
假设变量
x
i
x_i
xi的观测向量为
(
x
i
1
,
x
i
2
,
⋯
 
,
x
i
n
)
(x_{i1},x_{i2},\cdots,x_{in})
(xi1,xi2,⋯,xin),变量
x
j
x_j
xj的观测值为
(
x
j
1
,
x
j
2
,
⋯
 
,
x
j
n
)
(x_{j1},x_{j2},\cdots,x_{jn})
(xj1,xj2,⋯,xjn),
θ
\theta
θ表示这两个观测向量的夹角,则变量
x
i
x_i
xi和变量
x
j
x_j
xj的夹角余弦为
cos
θ
\cos{\theta}
cosθ:
cos
θ
=
∑
k
=
1
n
x
i
k
x
j
k
[
(
∑
k
=
1
n
x
i
k
2
)
(
∑
k
=
1
n
x
j
k
2
)
]
1
2
\cos{\theta} = \dfrac{\sum_{k=1}^{n}x_{ik}x_{jk}}{[(\sum_{k=1}^{n}x_{ik}^2)(\sum_{k=1}^{n}x_{jk}^2)]^\frac{1}{2}}
cosθ=[(∑k=1nxik2)(∑k=1nxjk2)]21∑k=1nxikxjk
假设两个用户对两部电影的评分(5分制),分别为 ( 1 , 1 ) (1,1) (1,1)和 ( 5 , 5 ) (5,5) (5,5),其夹角余弦为1,表示两个向量的方向相同。但是我们可以很明显的发现,第一个用户不喜欢这两个电影,第二个用户很喜欢这两个电影。从这里我们也可以看出,夹角余弦度量的是方向的异同。
由此,我们也可以发现,夹角余弦的缺点在于其只探究了两个向量的方向是否一致,对此,我们令其减去均值做修改。即:
令 x ˉ = ∑ k = 1 n ( x i k + x j k ) 2 n \bar{x} =\dfrac{ \sum_{k=1}^{n}(x_{ik}+x_{jk})}{2n} xˉ=2n∑k=1n(xik+xjk)
修正后的夹角余弦 cos θ ′ = ∑ k = 1 n ( x i k − x ˉ ) ( x j k − x ˉ ) [ ( ∑ k = 1 n ( x i k − x ˉ ) 2 ) ( ∑ k = 1 n ( x j k − x ˉ ) 2 ) ] 1 2 \cos{\theta'} = \dfrac{\sum_{k=1}^{n}(x_{ik}-\bar{x})(x_{jk}-\bar{x})}{[(\sum_{k=1}^{n}({x_{ik}-\bar{x}})^2)(\sum_{k=1}^{n}(x_{jk}-\bar{x})^2)]^\frac{1}{2}} cosθ′=[(∑k=1n(xik−xˉ)2)(∑k=1n(xjk−xˉ)2)]21∑k=1n(xik−xˉ)(xjk−xˉ)
对于 ( 1 , 1 ) (1,1) (1,1)和 ( 5 , 5 ) (5,5) (5,5)而言, x ˉ = 3 \bar{x} = 3 xˉ=3, cos θ ′ = 0 \cos{\theta'} = 0 cosθ′=0,说明二人对于电影的评分是没有关系的。
相关系数
假设变量
x
i
x_i
xi的观测向量为
(
x
i
1
,
x
i
2
,
⋯
 
,
x
i
n
)
(x_{i1},x_{i2},\cdots,x_{in})
(xi1,xi2,⋯,xin),变量
x
j
x_j
xj的观测值为
(
x
j
1
,
x
j
2
,
⋯
 
,
x
j
n
)
(x_{j1},x_{j2},\cdots,x_{jn})
(xj1,xj2,⋯,xjn),其相关系数
ρ
i
j
\rho_{ij}
ρij的定义为:
ρ
i
j
=
∑
k
=
1
n
(
x
i
k
−
x
i
ˉ
)
(
x
j
k
−
x
j
ˉ
)
[
(
∑
k
=
1
n
(
x
i
k
−
x
i
ˉ
)
2
)
(
∑
k
=
1
n
(
x
j
k
−
x
j
ˉ
)
2
)
]
1
2
\rho_{ij} = \dfrac{\sum_{k=1}^{n}(x_{ik}-\bar{x_i})(x_{jk}-\bar{x_j})}{[(\sum_{k=1}^{n}({x_{ik}-\bar{x_i}})^2)(\sum_{k=1}^{n}(x_{jk}-\bar{x_j})^2)]^\frac{1}{2}}
ρij=[(∑k=1n(xik−xiˉ)2)(∑k=1n(xjk−xjˉ)2)]21∑k=1n(xik−xiˉ)(xjk−xjˉ)
其中,
x
i
ˉ
=
∑
k
=
1
n
x
i
k
n
\bar{x_i} = \dfrac{\sum_{k=1}^{n}x_{ik}}{n}
xiˉ=n∑k=1nxik
x
j
ˉ
=
∑
k
=
1
n
x
j
k
n
\bar{x_j} = \dfrac{\sum_{k=1}^{n}x_{jk}}{n}
xjˉ=n∑k=1nxjk
注意:如果 x i x_i xi和 x j x_j xj都是标准化后的数据,那么其夹角余弦等于其相关系数。
与距离的关系
由距离出发构造相似系数总是可能的。如令:
c
i
j
=
1
1
+
d
i
j
c_{ij} = \dfrac{1}{1+d_{ij}}
cij=1+dij1
可以验证这个
c
i
j
c_{ij}
cij是满足相关系数的三个条件的。
但是由相关系数出发构造距离就不是这样的了。因为相关系数可能出现负数,但是距离不可以是负数。