本文转载自微信公众号「活在信息时代」,作者活在信息时代。转载本文请联系活在信息时代公众号。
在机器学习中,一个基础的概念就是如何判断两个样本之间的差异,从而能够评价两个样本之间的相似性和类别等信息。而判断这种相似性的度量就是两个样本在特征空间内的距离。
根据数据特征的不同,度量方法有很多种。一般而言,对两个数据样本x,y,定义一个函数d(x,y),如果定义其为两个样本之间的距离,那么d(x,y)则需要满足以下几条基本性质:
通常来讲,常见的距离度量包括:点在空间中的距离、字符串间的距离、集合的相似度、变量/概念分布间的距离四种。
今天我们首先来介绍一下最为常用的点在空间中的距离。
点在空间中的距离包括以下几种:
1、欧几里得距离(Ecllidean Distance)
毫无疑问,欧氏距离是人们最熟悉的距离,它即是两点之间的直线距离。学过初中数学的同学都知道在笛卡尔坐标系中如何计算二维空间两个点之间的距离
其计算公式为:
推广到N维空间的欧氏距离即为:
2、曼哈顿距离(Manhattan Distance)
曼哈顿距离又称为出租车距离,其概念来源于纽约曼哈顿区这样有很多横平竖直的街区,在这种街区中,出租车司机如果想从一个点走到另一个点的话,计算直线距离是没有用的,因为出租车不可能从建筑物上飞过去。因此,这种距离通常是将两个点的东西向、南北向距离分别相减再相加,这也就是出租车实际要经过的距离。
如图所示,红线和黄线就是两种不同路径的曼哈顿距离。数学上,二维空间的曼哈顿距离计算方法如下:
3、切比雪夫距离(Chebyshev Distance)
切比雪夫距离定义为两个点之间各坐标数值差的最大值。
其最直观的例子即是国际象棋中的国王,因为它可以横走直走斜走,但是每次都只能走一格,所以切比雪夫距离就是他要走到另一个格子所需要的最小距离。
4、闵可夫斯基距离(Minkowski Distance)
闵氏距离本身不是一个特别的距离,而是将多个距离(曼哈顿距离、欧氏距离、切比雪夫距离)合并成为的一个公式。
其定义为,对于两个n维变量,闵氏距离为:
当p=1时,可以看到
此时为曼哈顿距离。
当p=2时,可以看到
此时即为欧氏距离。
当p=∞时,可以看到
此时即为切比雪夫距离。
5、标准化的欧几里得距离(Standardized Euclidean Distance)
欧氏距离可以测量两个点之间的直线距离,但是在某些情况下,可能会受到单位不同的影响。例如同时是差5,差5毫米的身高和差5公斤的体重,观感可能是完全不同的。如果我们想对三个模特进行聚类,她们各自的属性如下:
A:65000000毫克(即65公斤),1.74米
B:60000000毫克(即60公斤),1.70米
C:65000000毫克(即65公斤),1.40米
按我们正常的理解,A和B是身材比较好的模特,应该归到一类。但是以上述单位实际计算的时候,却发现A和B的差异大于A和C之间的差异。原因在于属性计量单位的不同导致数值差异过大。同样的数据如果换个单位。
A:65千克,174厘米
B:60千克,170厘米
C:65千克,140厘米
那么就会得到我们想到的结果,将A和B归为一类了。因此,为避免出现这种由于计量单位的不同而出现的差异,我们就需要引入标准化欧氏距离。在这种距离计算中,会将各个分量都标准化到均值、方差相等的区间。
假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为:
其中,标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差。经过简单的推导就可以得到两个n维向量间的标准化欧氏距离公式为:
如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。通过这种操作,我们就有效的消除了不同计重单位之间的差异。
6、兰氏距离(Lance and Willianms Distance)
兰氏距离又称为堪培拉距离,
它是一个无量纲的指标,克服了闵氏距离与各指标的量纲有关的缺点,并且对于较大的奇异值不敏感,特别适合调度偏倚的数据。但是这种距离也没有考虑到变量间的相关性。所以如果需要考虑变量之间的相关性的话,还是需要马氏距离。
7、马氏距离(Mahalanobis Distance)
对数值进行标准化之后,就一定不会出问题吗?也不一定。例如在一个一维的例子中,如果有两个类,一个类均值为0,方差为0.1,而另一个类均值为5,方差为5。那么如果一个值为2的点应该属于哪一类呢?我们直觉上认为它肯定是第二类,因为第一类显然不太可能在数值上达到2。但是实际上从距离上计算的话2这个数就得属于第一类。
所以,在一个方差较小的维度下,很小的差别就可能成为离群点。例如说下图,A与B相对于原点的距离是相同的,但是由于样本整体沿着横轴分布,所以B点更有可能是样本中的点,而A点则更有可能是离群点。
而在维度间不独立同分布的情况下,也会出现问题,例如说下图中的A点与B点到原点的距离相等,但是主要分布类似于f(x)=x,所以A更像是一个离群点。
因此,我们可以看到,在这种情况下,标准化的欧氏距离也会有问题,所以我们需要引入马氏距离。
马氏距离将变量按照主成分进行旋转,让维度间相互独立,然后再进行标准化,让维度同分布。而主成分即为特征向量方向,所以只需要按照特征向量的方向进行旋转,然后缩放特征值倍就可以了。例如上图变换之后会得到下面的结果:
可以看出离群点被成功分离了。
马氏距离是由印度数学家马哈拉诺比斯提出的,表示数据的协方差距离。它是一种有效地计算两个未知样本集的相似度的方法。
对于一个均值为
,协方差矩阵为Σ的多变量矢量
,其马氏距离(单个数据点的马氏距离)为:
对于两个服从同一分布并且其协方差矩阵为Σ的随机变量X与Y的差异程度,数据点x, y之间的马氏距离为:
如果协方差矩阵为单位矩阵,那么马氏距离就简化成了欧氏距离。如果协方差矩阵为对角阵,那么马氏距离就变成了标准化的欧氏距离。
8、余弦距离(Cosine Distance)
顾名思义,余弦距离来源于几何中的夹角余弦,它可用来衡量两个向量方向的差异,而非距离或长度上。当余弦值为0时,两向量正交,夹角为90度。夹角越小,余弦值越接近于1,方向更趋同。
在N维空间中,余弦距离为:
值得指出的是,余弦距离不满足三角不等式。
9、测地距离(Geodesic Distance)
测地距离最初是指球体表面之间的最短距离。当特征空间为平面时,测地距离即为欧氏距离。在非欧几何中,球面上两点间距离最短的线是连接这两点的大圆弧,在球面上的三角形、多边形的边也是由这些大圆弧组成的。
10、布雷柯蒂斯距离(Bray Curtis Distance)
布雷柯蒂斯距离主要用于植物学、生态学和环境科学,它可以用来计算样本之间的差异。其公式为:
其取值在[0, 1]之间,如果两个向量坐标都为0的话,那么值就无意义。
以上是机器学习基础之数字上的距离:点在空间中的距离的详细内容。更多信息请关注PHP中文网其他相关文章!