邻近性的度量 - 距离、相似度
邻近性度量的应用非常广泛,例如在推荐算法的协同过滤中可以用来衡量物品之间或用户之间的相似性,从而做推荐;又例如在做特征工程,衡量特征之间的相关性,从而筛选特征。那么接下来就讲一下特征性度量的指标。
-
简单匹配系数
简单匹配系数(Simple Match Coefficient,SMC):
s m c = f 00 + f 11 f 00 + f 11 + f 10 + f 01 smc=\frac{f_{00}+f_{11}}{f_{00}+f_{11}+f_{10}+f_{01}} smc=f00+f11+f10+f01f00+f11
对于取值是二元的 x 1 , x 2 x_1,x_2 x1,x2 两个样本或两个特征:
f 00 , f 11 f_{00},f_{11} f00,f11 表示它们取值都为 0 或都为 1 的个数;
f 10 , f 01 f_{10},f_{01} f10,f01 表示它们取值不同的个数;
例如:
对用户 u 1 , u 2 , u 3 u_1,u_2,u_3 u1,u2,u3 之间的相似度进行衡量( 1 1 1 代表 “是”, 2 2 2 代表 “否”):
ID 爱看书 爱唱歌 爱看电影 爱购物 爱睡觉 u1 1 1 0 0 1 u2 0 0 0 1 1 u3 1 0 0 0 0 ∙ \bullet ∙ 对 u 1 / u 2 : f 11 = 1 , f 00 = 1 , f 10 = 2 , f 01 = 1 u_1/u_2:f_{11}=1,f_{00}=1,f_{10}=2,f_{01}=1 u1/u2:f11=1,f00=1,f10=2,f01=1
s m c u 1 , u 2 = f 00 + f 11 f 00 + f 11 + f 10 + f 01 = 1 + 1 1 + 1 + 2 + 1 = 2 5 smc_{u_1,u_2}=\frac{f_{00}+f_{11}}{f_{00}+f_{11}+f_{10}+f_{01}}=\frac{1+1}{1+1+2+1}=\frac{2}{5} smcu1,u2=f00+f11+f10+f01f00+f11=1+1+2+11+1=52
∙ \bullet ∙ 对 u 2 / u 3 : f 11 = 0 , f 00 = 1 , f 10 = 2 , f 01 = 1 u_2/u_3:f_{11}=0,f_{00}=1,f_{10}=2,f_{01}=1 u2/u3:f11=0,f00=1,f10=2,f01=1
s m c u 2 , u 3 = f 00 + f 11 f 00 + f 11 + f 10 + f 01 = 0 + 1 0 + 1 + 1 + 2 = 1 4 smc_{u_2,u_3}=\frac{f_{00}+f_{11}}{f_{00}+f_{11}+f_{10}+f_{01}}=\frac{0+1}{0+1+1+2}=\frac{1}{4} smcu2,u3=f00+f11+f10+f01f00+f11=0+1+1+20+1=41
因为: s m c u 1 , u 2 > s m c u 2 , u 3 smc_{u_1,u_2} > smc_{u_2,u_3} smcu1,u2>smcu2,u3,所以用户 u 1 , u 2 u_1,u_2 u1,u2 更相似,所以可以将 u 1 u_1 u1 的爱好推荐给 u 2 u_2 u2.
-
Jaccard 系数
一般来讲,我们更关注值为 1 的特征,当数据向量 非常稀疏时,值为 1 的特征个数少,值为 0 的特征个数非常多,此时 SMC 对每个用户间计算的值都是非常相近的,容易判定都相似,所以引入 Jaccard 系数,它忽略了取值都是 0 的特征:
J = f 11 f 11 + f 10 + f 01 J=\frac{f_{11}}{f_{11}+f_{10}+f_{01}} J=f11+f10+f01f11,忽略了 f 00 f_{00} f00
-
广义 Jaccard 系数
对于多值属性可以使用 广义 Jaccard 系数:
E J ( x 1 , x 2 ) = ( x 1 , x 2 ) ∣ ∣ x 1 ∣ ∣ 2 + ∣ ∣ x 2 ∣ ∣ 2 − ( x 1 , x 2 ) EJ(x_1,x_2)=\frac{(x_1,x_2)}{||x_1||^2+||x_2||^2-(x_1,x_2)} EJ(x1,x2)=∣∣x1∣∣2+∣∣x2∣∣2−(x1,x2)(x1,x2),其中 ( x 1 , x 2 ) (x_1,x_2) (x1,x2) 为 x 1 , x 2 x_1,x_2 x1,x2 的内积,即对应特征乘积的和。
可用于稀疏向量,且在特征都为二元取值的条件下归约为 Jaccard 系数。
-
距离
定义 x 1 , x 2 x_1,x_2 x1,x2 之间的距离为: d ( x 1 , x 2 ) = [ ∑ k = 1 n ∣ x 1 − x 2 ∣ β ] 1 β d(x_1,x_2)=[\sum_{k=1}^{n}|x_1-x_2|^β]^{\frac{1}{β}} d(x1,x2)=[∑k=1n∣x1−x2∣β]β1
当 β = 1 β=1 β=1 时,称为曼哈顿距离,或 L1 范数,L1 正则项;
当 β = 2 β=2 β=2 时,称为欧氏距离,或 L2 范数,L2 正则项;
当 β = ∞ β=\infty β=∞ 时,称为上确界距离,或 Lmax 范数, d ( x 1 , x 2 ) = β → ∞ lim [ ∑ k = 1 n ∣ x 1 ( k ) − x 2 ( k ) ∣ ] 1 β d(x_1,x_2)=\mathop{}_{β→\infty}^{\lim}[\sum_{k=1}^{n}|x_1^{(k)}-x_2^{(k)}|]^{\frac{1}{β}} d(x1,x2)=β→∞lim[∑k=1n∣x1(k)−x2(k)∣]β1
距离易受值域大的特征的影响,应注意规范化。
对于一个距离,需要满足三条距离公理:正定性、对称性、三角不等式。
∙ \bullet ∙ 正定性: d ( x 1 , x 2 ) ≥ 0 d(x_1,x_2)\ge0 d(x1,x2)≥0
∙ \bullet ∙ 对称性: d ( x 1 , x 2 ) = d ( x 2 , x 1 ) d(x_1,x_2)=d(x_2,x_1) d(x1,x2)=d(x2,x1)
∙ \bullet ∙三角不等式: d ( x 1 , x 3 ) ≤ d ( x 1 , x 2 ) + d ( x 2 , x 3 ) d(x_1,x_3)\le d(x_1,x_2)+d(x_2,x_3) d(x1,x3)≤d(x1,x2)+d(x2,x3)
只有满足此三条公理,此度量标准才能称为距离。显然以上所说的三种都满足。
-
余弦相似度
定义 x 1 , x 2 x_1,x_2 x1,x2 之间的余弦相似度为: cos ( x 1 , x 2 ) = ( x 1 , x 2 ) ∣ ∣ x 1 ∣ ∣ + ∣ ∣ x 2 ∣ ∣ \cos(x_1,x_2)=\frac{(x_1,x_2)}{||x_1||+||x_2||} cos(x1,x2)=∣∣x1∣∣+∣∣x2∣∣(x1,x2)
计算的是两个向量夹角的余弦值,其中 ( x 1 , x 2 ) (x_1,x_2) (x1,x2) 为内积, ∣ ∣ x ∣ ∣ = ∑ k = 1 n x ( k ) ⋅ x ( k ) ||x||=\sum_{k=1}^{n}x^{(k)}·x^{(k)} ∣∣x∣∣=∑k=1nx(k)⋅x(k)。余弦相似度在计算过程中有求和操作,自动忽略 0 值。
余弦相似度还可改写为: cos ( x 1 , x 2 ) = x 1 ∣ ∣ x 1 ∣ ∣ ⋅ x 2 ∣ ∣ x 2 ∣ ∣ \cos(x_1,x_2)=\frac{x_1}{||x_1||}·\frac{x_2}{||x_2||} cos(x1,x2)=∣∣x1∣∣x1⋅∣∣x2∣∣x2
相当于 x 1 , x 2 x_1,x_2 x1,x2 被各自的长度除,将长度规范化,意味着不考虑 x 1 , x 2 x_1,x_2 x1,x2 量值。
余弦相似度不是一个严格定义的距离,它只满足正定性与对称性,但不满足三角不等式。
-
皮尔森系数
皮尔森系数(Pearson’s Correlation)定义为: p c ( x 1 , x 2 ) = S x 1 , x 2 S x 1 ⋅ S x 2 pc(x_1,x_2)=\frac{S_{x_1,x_2}}{S_{x_1}·S_{x_2}} pc(x1,x2)=Sx1⋅Sx2Sx1,x2
其中 S x 1 , x 2 = c o v ( x 1 , x 2 ) = 1 n − 1 ∑ k = 1 n ( x 1 − x ‾ 1 ) ( x 2 − x ‾ 2 ) S_{x_1,x_2}=cov(x_1,x_2)=\frac{1}{n-1}\sum_{k=1}^{n}(x_1-\overline x_1)(x_2-\overline x_2) Sx1,x2=cov(x1,x2)=n−11∑k=1n(x1−x1)(x2−x2) 为 x 1 , x 2 x_1,x_2 x1,x2 的协方差。
S x 1 = 1 n ∑ k = 1 n ( x 1 − x ‾ 1 ) S_{x_1}=\sqrt{\frac{1}{n}\sum_{k=1}^{n}(x_1-\overline x_1)} Sx1=n1∑k=1n(x1−x1), S x 2 = 1 n ∑ k = 1 n ( x 2 − x ‾ 2 ) S_{x_2}=\sqrt{\frac{1}{n}\sum_{k=1}^{n}(x_2-\overline x_2)} Sx2=n1∑k=1n(x2−x2) 为标准差。
∙ \bullet ∙ p c = 1 pc=1 pc=1, x 1 , x 2 x_1,x_2 x1,x2 完全正相关;
∙ \bullet ∙ p c = − 1 pc=-1 pc=−1, x 1 , x 2 x_1,x_2 x1,x2 完全正相关;
∙ \bullet ∙ p c = 0 pc=0 pc=0, x 1 , x 2 x_1,x_2 x1,x2 不存在线性关系(可能非线性);
-
Bregman 散度
Bregman 散度(Bregman Divergence):假设 y y y 为真实点 , x x x 为 y y y 的近似点或失真点(例如向 y y y 点加入噪声得到 x x x),Bregman 散度的目的是度量 x x x 与 y y y 之间的损失量或差,是度量相异性的函数,当然相异性越小则意味着相似性越大。
d ( x , y ) = f ( x ) − f ( y ) − < ∇ f ( y ) , ( x − y ) > d(x,y)=f(x)-f(y)-<\nabla f(y),(x-y)> d(x,y)=f(x)−f(y)−<∇f(y),(x−y)>
其中, f ( t ) f(t) f(t) 为一个函数, f ( y ) f(y) f(y) 为 f ( t ) f(t) f(t) 在 t = y t=y t=y 时的斜率, ( x − y ) (x-y) (x−y) 为向量差, < ∇ f ( y ) , ( x − y ) > <\nabla f(y),(x-y)> <∇f(y),(x−y)> 为二者的内积。
∙ \bullet ∙ 注:可从 d ( x , y ) = f ( x ) − L ( x ) , L ( x ) = f ( y ) + < ∇ f ( y ) , ( x − y ) > d(x,y)=f(x)-L(x),L(x)=f(y)+<\nabla f(y),(x-y)> d(x,y)=f(x)−L(x),L(x)=f(y)+<∇f(y),(x−y)>
L ( x ) L(x) L(x) 代表在 y y y 上正切与 f ( t ) f(t) f(t) 函数的(平面)方程; d ( x , y ) d(x,y) d(x,y) 是 f ( t ) f(t) f(t) 与 f ( t ) f(t) f(t) 的线性近似之间的差。
例: f ( t ) = t 2 f(t)=t^2 f(t)=t2,假设真实点 y = 1 y=1 y=1,求 x = 2 , x = 3 x=2,x=3 x=2,x=3时分别的 Bregman 散度:
解: d ( x , y ) = x 2 − y 2 − 2 y ⋅ ( x − y ) = { 1 , x = 2 4 , x = 3 d(x,y)=x^2-y^2-2y·(x-y)=\begin{cases}1,x=2\\4,x=3 \end{cases} d(x,y)=x2−y2−2y⋅(x−y)={1,x=24,x=3
-
选择正确的度量指标
∙ \bullet ∙ 对于稠密的、连续的数据:使用距离、SMC等;
∙ \bullet ∙ 对于稀疏的、非对称的数据:余弦相似度、Jaccard、广义Jaccard等;
∙ \bullet ∙ 对于量值重要的,衡量数值是否相近:距离等;
∙ \bullet ∙ 对于形状重要的,衡量形状是否相似:余弦等。