距离度量方法总结

距离度量方法
Minkowski Distance
Euclidean Distance
Manhattan Distance
Chebyshev Distance
Standardized Euclidean Distance
Mahalanobis Distance
Cosine Distance
Cosine Distance
Jaccard Distance
Correlation distance
Information Entropy

欧氏距离(EuclideanDistanceEuclidean Distance)

这是我们接触得最多得距离,平时说的“距离”几乎都指这个。

在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。使用这个距离,欧氏空间成为度量空间。相关联的范数称为欧几里得范数。较早的文献称之为毕达哥拉斯度量。

在欧几里得空间中,点X=(x1,x2,,xn)X=(x_1,x_2,\dots,x_n)Y=(y1,y2,,yn)Y=(y_1,y_2,\dots,y_n)之间的欧氏距离为:

d(X,Y)=(x1y1)2+(x2y2)2++(xnyn)2\begin{aligned}d(X,Y)=\sqrt{(x_1-y_1)^2+(x_2-y_2)^2+\dots+(x_n-y_n)^2}\end{aligned}

曼哈顿距离(ManhattanDistanceManhattan Distance)

曼哈顿距离也称出租车几何,是由十九世纪的赫尔曼·闵可夫斯基所创词汇,是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和。 顾名思义,在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。ML_距离度量方法总结

如下图:绿色的线是欧氏距离,其他的就是曼哈顿距离。
ML_距离度量方法总结

在欧几里得空间中,点X=(x1,x2,,xn)X=(x_1,x_2,\dots,x_n)Y=(y1,y2,,yn)Y=(y_1,y_2,\dots,y_n)之间的曼哈顿距离为:

d(X,Y)=x1y1+x2y2++xnyn\begin{aligned}d(X,Y)={|x_1-y_1|+|x_2-y_2|+\dots+|x_n-y_n|}\end{aligned}

切比雪夫距离 (ChebyshevDistanceChebyshev Distance)

这也称为棋盘距离,因为在下棋时,国王从棋盘上的一个正方形移到另一个正方形所需的最小移动次数等于正方形中心之间的切比雪夫距离。一个以二维空间坐标表示,其轴与电路板的边缘对齐。例如,f6和e2之间的切比雪夫距离等于4。
ML_距离度量方法总结
X=(x1,x2,,xn)X=(x_1,x_2,\dots,x_n)Y=(y1,y2,,yn)Y=(y_1,y_2,\dots,y_n)之间的,切比雪夫距离为:

d(X,Y)=maxi(xiyi)=limp(i=1nXiyip)1/p\begin{aligned}d(X,Y)=\max_i(|x_i-y_i|)=\lim_{p\to\infty}\left(\sum_{i=1}^n|X_i-y_i|^p\right)^{1/p}\end{aligned}

闵可夫斯基距离(MinkowskiDistanceMinkowski Distance)

闵氏距离又叫做闵可夫斯基距离,是欧氏空间中的一种测度,被看做是欧氏距离和曼哈顿距离的一种推广。闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表述。

在欧几里得空间中,点X=(x1,x2,,xn)X=(x_1,x_2,\dots,x_n)Y=(y1,y2,,yn)Y=(y_1,y_2,\dots,y_n)之间的,闵氏距离为:

d(X,Y)=(i=1nXiyip)1/p\begin{aligned}d(X,Y)=\left(\sum_{i=1}^n|X_i-y_i|^p\right)^{1/p}\end{aligned}

p取1或2时的闵氏距离是最为常用的
p=2p=2即为欧氏距离
p=1p=1时则为曼哈顿距离
pp取无穷时的极限情况下,可以得到切比雪夫距离:
ML_距离度量方法总结

缺点:

  • 将各个分量的量纲(scale),也就是“单位”相同的看待;
  • 未考虑各个分量的分布(期望,方差等)可能是不同的。
  • 详情可见数据预处理

先举个比较常用的例子,身高和体重,这两个变量拥有不同的单位标准,也就是有不同的scale。比如身高用毫米计算,而体重用千克计算,显然差10mm的身高与差10kg的体重是完全不同的。但在普通的欧氏距离中,这将会算作相同的差距。

标准化欧氏距离 (StandardizedEuclideanDistanceStandardized Euclidean Distance)

标准化欧氏距离是针对欧氏距离的缺点而作的一种改进。标准欧氏距离的思路:既然数据各维分量的分布不一样,那先将各个分量都“标准化”到均值、方差相等。

假设样本集XX的均值(mean)为mm,标准差(standard deviation)为stdstdXX的“标准化变量”表示为:

X=XmstdX^*=\frac{X-m}{std}

标准化欧氏距离:

d=k=1n(x1kx2ksk)2\begin{aligned}d = \sqrt{ \sum \limits_{k=1}^{n} ( \frac{x_{1k} - x_{2k}}{s_{k}} )^{2} }\end{aligned}

如果将方差的倒数看成一个权重,也可称之为加权欧氏距离(WeightedEuclideandistanceWeighted Euclidean distance)。

马氏距离(MahalanobisDistanceMahalanobis Distance)

马氏距离(Mahalanobis Distance)是度量学习中一种常用的距离指标,同欧氏距离、曼哈顿距离、汉明距离等一样被用作评定数据之间的相似度指标。但却可以应对高维线性分布的数据中各维度间非独立同分布的问题

单个数据点的马氏距离:

dM(x)=(xμ)T1(xμ)\begin{aligned}d_M(x)=\sqrt{(x-\mu)^T\sum^{-1}(x-\mu)}\end{aligned}

数据点x,yx,y之间的马氏距离:

dM(x,y)=(xy)T1(xy)\begin{aligned}d_M(x,y)=\sqrt{(x-y)^T\sum^{-1}(x-y)}\end{aligned}

详情可见:
马氏距离
深入了解马氏距离
度量学习中的马氏距离

上面我们讲了由于量纲的问题会先出现相似估计的偏差,当然标准化的欧氏距离解决了这个问题。
但是样本分布也会影响分类。

举个一维的栗子,现在有两个类别,统一单位,第一个类别均值为0,方差为0.1,第二个类别均值为5,方差为5。那么一个值为2的点属于第一类的概率大还是第二类的概率大?距离上说应该是第一类,但是直觉上显然是第二类,因为第一类不太可能到达2这个位置。
所以,在一个方差较小的维度下很小的差别就有可能成为离群点。就像下图一样,A与B相对于原点的距离是相同的。但是由于样本总体沿着横轴分布,所以B点更有可能是这个样本中的点,而A则更有可能是离群点。

ML_距离度量方法总结

还有一个问题——如果维度间不独立同分布,样本点一定与欧氏距离近的样本点同类的概率更大吗?
ML_距离度量方法总结

可以看到样本基本服从f(x) = x的线性分布,A与B相对于原点的距离依旧相等,显然A更像是一个离群点

即使数据已经经过了标准化,也不会改变AB与原点间距离大小的相互关系。所以要本质上解决这个问题,就要针对主成分分析中的主成分来进行标准化。

马氏距离的特点:

  • 量纲无关,排除变量之间的相关性的干扰;
  • 马氏距离的计算是建立在总体样本的基础上的,如果拿同样的两个样本,放入两个不同的总体中,最后
  • 计算得出的两个样本间的马氏距离通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;
  • 计算马氏距离过程中,要求总体样本数大于样本的维数,否则得到的总体样本协方差矩阵逆矩阵不存在,这种情况下,用欧式距离计算即可。

余弦距离(CosineDistanceCosine Distance)

几何中,夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。

两点X=(x1,x2,,xn)X=(x_1,x_2,\dots,x_n)Y=(y1,y2,,yn)Y=(y_1,y_2,\dots,y_n)之间的余弦距离:

cosθ=XYXY\begin{aligned}cos\theta=\frac{X·Y}{|X||Y|}\end{aligned}

cosθ=k=1nx1kx2kk=1nx1k2k=1nx2k2\begin{aligned}cos\theta=\frac{\sum^n_{k=1}x_{1k}x_{2k}}{\sqrt{\sum^n_{k=1}x_{1k}^2}\sqrt{\sum^n_{k=1}x_{2k}^2}}\end{aligned}

夹角余弦取值范围为[1,1][-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。当两个向量的方向重合时余弦取最大值1,当两个向量的方向完全相反余弦取最小值-1。

汉明距离(HammingDistanceHamming Distance)

在信息论中,两个等长字符串之间的汉明距离(英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。

例如:

  • 10111011001001之间的汉明距离是2。
  • 21438962233796之间的汉明距离是3。
  • "toned"与"roses"之间的汉明距离是3。

对于二进制串a和b来说,汉明距离等于aXORb中1的数目,我们又称其为汉明权重,也叫做population count或popcount。长度为n的二进制字符串通过汉明距离构成了一个度量空间(metric space),我们称其为汉明立方(Hamming Cube)。

下图表示在hypercube中 0100→1001 (红色)的汉明距离是 3; 0110→1110 (蓝色)的汉明距离是 1
ML_距离度量方法总结

杰卡德距离(JaccardDistanceJaccard Distance)

杰卡德相似系数(Jaccard similarity coefficient):两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)J(A,B)表示:

J(A,B)=ABAB\begin{aligned}J(A,B)=\frac{|A\cap B|}{|A\cup B|}\end{aligned}

杰卡德距离(Jaccard Distance):与杰卡德相似系数相反,用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度:

Jδ(A,B)=1J(A,B)=ABABAB\begin{aligned}J_\delta(A,B)=1-J(A,B)=\frac{|A\cup B|-|A\cap B|}{|A\cup B|}\end{aligned}

相关距离(CorrelationDistanceCorrelation Distance)

相关系数:是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关):

ρXY=Cov(X,Y)D(X)D(Y)\rho_{XY}=\frac{Cov(X,Y)}{\sqrt{D(X)D(Y)}}

相关距离:

DXY=1ρXYD_{XY}=1-\rho_{XY}

信息熵(InformationEntropyInformation Entropy)

熵(entropy)这个概念最早起源于物理学,在物理学中是用来度量一个热力学系统的无序程度,而在信息学里面,熵是对不确定性的度量。在1948年,香农引入了信息熵(Information entropy),将其定义为离散随机事件出现的概率,一个系统越是有序,信息熵就越低,反之一个系统越是混乱,它的信息熵就越高。所以信息熵可以被认为是系统有序化程度的一个度量。

详情可见信息熵——ID3决策树

假如一个随机变量XX的取值为X=(x1,x2,...,xn)X=(x_1,x_2,...,x_n),每一种取到的概率分别是(p1,p2,...,pn)(p_1,p_2,...,p_n),那么XX的熵定义为

E(X)=i=1npilog2pi2bitenatE(X)=-\sum_{i=1}^np_ilog_2p_i(当对数的底为2时,熵的单位为bit;为e时,单位为nat。 )

同理对于连续随机变量Y,其熵可定义为

E(Y)=+f(y)log2f(y)dyE(Y)=-\int_{-\infty}^{+\infty}f(y)log_2f(y)dy

当给定随机变量XX的条件下随机变量YY的熵可定义为条件熵H(YX)H(Y|X):

E(YX)=i=1npiE(YX=xi)E(Y|X)=-\sum_{i=1}^np_iE(Y| X=x_i)

意思是一个变量的变化情况可能越多,那么它携带的信息量就越大。

相关文章:

  • 2021-04-12
  • 2021-06-28
  • 2021-09-25
  • 2022-12-23
  • 2022-12-23
  • 2021-12-24
猜你喜欢
  • 2021-08-05
  • 2022-12-23
  • 2021-10-06
  • 2022-12-23
  • 2022-01-25
  • 2021-10-06
  • 2021-09-24
相关资源
相似解决方案