相似性度量—范数

  向量的相似性度量时常常采用计算距离的方式进行,以下是对各种距离计算公式的汇总及pyhton实现。

  在介绍距离公式之前首先引入范数的概念。
  范数(百度百科):向量的范数可以简单、形象的理解为向量的长度,或者向量到坐标系原点的距离,或者相应空间内的两点之间的距离。

  向量的范数定义:向量的范数是一个函数 x 满足非负性 x0 ,齐次性 cx=|c|x ,三脚不等式 x+yxy

  L1范数: x x向量各元素绝对值之和。
  L2范数: x x向量各元素平方和的开方。L2范数又称Euclifean范数或者Frobenius范数。
  Lp范数: x x向量各元素绝对值p次方之和的1/p次方。
  L 范数: x x向量各元素绝对值最大的那个元素,如下所示。

limk(i=1npiqi|k)1/k

  接下来介绍几种距离的计算及其python实现。几种距离公式为:


- 闵可夫斯基距离
- 欧式距离
- 曼哈顿距离
- 切比雪夫距离
- 夹角余弦
- 汉明距离
- 杰卡德相似系数

1.闵可夫斯基距离(Minkowski Distance)
  严格意义上讲,闵可夫斯基距离不是一种距离,而是一组距离。
  两个n维变量 A(x11,x12,...,x1n) B(x21,x22,...,x2n) 之间的闵可夫斯基距离定义为:

d12=pk=1n(x1kx2k)p
其中p是一个可变参数。
- 当 p=1 时,就是曼哈顿距离。
- 当 p=2 时,就是欧式距离。
- 当 p 时,就是曼哈顿距离。

2.欧式距离(Euclidean Distance)
  欧式距离(L2范数)是最易于理解的一种距离计算方法,源自欧式空间中两点间的距离公式。
  (1)二维平面上两点 a(x1,y1) b(x2,y2) 之间的欧式距离:

d12=(x1y1)2+(x2y2)2
  (2)二维平面上两点 A(x1,y1,z1) B(x2,y2,z2) 之间的欧式距离:
d12=(x1x2)2+(y2y2)2+(z2z2)2
  (3)两个n维变量 A(x11,x12,...,x1n) B(x21,x22,...,x2n) 之间的欧式距离:
d12=k=1n(x1kx2k)2
  表示位向量运算的形式为:
d12=(AB)(AB)T

  (4)python实现欧式距离

 - from numpy import * 
 - vector1 = mat([1, 2, 3])  
 - vector2 = mat([4, 5, 6])  
 - print sqrt((vector1 - vector2) * (vector1 - vector2).T)

  剩下的在接下来的一个博客中介绍。详情点击

猜你喜欢

转载自blog.csdn.net/xdguangguang/article/details/78703467