向量距离与范数

Do you know the definition of the Euclidean distance?

G = rand(1, 72);
G2 = rand(1, 72);
D = sqrt(sum((G - G2) .^ 2));
A more efficient method, but this matters only for much larger vectors:

V = G - G2;
D = sqrt(V * V’);
Or a Matlab command:

D = norm(G - G2);
A good ide is to search in the documentation before asking in MATLAB Answers:

docsearch euclidean

  1. 欧氏距离(Euclidean Distance)
    欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。
    (1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:
    基于距离的计算方法
    (2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离:
    基于距离的计算方法
    (3)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离:
    基于距离的计算方法
      也可以用表示成向量运算的形式:
    基于距离的计算方法
    (4)Matlab计算欧氏距离
    Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。
    例子:计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离
    X = [0 0 ; 1 0 ; 0 2]
    D = pdist(X,’euclidean’)
    结果:
    D =
    1.0000 2.0000 2.2361

  2. 曼哈顿距离(Manhattan Distance)
    从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)。
    (1)二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离
    基于距离的计算方法
    (2)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离
    基于距离的计算方法
    (3) Matlab计算曼哈顿距离
    例子:计算向量(0,0)、(1,0)、(0,2)两两间的曼哈顿距离
    X = [0 0 ; 1 0 ; 0 2]
    D = pdist(X, ‘cityblock’)
    结果:
    D =
    1 2 3

  3. 标准化欧氏距离(Standardized Euclidean distance )
    (1)标准欧氏距离的定义
      标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,好吧!那我先将各个分量都“标准化”到均值、方差相等吧。均值和方差标准化到多少呢?这里先复习点统计学知识吧,假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为:
      而且标准化变量的数学期望为0,方差为1。因此样本集的标准化过程(standardization)用公式描述就是:
    基于距离的计算方法
      标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差
      经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式:
    基于距离的计算方法
      如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。
    (2)Matlab计算标准化欧氏距离
    例子:计算向量(0,0)、(1,0)、(0,2)两两间的标准化欧氏距离 (假设两个分量的标准差分别为0.5和1)
    X = [0 0 ; 1 0 ; 0 2]
    D = pdist(X, ‘seuclidean’,[0.5,1])
    结果:
    D =
    2.0000 2.0000 2.8284
  4. 夹角余弦(Cosine)
    有没有搞错,又不是学几何,怎么扯到夹角余弦了?各位看官稍安勿躁。几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
    (1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:
    基于距离的计算方法
    (2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦
    类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。
    基于距离的计算方法
      即:
    基于距离的计算方法
    夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
    夹角余弦的具体应用可以参阅参考文献[1]。
    (3)Matlab计算夹角余弦
    例子:计算(1,0)、( 1,1.732)、( -1,0)两两间的夹角余弦
    X = [1 0 ; 1 1.732 ; -1 0]
    D = 1- pdist(X, ‘cosine’) % Matlab中的pdist(X, ‘cosine’)得到的是1减夹角余弦的值
    结果:
    D = 0.5000 -1.0000 -0.5000

本文转自:百度文库http://wenku.baidu.com/view/ebde5d0e763231126edb1113.html

1 范数
向量的范数可以简单形象的理解为向量的长度,或者向量到零点的距离,或者相应的两个点之间的距离。

向量的范数定义:向量的范数是一个函数||x||,满足非负性||x|| >= 0,齐次性||cx|| = |c| ||x|| ,三角不等式||x+y|| <= ||x|| + ||y||。

常用的向量的范数:
L1范数: ||x|| 为x向量各个元素绝对值之和。
L2范数: ||x||为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或者Frobenius范数
Lp范数: ||x||为x向量各个元素绝对值p次方和的1/p次方
L∞范数: ||x||为x向量各个元素绝对值最大那个元素的绝对值,如下:

椭球向量范数: ||x||A = sqrt[T(x)Ax], T(x)代表x的转置。定义矩阵C 为M个模式向量的协方差矩阵, 设C’是其逆矩阵,则Mahalanobis距离定义为||x||C’ = sqrt[T(x)C’x], 这是一个关于C’的椭球向量范数。

2 距离
欧式距离(对应L2范数):最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中。n维空间中两个点x1(x11,x12,…,x1n)与 x2(x21,x22,…,x2n)间的欧氏距离:

也可以用表示成向量运算的形式:

曼哈顿距离:曼哈顿距离对应L1-范数,也就是在欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。例如在平面上,坐标(x1, y1)的点P1与坐标(x2, y2)的点P2的曼哈顿距离为:,要注意的是,曼哈顿距离依赖座标系统的转度,而非系统在座标轴上的平移或映射。

切比雪夫距离,若二个向量或二个点x1和x2,其坐标分别为(x11, x12, x13, … , x1n)和(x21, x22, x23, … , x2n),则二者的切比雪夫距离为:d = max(|x1i - x2i|),i从1到n。对应L∞范数。

闵可夫斯基距离(Minkowski Distance),闵氏距离不是一种距离,而是一组距离的定义。对应Lp范数,p为参数。

闵氏距离的定义:两个n维变量(或者两个n维空间点)x1(x11,x12,…,x1n)与 x2(x21,x22,…,x2n)间的闵可夫斯基距离定义为:

其中p是一个变参数。

当p=1时,就是曼哈顿距离,

当p=2时,就是欧氏距离,

当p→∞时,就是切比雪夫距离,

根据变参数的不同,闵氏距离可以表示一类的距离。

Mahalanobis距离:也称作马氏距离。在近邻分类法中,常采用欧式距离和马氏距离。

参考资料:

http://blog.csdn.net/v_july_v/article/details/8203674

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值