基于距离的计算方法 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= [00;10;0 2] D= pdist(X,'euclidean') 结果: D= 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= [00;10;0 2] D= pdist(X, 'cityblock') 结果: D=123 5. 标准化欧氏距离(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) 两两间的标准化欧氏距离(假设两个分量的标准差分别为 和 1) X= [00;10;0 2] D= pdist(X, 'seuclidean',[,1])
相似度计算方法 来自淘豆网m.daumloan.com转载请标明出处.