机器学习算法 原理、实现与实践 —— 距离的度量
1. 欧氏距离
欧氏距离是最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点和之间的距离为:
1)二维平面上两点与间的欧氏距离:
2)三维空间两点与间的欧氏距离:
3)两个n维向量与
也可以用表示成向量运算的形式:
1)二维平面上两点与间的欧氏距离:
2)三维空间两点与间的欧氏距离:
3)两个n维向量与
也可以用表示成向量运算的形式:
n维平面上两点欧式距离,可以如下编写:
//unixfy:计算欧氏距离
double euclideanDistance(const vector<double>& v1, const vector<double>& v2)
{
assert(v1.size() == v2.size());
double ret = 0.0;
for (vector<double>::size_type i = 0; i != v1.size(); ++i)
{
ret += (v1[i] - v2[i]) * (v1[i] - v2[i]);
}
return sqrt(ret);
}
2. 曼哈顿距离
我们可以定义曼哈顿距离的正式意义为-距离或城市区块距离,也就是在欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。
例如在平面上,坐标的点与坐标的点的曼哈顿距离为:
要注意的是,曼哈顿距离依赖座标系统的转度,而非系统在座标轴上的平移或映射。
通俗来讲,想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。而实际驾驶距离就是这个“曼哈顿距离”,此即曼哈顿距离名称的来源, 同时,曼哈顿距离也称为城市街区距离(City Block distance)。
1)二维平面两点与间的曼哈顿距离
2)两个nn维向量与间的曼哈顿距离
2)两个nn维向量与间的曼哈顿距离
3. 切比雪夫距离
若二个向量或二个点p,qp,q,其座标分别为及,则两者之间的切比雪夫距离定义如下: