数学中有很多不同种类的距离,常用于几何、高等代数等数学研究。
多种多样的距离在数学建模、计算机学习中有着不小的应用。
比如,A*搜索时的评估函数。
比如,在机器学习中,做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的距离。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。
欧氏距离(Euclidean Distance)
欧氏距离是最易于理解的一种距离计算方法,源自欧几里得几何中两点间的距离公式。
(1)二维平面上两点 a(x1,y1) 与 b(x2,y2) 间的欧氏距离:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/0b51314b1f54ad4a8b5e4c5643a59514.png)
(2)两个n维向量 a(x11,x12,…,x1n) 与 b(x21,x22,…,x2n) 间的欧氏距离:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/24c2907ea9f8df322677a2ba67b53b6c.png)
也可以用表示成向量运算的形式:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/6485075ebc86923b98c76b092612d3d5.png)
(4)Matlab计算欧氏距离
Matlab计算距离主要使用pdist函数。若 X 是一个
例子:计算向量 (0,0)、(1,0)、(0,2) 两两间的欧式距离
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X,'euclidean') %大家可以去查一查pdist的参数
结果:
D =
1.0000 2.0000 2.2361
曼哈顿距离(Manhattan Distance)
从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)。
(1)二维平面两点 a(x1,y1) 与 b(x2,y2) 间的曼哈顿距离
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/8442bb1348f289418dc8937985efa68c.png)
(2)两个n维向量 a(x11,x12,…,