在一元的情形中,定义两个点
和
之间的距离:
-
两者作差的绝对值
,我们称为
欧式距离
。
-
经过标准化的作差绝对值
,我们称为
统计距离
,或者
标准化过后的距离
。其中,
代表样本的标准差。
在多元的情形中,假设我们有两个
维向量
和
如上面的定义,
和
相当于
维空间中的两个点。我们也有两种方法定义两个点之间的距离。
一、欧式距离(Euclidean distance)/
范数
欧式距离的计算公式如下:
直观的理解即为:
每个分量之间的差异的平方和,再开根号。
1、没有考虑到不同变量(维度)变化的尺度不同。
例如,
代表的是长度,用“厘米”作为度量单位和用“米”作为度量单位,算出来的两者的差别非常大。他们其实是一样的数值,只是因为单位的不同,造成欧式距离计算的结果产生极大的变化。
2、没有考虑变量之间的相关性。
如果两个变量(维度)之间的相关性非常强,欧式距离无法体现相关性。
二、马氏距离/统计距离(Statistical/Mahalanobis distance)
类似于一元情形
,我们定义
和
之间的马氏距离/统计距离为:
借助于一元情形的标准化思想,我们求解距离的时候增加了一个
和
他们的协方差矩阵的逆,
使得方差更大的变量(维度)对应了更小的权重,而且两个高度相关的变量(维度)对统计距离的贡献小于两个相关性相对较低的变量的贡献。
三、马氏距离和欧式距离的关系
统计距离实际上是两个经过“变换”的向量
和
之间的欧式距离。
,其中
为
的协方差矩阵,即
。
将
代入上式,可得
,
代表一个
维的单位阵。
也就是说,随机向量
通过乘上矩阵
,得到一个新的随机向量,它的方差,每个维度的方差都是1,是标准化的。它的每两个变量之间的协方差为0。从几何的意义上来讲,相当于对向量做了一个“旋转”和“伸缩变换”,通过变换之后的向量,每个分量之间的协方差为0,每个分量自身的方差标准化为1。
我们来计算标准化之后的向量之间的欧式距离。
结论:
马氏距离即是我们将向量“标准化”过后的欧式距离,如何标准化,即乘上向量其自身的协防差矩阵的逆的矩阵根。
四、几何理解
左下方的图,比较中间那个绿色的和另外一个绿色的距离,以及中间绿色到蓝色的距离。如果不考虑数据的分布,就是直接计算欧式距离,那就是蓝色距离更近(左上图)。但实际上需要考虑各分量的分布的,直观上我们能看出,数据是呈椭圆形分布。蓝色的在椭圆外,绿色的在椭圆内,因此绿色的实际上更近(右上图)。求马氏距离的过程,实际上就是把左下角的图变成了右下角。
在一元的情形中,定义两个点和之间的距离:两者作差的绝对值,我们称为欧式距离。 经过标准化的作差绝对值,我们称为统计距离,或者标准化过后的距离。其中,代表样本的标准差。在多元的情形中,假设我们有两个维向量和如上面的定义,和相当于维空间中的两个点。我们也有两种方法定义两个点之间的距离。一、欧式距离(Euclidean distance)/范数欧式距离的计算公式如下:直观的理解即为:每个分量之间的差异的平方和,再开根号。缺陷:1、没有考虑到不同变量(维度)变化的尺度不同。例
最近在研究BM3D算法,常用的是
欧式距离
,但是
欧式距离
缺点较多,查阅资料后,找到了
马氏距离
,因此,转载记录此篇,便于之后的学习。
欧氏距离(Euclidean distance)也称欧几里得度量、欧几里得度量,是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。在二维和三维空间中的欧氏距离的就是两点之间的距离。
缺点:就大部分统计问题而言,欧氏距离是不能令人满意的。(每个坐标对欧氏距离的贡献是同等的。当坐标表示测量值时,它们往往带有大小不等的随机波动,在这种情况下,合理的方法是对坐标加权,使变化
代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于
马氏距离
剔除异常样本代码代码 基于马氏
为什么要讨论这两个距离之间的
区别
?
因为,距离函数的选择对数据挖掘算法的效果具有很大的影响,使用错误的距离函数对挖掘过程非常有害。有时候,语义非常相似的对象被认为不相似,而语义不相似的对象却被认为是相似的,这都是因为距离函数选择不佳导致的。这篇文章就是想告诉大家
欧式距离
不是万能的,距离函数的选择应该随应用场景而定。
设有两个n维数据点X=(x1,x2,...,xn)TX=(x_1,x_2,...,x_n)^TX=(x1,x2,...,xn)T和Y=(y1,y2,...,yn)TY=(y
马氏距离
(Mahalanobis Distance)是度量学习中一种常用的距离指标,同欧氏距离、曼哈顿距离、汉明距离等一样被用作评定数据之间的相似度指标。但却可以应对高维线性分布的数据中各维度间非独立同分布的问题。
什么是
马氏距离
马氏距离
(Mahalanobis Distance)是一种距离的度量,可以看作是欧氏距离的一种修正,修正了
欧式距离
中各个维度尺度不一致且相关的问题。
单个数据点的
马氏距离
数据点x, y之间的
马氏距离
其中Σ是多维随机变量的协方差矩阵,μ为样本均值,如果协方差矩阵是单位向量,
By:Yang Liu
1.欧氏距离
在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离。欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
计算公式:D(X,Y)=(X1−Y1)2+(X2−Y2)2...+(Xn−1−Yn−1)2+(Xn−Yn)2D(X,Y) = \sqrt {{{(
#数据准备
x1<-c(3,3,2,3,3,3,3,3,2,2,1,3,2,1,2,2,2,3,3,2,2,2,2,2)
x2<-c(28,45,55,55,50,70,75,80,50,35,40,50,35,50,40,45,25,40,50,70,70,45,25,25)
x3<-c(2,2,3,3,2,3,3,3,3,1,2,2,2,2,2,2,1,2,3,3,3,2,1,1)
x4<-c(10.4,22,16,14.5,17.5,16.7,12.7,20.2,13.5,18.2,25,15.4,26,22.5,16.5,
16.4,30,17
1. 闵氏距离(Minkowski Distance)
闵氏距离又叫做闵可夫斯基距离,是欧氏空间中的一种测度,被看做是欧氏距离的一种推广,欧氏距离是闵可夫斯基距离的一种特殊情况。定义式:
二者的比较
马氏距离
的计算是建立在总体样本的基础上的,这一点可以从协方差矩阵的解释中可以得出,也就是说,如果拿同样的两个样本,放入两个不同的总体中,最后计算得出的两个样本间的
马氏距离
通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;
在计算
马氏距离
过程中,要求总体样本数大于样本的维数,否则得到的总体样本协方差矩阵逆矩阵不存在,这种情况下,用欧氏距离计算即可;
还有一种情况...
好的,我可以回答这个问题。
马氏距离
是一种考虑数据协方差的距离度量方式,可以用来衡量两个随机向量之间的距离。相比
欧式距离
,
马氏距离
更适用于具有相关性的数据。要将上面代码中的
欧式距离
计算改写为
马氏距离
计算,需要先计算数据的协方差矩阵,然后使用以下公式计算
马氏距离
:
D(x,y) = [(x-y)T S^-1 (x-y)]^.5
其中,x和y分别表示两个向量,S表示协方差矩阵,T表示转置。