度量空间
度量空间(Metric Space)是表示给定集合中数据点之间的关系的数学抽象构造。距离度量在度量空间中得到描述,并满足非负性、对称性、三角不等性。
其数学描述如下。给定一个二元组(S,d),其中 S 是非空的数据集合。对于定义在S的元素, 距离度量函数d具有如下性质:
- 非负性:对于任意 x,y∈S,d(x,y)⩾0, 并且 d(x,y)=0↔x=y .
- 对称性:对于任意 x,y∈S,d(x,y)=d(y,x) .
- 三角不等性:对于任意 x,y,z∈S,d(x,y)+d(y,z)⩾d(x,z) .
度量空间可以作为相当多数据类型及其距离函数的抽象规范,我们可以构造相当多的符合度量空间特性的距离度量函数。
基于向量的距离度量
向量类型是多维数据最常见的类型。其中,应用最为广泛的距离函数应该为Minkowski距离的不同实例化。
闵可夫斯基距离(Minkowski Distance)
两个 n维向量 X=(x1,…,xn) 和 Y=(y1,…,yn)之间的 p 次 (p=1,2,3,…,∞)闵可夫斯基距离 Lp 定义为:
Lp((x1,…,xn),(y1,…,yn))=pi=1∑n∣xi−yi∣p
有闵可夫斯基距离 Lp(p=1,2,3,…,∞) 满足度量空间距离函数性质。
曼哈顿距离(Manhattan Distance)
两个 n 维向量X=(x1,…,xn) 和 Y=(y1,…,yn) 之间的曼哈顿距离 L1为 p=1 的闵可夫斯基距离:
L1((x1,…,xn),(y1,…,yn))=i=1∑n∣xi−yi∣
在几何学上,曼哈顿距离用以标明两个点在标准坐标系上的绝对轴距总和。“曼哈顿”的称谓即源于在方正的纽约曼哈顿街区,从一个十字路口开车到另外一个十字路口的实际驾驶距离。由是,曼哈顿距离也称为城市街区距离(City Block distance).
欧几里得距离(Euclidean Distance)
两个 n 维向量 X=(x1,…,xn) 和 Y=(y1,…,yn)之间的欧几里得距离 L2为 p=2 的闵可夫斯基距离:
L2((x1,…,xn),(y1,…,yn))=i=1∑n(xi−yi)2
考虑到欧氏距离各维度分量的分布可能不一样,实践中往往采取改进的方案:标准化欧氏距离,即在使用该距离度量前对数据进行标准化。记样本集的标准差为k,则有标准化的欧氏距离:
d(x,y)=k=1∑n(skxk−yk)2
将方差的倒数看成是一个权重,可见标准化的欧氏距离事实上是一种加权欧氏距离。
欧几里得距离的显著优点,在于其非常直观,且易于实施,在很多低维数据的度量上都能有良好的表现。在高维度或稀疏数据集中往往表现不佳,会遭遇“维度灾难”问题。
切比雪夫距离(Chebyshev Distance)
两个 n维向量 X=(x1,…,xn) 和 Y=(y1,…,yn)之间的切比雪夫距离 L∞就是其 p=∞ 的闵可夫斯基距离:
L∞((x1,…,xn),(y1,…,yn))=p→∞limpi=1∑n∣xi−yi∣p=1≤i≤nmax∣xi−yi∣
由定义可见,曼哈顿距离是两点连线在所有坐标轴上投影所得线段的长度之和;欧几里得距离是空间两点连线的长度;切比雪夫距离是两点连线在所有坐标轴上投影所得线段的最大长度。
在二维平面内,讨论不同的闵可夫斯基距离的原点距大小,可以进一步说明了闵可夫斯基距离不同特例间的关系。令 UBp 是 Lp空间中的 单位圆, 即到原点的 Lp距离不超过1 的点的集合,Lop(X) 是点 X=(x1,x2) 到原点的Lp距离。不同闵可夫斯基距离的 Lp 空间单位圆如图所示。

不同闵可夫斯基距离的 L^p 空间单位圆
UB1边缘的点到原点的曼哈顿距离是 1 , 即:
L1((x1,x2),(0,0))=i=1∑2∣xi−0∣=∣x1∣+∣x2∣=1
故有其单位圆表现为菱形。
UB2边缘的点到原点的欧几里得距离是 1 ,其单位圆表现为圆形。
UB∞边缘的点到原点的切比雪夫距离是 1 ,即有
L∞((x1,x2),(0,0))=1≤i≤2max∣xi−0∣=max(∣x1∣,∣x2∣)=1
其单位圆表现为正方形。
可见,UB1,UB2,UB3,…,UB∞ 依次被下一个集合包含的。(0,1),(1,0),(0,−1),(−1,0) 是各空间单位圆的边缘上的共同点。随着p的增加, UBp将 从菱形的4条边开始, 逐渐向正方形的 4 个角填充, 直至 p=∞时填满整个正方形,严谨关系如图所示。有:
UB1⊆UB2⊆⋯⊆UB∞
相对应地,对于UB1内一点X,可以归纳:
1≥Lo1(X)≥Lo2(X)≥⋯≥Lo∞(X)

R^2上同一不同闵可夫斯基距离的 L^p 空间单位圆
马氏距离(Mahalanobis Distance)}
事实上,闵可夫斯基距离并没有考虑向量分量之间的相关性及分布的差异。对这些因素的考虑,需要引入马氏距离(Mahalanobis distance).
马氏距离表示数据的 协方差距离。与欧式距离不同的是,在马氏距离的计算中,各分量是 尺度无关 (Scale Invariant) 的。
对于一个协方差矩阵为 ∑ 的变量 x 和y , 马氏 距离定义为:
d(x,y)=(x−y)⊤∑−1(x−y)
马氏距离的优势在于其不受不同维度之间量纲的影响,但这也同时导致了一个潜在的问题,即扩大了变化量较小的变量的影响。
在几何意义上,可以将马氏距离理解为经过旋转变换缩放后的欧氏距离。通过按照主成分旋转,可实现维度间的相互独立。下图直观地呈现了这一性质。左子图根据欧氏距离计算,可见红色 的点距离 绿色 的点更近;右子图根据马氏距离计算,可见经过旋转变换缩放,维度间解耦,相关性消除,经过标准化后,红色的点距离蓝色的点更近。
同一数据集,左图根据欧氏距离计算,右图根据马氏距离计算
可简要推导马氏距离与欧氏距离的关系:
假设原始的多维样本数据 Xn×m(n 行, m 列 ) :
Xn×m=x11x21⋮xn1x12x22⋮xn2⋯⋯⋱⋯x1mx2m⋮xnm
其中每行表示一个样本, Xi 表示样本的第i 个维度, Xi=(x1i,x2i,…,xni)T,i=1,2,…,m ,则以上多维样本数据可记为: X=(X1,X2,…,Xm) 样本总体的均值向量记为: μX=(μX1,μX2,…,μXm)
对数据进行转换,旋转至主成分,使维度间线性无关。假设将原始数据X通过坐标旋转矩阵U变换得到了新的坐标,对应的新数据集记为F,其中F集元素为f=(f1,f2,…,fm),则有
DM=(λ1f1−μF1)2+(λ2f2−μF2)2+…+(λmfm−μFm)2=(f−μF)T(UTΣXU)−1(f−μF)=(x−μX)TUUTΣX−1UUT(x−μX)=(x−μX)TΣX−1(x−μX)
其中, λi,i=1,2,…,m表示每个维度的方差。
在实践中,马氏距离这一解除维度相关性的特性是很有用的。例如,在机器学习中,数据集的某些变量或标签数据与检测的目标并无关系,将这样的数据纳入距离度量的计算是并不适宜的。马氏距离的计算提供了解耦的可能性。通过优化计算马氏距离中的半正定矩阵,可以显著增强机器学习的泛化性能,此即度量学习的算法思想。
余弦相似度(Cosine Similarity)}
易从欧几里得几何空间,推广出向量内积(Inner Product of Vectors)的定义,从而引入余弦相似度(Cosine Similarity)作为一种距离度量。
从几何角度看,点积则是两个向量的长度与它们夹角余弦的积。在欧几里得空间中,点积可以直观地定义为:
\begin{equation}
x \cdot y=|x||y| \cos \theta
\end{equation}
由此可得余弦相似度:
s(x,y)=cos(θ)=∣x∣∣y∣x⋅y=∑i=1nxi2∑i=1nyi2∑i=1nxiyi
余弦相似度的取值范围为[−1,1],1表示两者完全正相关,−1 表示两者完全负相关,0表示两者之间独立。余弦相似度与向量的长度无关,只与向量的方向有关,但余弦相似度会受到向量平移的影响。
皮尔逊相关系数(Pearson Correlation)
考虑到余弦相似度会受到向量平移的影响,皮尔逊相关系数消除了这一问题。有皮尔逊相关系数定义为:
ρ(x,y)=σxσycov(x,y)=σxσyE[(x−μx)(y−μy)]
其中, cov 表示协方差, E 表示期望, μ 表示均值, σ 表示标准差。对于样本的皮尔逊相关系数, 可以通过如下方式计算:
r=∑i=1n(xi−xˉ)2∑i=1n(yi−yˉ)2∑i=1n(xi−xˉ)(yi−yˉ)=n−11i=1∑n(σxxi−xˉ)(σyyi−yˉ)
变量位置和尺度的变化并不会引起皮尔逊相关系数的改变。图示给出了不同的(x,y)之间的皮尔逊相关系数。当然,也可以看到,皮尔逊相关系数只能反映变量的线性相关性,而忽略了许多其他类型的关系或相关性。

(x, y)的点集,以及各个点集中x和y之间的相关系数。可见相关系数反映的是变量之间的线性关系和相关性的方向
基于字符串的距离度量
基于字符串的距离度量也是常见的距离度量之一。常见的字符串距离函数包括海明距离、编辑距离等。
汉明距离(Hamming Distance)
对于字符串S[1...n],其中S(i)为其第i个字符。汉明距离定义为两个字符串S1[1...n],S2[1…n]之间相应位置上字符不相同的数目:
H(S1,S2)=i=1∑n{1,0,S1(i)=S2(i)S1(i)=S2(i)
可以看到,因为0 的0 次幂是0 ,故而海明距离也可以看作 p=0的闵可夫斯基距离。
编辑距离(Edit Distance)
在编辑距离的定义中,需要定义三个基本的字符串编辑操作:插入、删除、替换。两个字符串的编辑距离是把第一个字符串通过基本编辑操作,转化为第二个字符串时所需的最少的操作个数。
在数学描述上,令 E(S1,S2) 为字符串 S1[1…n] 和 S2[1…m]之间的编辑距离, E(i,j)为子串 S1[1…i] 和 S2[1…j] 之间的编辑距离, 则边际情形 E(i,0)=i,E(0,j)=j0E(i,j) 可能来源于三种情况:
- 基于 E(i−1,j)删除 S1[1…i]子串的最后一个字符 S1(i) ;
- 基于E(i,j−1)在 S2[1..j−1]后面插入字符 S2(j);
- 基于 E(i−1,j−1), 如果 S1(i) 和 S2(j) 两个字符不同的话, 把 S1[1…i−1] 子串后面的字符 S1(i)替换为字符S2(j) .
可见,编辑距离的计算有一定复杂度,其求解可以利用动态规划的思想进行优化计算。
通过为不同的编辑操作定义不同的权重,可以设计扩展的编辑距离,此即编辑距离的特征加权选择算法。在实践中,加权编辑距离也可以实现维度解耦,避免无关变量参与到距离度量的计算中,这和度量学习的数据处理思路是相似的。
基于集合的距离度量
在基于集合的距离度量中,有集合和距离函数构成了一个度量空间实例。
杰卡德距离
令 A和 B 为两个集合,则 A和B 之间的杰卡德距离J(A,B)为
J(A,B)=1−∣A∪B∣∣A∩B∣
杰卡德系数sj=∣A∪B∣∣A∩B∣的取值范围为[0,1],0 表示两个集合没有重合,1表示两个集合完全重合。
在机器学习实践中,杰卡德系数通常用于计算预测数据的准确性,或用于文本相似性分析。
戴斯系数
和杰卡德系数性质类似的是戴斯系数,有其定义为:
sd=∣A∣+∣B∣2∣A∩B∣
斯系数的取值范围亦为[0,1], 杰卡德系数和戴斯系数之间可以相互转换 sd=2sj/(1+sj),sj=sd/(2−sd) 。不同于 杰卡德距离,戴斯系数的差异函数 d=1−sd 并不是一个严格的距离度量,其并不满足距离函数的三角不等式。
豪斯多夫距离
令 A和B 为两个集合,d(A,B)是定义在A 和B 的元素之间的度量空间距离函数,则A和B之间的有向豪斯多夫距离h(A,B)和豪斯多夫距离H(A,B)满足:
h(A,B)=maxa∈A(minb∈B(d(a,b)))H(A,B)=max(h(A,B),h(B,A))
其中, H(A,B) 满足度量空间距离函数性质, 集合和豪 斯多夫距离构成了一个度量空间实例。而由于一般而言,有h(A,B)=h(B,A),故而有向豪斯多夫距离h(A,B)并非严格的距离度量函数。 从最近邻算法的思路上看, 豪斯多夫距离是一个集合的所有元素到其 在另一个集合里的最近邻的距离的最大值。豪斯多夫距离在图像处理、图像匹配领域有广泛应用。
基于信息论的距离度量
相对熵 (Relative Entropy)
相对熵又称之为 KL 散度 (Kullback-Leibler Divergence),用于衡量两个分布之间的差异,定义为:
DKL(P∥Q)=i∑P(i)lnQ(i)P(i)
在信息论中,相对熵意义为用分布p去近似分布q时的信息损失量。由于KL散度为非负数DKL(P∥Q)≥0, 同时其不具有对称性DKL(P∥Q)=DKL(Q∥P), 也 不满足距离函数的三角不等式。所以相对熵并不是一个严格的距离度量。
JS 散度 (Jensen-Shannon Divergence)
JS散度为一种对称的衡量两个分布相似度的度量方式,可以视作对KL散度的改进,其定义为:
DJS(P∥Q)=21DKL(P∥2P+Q)+21DKL(Q∥2P+Q)
可见,JS散度满足对称性。同时,JS散度通过构造两个分布的插值,可以一定程度上缓解KL散度中两个分布不重叠时散度无穷大的问题。
交叉熵(Corss Entropy)
机器学习的损失函数的设计常用散度,以此度量模型预测的分布 和真实的分布之间的距离,判断模型是否有效收敛。信息论中的交叉熵概念在机器学习中常用于构建损失函数,以衡量模型分布和训练数据分布之间的差异性。交叉熵定义如下:
H(P,Q)=H(P)+DKL(P∥Q)=−i∑P(i)logQ(i)
例如,在分类问题中,当预测类别和真实类别的交叉熵不断减小时,说明模型可以更好地对输入进行分类。
参考
[1] ONTAÑÓN S. An overview of distance and similarity functions for structured data[J]. Artificial Intelligence Review, 2020, 53(7): 5309-5351.
[2] DEZA M M, DEZA E. Encyclopedia of distances[M]// Encyclopedia of distances. Springer, 2009: 1-583.
[3] KULIS B, et al. Metric learning: A survey[J]. Foundations and Trends® in Machine Learning, 2013, 5(4): 287-364.