在机器学习中经常会涉及到范数和距离的概念,有时候优化的目标函数就是常用范数和距离的变化。关于范数和距离其实已经有很多人写过文章了,我之所以还要再写一遍,是因为读别人的文章我老是记不住,干脆好记性不如烂键盘,自己敲一遍吧。
向量范数表示向量空间中向量的大小。
将 n n n维实空间 R n R^n Rn中的向量 X = ( x 1 , x 2 , . . . , x n ) T \mathbf X = (x_1, x_2, ..., x_n)^T X=(x1,x2,...,xn)T的范数记作 ∥ X ∥ \Vert \mathbf X \Vert ∥X∥,该范数是一个实数,且满足以下三条性质:
(1) 非负性: ∥ X ∥ ≥ 0 \Vert \mathbf X \Vert \geq 0 ∥X∥≥0,当且仅当 X = 0 \mathbf X = \mathbf 0 X=0时 ∥ X ∥ = 0 \Vert \mathbf X \Vert = 0 ∥X∥=0;
(2) 齐次性:对任意实数 λ \lambda λ, ∥ λ X ∥ \Vert \lambda \mathbf X\Vert ∥λX∥ = ∣ λ ∣ ∥ X ∥ |\lambda| \Vert \mathbf X \Vert ∣λ∣∥X∥;
(3) 三角不等式:对任意向量 Y ∈ R n \mathbf Y \in R^n Y∈Rn, ∥ X + Y ∥ ≤ ∥ X ∥ + ∥ Y ∥ \Vert \mathbf X + \mathbf Y \Vert \leq \Vert \mathbf X \Vert + \Vert \mathbf Y \Vert ∥X+Y∥≤∥X∥+∥Y∥。
矩阵范数表示矩阵变换引起的变化大小。
若有 n × n n \times n n×n的矩阵 A \mathbf A A( A ∈ R n × n \mathbf A \in R^{n \times n} A∈Rn×n)以及 n n n维实空间 R n R^n Rn中的向量 X \mathbf X X,称
∥ A ∥ = max X ∈ R n , ∥ X ∥ = ̸ 0 ∥ A X ∥ ∥ X ∥ = max ∥ X ∥ = 1 , X ∈ R n ∥ A X ∥ \Vert \mathbf A \Vert = \max_{\mathbf X \in R^n, {\Vert \mathbf X \Vert} = \not 0} \frac{\Vert \mathbf {AX} \Vert}{\Vert \mathbf X \Vert} = \max_{\Vert \mathbf X \Vert = 1, \mathbf X \in R^n} \Vert \mathbf {AX} \Vert ∥A∥=X∈Rn,∥X∥≠0max∥X∥∥AX∥=∥X∥=1,X∈Rnmax∥AX∥
为矩阵 A \mathbf A A的从属于该向量范数的范数,即矩阵 A \mathbf A A的范数。
常用的矩阵范数如下所示:
距离一般用来度量样本之间的相似性,下面我们以向量 a = ( x 11 , x 12 , . . . , x 1 n ) T \mathbf a = (x_{11}, x_{12}, ..., x_{1n})^T a=(x11,x12,...,x1n)T和 b = ( x 21 , x 22 , . . . , x 2 n ) T \mathbf b = (x_{21}, x_{22}, ..., x_{2n})^T b=(x21,x22,...,x2n)T为例,一起看一下几个常用的距离。
曼哈顿距离又称作城市街区距离(City Block distance)。这样称呼的原因在于曼哈顿距离的计算方式和从城市的一个十字路口到另外一个十字路口的距离的计算方式是一样的。
假设 a \mathbf a a和 b \mathbf b b是二维向量,那么它们之间的距离就可以表示成:
D M a n h a t t a n = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ D_{Manhattan} = |x_1 - x_2| + |y_1 - y_2| DManhattan=∣x1−x2∣+∣y1−y2∣
将其扩展到 n n n维则可以表示为:
D M a n h a t t a n = ∑ i = 1 n ∣ x 1 i − x 2 i ∣ D_{Manhattan} = \sum_{i=1}^n |x_{1i} - x_{2i}| DManhattan=i=1∑n∣x1i−x2i∣
细心的朋友可能已经发现了,曼哈顿距离其实就是上面提到的1范数,有时它也叫做最小绝对误差。
欧氏距离其实就是我们平时说的两点间的距离:
D E u c l i d = ∑ i = 1 n ( x 1 i − x 2 i ) 2 D_{Euclid} = \sqrt {\sum_{i=1}^n {(x_{1i} - x_{2i})}^2} DEuclid=i=1∑n(x1i−x2i)2
或者可以用向量的形式表示如下:
D E u c l i d = ( a − b ) ( a − b ) T D_{Euclid} = \sqrt {{(\mathbf a - \mathbf b)} {(\mathbf a - \mathbf b)}^T} DEuclid=(a−b)(a−b)T
欧氏距离其实就是一种2范数。
切比雪夫距离的计算方式类似于国际象棋中的国王的走法,国王从棋盘上格子 ( x 1 , y 1 ) (x_1, y_1) (x1,y1)到 ( x 2 , y 2 ) (x_2, y_2) (x2,y2)走的最少步数总是 max ( ∣ x 2 − x 1 ∣ , ∣ y 2 − y 1 ∣ ) \max(|x_2 - x_1|, |y_2 - y_1|) max(∣x2−x1∣,∣y2−y1∣)步,具体的计算公式为:
D C h e b y s h e v = max i ∣ x 1 i − x 2 i ∣ D_{Chebyshev} = \max_{i} |x_{1i} - x_{2i}| DChebyshev=imax∣x1i−x2i∣
闵可夫斯基距离类似于 p p p范数,它表示的是一组距离的定义,上面提到的几种距离其实都是闵可夫斯基距离的特殊形式。它的计算公式为:
D M i n k o w s k i = ∑ i = 1 n ∣ x 1 i − x 2 i ∣ p p D_{Minkowski} = \sqrt[p] {\sum_{i=1}^n {|x_{1i} - x_{2i}|}^p} DMinkowski=pi=1∑n∣x1i−x2i∣p
当上式的 p = 1 p=1 p=1时,就是曼哈顿距离;当 p = 2 p=2 p=2时,就是欧氏距离;当 p = ∞ p=\infty p=∞时,就是切比雪夫距离。
闵可夫斯基距离的缺点在于:
(1) 将向量各个维度(样本点各个特征)的量纲当做相同的去计算,比如第一个特征为身高,第二个特征为体重,闵可夫斯基距离计算的时候是无法考虑上它们的单位的,只是把它们当做统一的数值,这难免就会差生偏差;
(2) 没有考虑各个维度的分布(期望、方差等)。
标准化欧氏距离是针对欧氏距离的缺点(即闵可夫斯基距离的缺点)做出的一种改进方案。
标准化欧氏距离利用数据的期望( m e a n mean mean)和标准差( s t a n d a r d standard standard d e v i a t i o n deviation deviation)对数据进行标准化,比如向量 X \mathbf X X就可以被标准化为 X − m s \frac{\mathbf X - m} {s} sX−m。
标准化后的数据的期望为0,方差为1。
经过标准化后的欧氏距离可以表示为:
D s t d _ e u c = ∑ i = 1 n ( x 1 i − x 2 i s i ) 2 D_{std\_euc} = \sqrt {\sum_{i=1}^n ({\frac{x_{1i} - x_{2i}} {s_i})}^2} Dstd_euc=i=1∑n(six1i−x2i)2
假设有 m m m个样本,每个样本有 n n n个特征,协方差矩阵为 C o v Cov Cov,均值为 μ \mu μ,那么其中一个样本向量 X \mathbf X X到均值 μ \mu μ的马氏距离为:
D M a h a l a n o b i s = ( X − μ ) T C o v − 1 ( X − μ ) D_{Mahalanobis} = \sqrt {{(\mathbf X - \mu)}^TCov^{-1}(\mathbf X - \mu)} DMahalanobis=(X−μ)TCov−1(X−μ)
如果是其中的两个向量 X i \mathbf X_i Xi与 X j \mathbf X_j Xj,它们的距离计算方式就为:
D M a h a l a n o b i s = ( X i − X j ) T C o v − 1 ( X i − X j ) D_{Mahalanobis} = \sqrt {{(\mathbf X_i - \mathbf X_j)}^TCov^{-1}(\mathbf X_i - \mathbf X_j)} DMahalanobis=(Xi−Xj)TCov−1(Xi−Xj)
若协方差矩阵是单位矩阵(各个样本之间独立同分布),那么计算公式就变为:
D M a h a l a n o b i s = ( X i − X j ) T ( X i − X j ) D_{Mahalanobis} = \sqrt {{(\mathbf X_i - \mathbf X_j)}^T(\mathbf X_i - \mathbf X_j)} DMahalanobis=(Xi−Xj)T(Xi−Xj)
如果协方差矩阵是对角矩阵,那么公式就变为了标准化欧氏距离。
马氏距离与量纲是无关的,能够排除变量之间的相关性干扰。
首先,两个向量的余弦相似度可以表示为:
c o s ( θ ) = a ⋅ b ∥ a ∥ 2 ∥ b ∥ 2 cos(\theta) = \frac{\mathbf a \cdot \mathbf b} {{\Vert \mathbf a\Vert}_2 {\Vert \mathbf b \Vert}_2} cos(θ)=∥a∥2∥b∥2a⋅b
余弦相似度就是两个特征向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,其取值范围是[-1, 1]。
余弦距离是用1减去余弦相似度得来的,其取值范围为[0, 2],相同的两个向量余弦距离为0。
需要注意的是,余弦距离并不是严格定义的距离,它不满足距离公理(正定性,对称性,三角不等式)中的三角不等式。
三条距离公理和范数的三条性质是类似的,这里给出具体定义:
假设有任意的三个向量 X = ( x 1 , x 2 , . . . , x n ) T \mathbf X = (x_1, x_2, ..., x_n)^T X=(x1,x2,...,xn)T、 Y = ( y 1 , y 2 , . . . . , y n ) T \mathbf Y = (y_1, y_2, ...., y_n)^T Y=(y1,y2,....,yn)T和 Z = ( z 1 , z 2 , . . . , z n ) T \mathbf Z = (z_1, z_2, ..., z_n)^T Z=(z1,z2,...,zn)T
(1)正定性: D ( X , Y ) ≥ 0 D(\mathbf X, \mathbf Y) \ge 0 D(X,Y)≥0,当且仅当 X = Y \mathbf X = \mathbf Y X=Y时, D ( X , Y ) = 0 D(\mathbf X, \mathbf Y) = 0 D(X,Y)=0;
(2)对称性: D ( X , Y ) = D ( Y , X ) D(\mathbf X, \mathbf Y) = D(\mathbf Y, \mathbf X) D(X,Y)=D(Y,X);
(3)三角不等式: D ( X , Z ) ≤ D ( X , Y ) + D ( Y , Z ) D(\mathbf X, \mathbf Z) \le D(\mathbf X, \mathbf Y) + D(\mathbf Y, \mathbf Z) D(X,Z)≤D(X,Y)+D(Y,Z)
针对余弦距离,我们给出三条距离公理的证明:
(1)正定性
D ( X , Y ) = 1 − c o s ( θ ) = 1 − X ⋅ Y ∥ X ∥ 2 ∥ Y ∥ 2 = ∥ X ∥ 2 ∥ Y ∥ 2 − X ⋅ Y ∥ X ∥ 2 ∥ Y ∥ 2 D(\mathbf X, \mathbf Y) = 1 - cos(\theta) = 1 - \frac{\mathbf X \cdot \mathbf Y} {{\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2} = \frac{{\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2 -\mathbf X \cdot \mathbf Y} {{\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2} D(X,Y)=1−cos(θ)=1−∥X∥2∥Y∥2X⋅Y=∥X∥2∥Y∥2∥X∥2∥Y∥2−X⋅Y
因为 ∥ X ∥ 2 ∥ Y ∥ 2 − X ⋅ Y = ∥ X ∥ 2 ∥ Y ∥ 2 − ∥ X ∥ 2 ∥ Y ∥ 2 c o s ( θ ) ≥ 0 {\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2 -\mathbf X \cdot \mathbf Y = {\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2 - {\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2 cos(\theta) \ge 0 ∥X∥2∥Y∥2−X⋅Y=∥X∥2∥Y∥2−∥X∥2∥Y∥2cos(θ)≥0,则 D ( X , Y ) ≥ 0 D(\mathbf X, \mathbf Y) \ge 0 D(X,Y)≥0。
当且仅当 X = Y \mathbf X = \mathbf Y X=Y时, ∥ X ∥ 2 ∥ Y ∥ 2 = X ⋅ Y {\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2 = \mathbf X \cdot \mathbf Y ∥X∥2∥Y∥2=X⋅Y,即 D ( X , Y ) = 0 D(\mathbf X, \mathbf Y) = 0 D(X,Y)=0。
(2)对称性
D ( X , Y ) = ∥ X ∥ 2 ∥ Y ∥ 2 − X ⋅ Y ∥ X ∥ 2 ∥ Y ∥ 2 = ∥ Y ∥ 2 ∥ X ∥ 2 − Y ⋅ X ∥ Y ∥ 2 ∥ X ∥ 2 = D ( Y , X ) D(\mathbf X, \mathbf Y) = \frac{{\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2 -\mathbf X \cdot \mathbf Y} {{\Vert \mathbf X \Vert}_2 {\Vert \mathbf Y \Vert}_2} = \frac{{\Vert \mathbf Y \Vert}_2 {\Vert \mathbf X \Vert}_2 -\mathbf Y \cdot \mathbf X} {{\Vert \mathbf Y \Vert}_2 {\Vert \mathbf X \Vert}_2} = D(\mathbf Y, \mathbf X) D(X,Y)=∥X∥2∥Y∥2∥X∥2∥Y∥2−X⋅Y=∥Y∥2∥X∥2∥Y∥2∥X∥2−Y⋅X=D(Y,X)
(3)三角不等式
本条我们直接使用反例证明,假设 X = ( 1 , 0 ) T \mathbf X = (1, 0)^T X=(1,0)T, Y = ( 1 , 1 ) T \mathbf Y = (1, 1)^T Y=(1,1)T, Z = ( 0 , 1 ) T \mathbf Z = (0, 1)^T Z=(0,1)T,则 D ( X , Y ) = 1 − 2 2 D(\mathbf X, \mathbf Y) = 1 - \frac {\sqrt 2} {2} D(X,Y)=1−22, D ( Y , Z ) = 1 − 2 2 D(\mathbf Y, \mathbf Z) = 1 - \frac {\sqrt 2} {2} D(Y,Z)=1−22, D ( X , Z ) = 1 D(\mathbf X, \mathbf Z) = 1 D(X,Z)=1
则 D ( X , Z ) > D ( X , Y ) + D ( Y , Z ) D(\mathbf X, \mathbf Z) \gt D(\mathbf X, \mathbf Y) + D(\mathbf Y, \mathbf Z) D(X,Z)>D(X,Y)+D(Y,Z)
综上,余弦距离满足正定性、对称性,但是不满足三角不等式。
关于余弦距离还需要提的是,它与欧氏距离的关系。
首先,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。比如,当一对文本长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。此外,在文本、图像、视频等领域,研究对象的特征维度往往很高,余弦相似度在高维情况下依然保持“相同时为1, 正交时为0,相反时为-1”的性质,而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。
在一些场景下,例如Word2Vec中,其向量的模长是经过归一化的,此时欧氏距离与余弦距离有着单调的关系,即 ∥ X − Y ∥ 2 = 2 ( 1 − c o s ( X , Y ) {\Vert \mathbf X - \mathbf Y \Vert}_2 = \sqrt {2 (1 - cos(\mathbf X, \mathbf Y)} ∥X−Y∥2=2(1−cos(X,Y)。其中 ∥ X − Y ∥ 2 {\Vert \mathbf X - \mathbf Y \Vert}_2 ∥X−Y∥2表示欧氏距离, c o s ( X , Y ) cos(\mathbf X, \mathbf Y) cos(X,Y)表示余弦相似度, 1 − c o s ( X , Y ) 1 - cos(\mathbf X, \mathbf Y) 1−cos(X,Y)表示余弦距离。在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧氏距离的结果是相同的。
最后,再看几个例子。当统计两部剧的用户观看行为,用户A的观看向量为(0, 1),用户B为(1, 0);此时二者的余弦距离很大,而欧氏距离很小。我们分析两个用户对于不同视频的偏好,更关注相对差异,显然应当使用余弦距离。而当我们分析用户活跃度,以登录次数(单位:次)和平均观看时长(单位:分钟)作为特征时,余弦距离认为(1, 10)、(10, 100)两个用户距离很近,但显然这两个用户活跃度是有着极大差异的,此时我们更关注数值绝对差异,应当使用欧氏距离。
假设有两个变量X和Y,那么它们的相关系数可以表示为:
r ( X , Y ) = C o v ( X , Y ) V a r ( X ) V a r ( Y ) = E ( ( X − E X ) ( Y − E Y ) ) V a r ( X ) V a r ( Y ) r(X, Y) = \frac {Cov(X, Y)} {\sqrt {Var(X) Var(Y)}} = \frac {E((X - EX)(Y - EY))} {\sqrt {Var(X) Var(Y)}} r(X,Y)=Var(X)Var(Y)Cov(X,Y)=Var(X)Var(Y)E((X−EX)(Y−EY))
其中, C o v ( X , Y ) Cov(X, Y) Cov(X,Y)为X与Y的协方差, V a r ( X ) Var(X) Var(X)为X的方差, V a r ( Y ) Var(Y) Var(Y)为Y的方差。
相关系数是衡量随机变量X与Y的相关程度的一种方法,相关系数的取值范围是[-1, 1]。相关系数的绝对值越大,则表示X与Y相关度越高。
当X与Y正线性相关时,相关系数取值为1;当X与Y负线性相关时,相关系数取值为-1。
相关距离定义为 D C o r r e l a t i o n = 1 − r ( X , Y ) D_{Correlation} = 1 - r(X, Y) DCorrelation=1−r(X,Y)
两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要做的最小替换次数。比如字符串"1100"与"1111"之间的汉明距离为2。
汉明距离在信息编码方面应用的比较多,比如为了增强容错性,应使得编码间的最小汉明距离尽可能大。
两个集合A和B中的交集元素在A和B的并集中所占的比例,称为两个集合的杰卡德类似系数。用符号 J ( A , B ) J(A, B) J(A,B)表示。
J ( A , B ) = ∣ A ⋂ B ∣ ∣ A ⋃ B ∣ J(A, B) = \frac {|A \bigcap B|} {|A \bigcup B|} J(A,B)=∣A⋃B∣∣A⋂B∣
杰卡德类似系数是衡量两个集合的类似度的一种指标。
杰卡德距离是与杰卡德类似系数相反的概念,它的计算公式为:
D J a c c a r d = 1 − J ( A , B ) = ∣ A ⋃ B ∣ − ∣ A ⋂ B ∣ ∣ A ⋃ B ∣ D_{Jaccard} = 1 - J(A, B) = \frac {|A \bigcup B| - |A \bigcap B|} {|A \bigcup B|} DJaccard=1−J(A,B)=∣A⋃B∣∣A⋃B∣−∣A⋂B∣
杰卡德距离用两个集合中不同元素占全部元素的比例来衡量两个集合的区分度。
[1] 范数
[2] 范数(norm) 几种范数的简单介绍
[3] 范数_百度百科
[4] 向量与矩阵的范数
[5] 数学中几种经常使用的距离
[6] 相关系数_百度百科
[7] 《百面机器学习 算法工程师带你去面试》(诸葛越主编). 第二章 模型评估 . 03 余弦距离的应用