在机器学习常见的算法中,很多都需要使用距离表示相似性,常用的距离计算方式有以下几种:
1、欧式距离
欧式距离是最常见的两点之间或多点之间的距离表示方式,又称为欧几里得度量。计算的表达式如下:
2、曼哈顿距离
曼哈顿距离可以看作不同维度之间的累加和:
例如:在二维平面内,两个点(x1,y1)和(x2,y2)之间的曼哈顿距离是:
在n维空间中,两个点(x11,x12,...,x1n)和(x21,x22,...,x2n)之间的曼哈顿距离是:
3、切比雪夫距离
在n维空间中,两个点(x11,x12,...,x1n)和(x21,x22,...,x2n)之间的切比雪夫距离是:
4、闵可夫斯基距离
闵可夫斯基距离不是一种距离,而是一组距离。如下:
在n维空间中,两个点(x11,x12,...,x1n)和(x21,x22,...,x2n)之间的闵可夫斯基距离是:
从上面这个式子可以看出:
当p=1的时候,就是曼哈顿距离;
当p=2的时候就是欧式距离;
当p-->无穷的时候,就是切比雪夫距离
5、马氏距离
有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:
而其中向量Xi与Xj之间的马氏距离定义为:
若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:
6、巴氏距离
7、汉明距离
汉明距离表示在信息编码过程中对两个等长字符串s1和s2,要使s1变成s2的最少需要改变多少位的数据。例如:s1=1111 ,s2=1011,此时汉明距离为1.
8、标准化欧式距离
标准化欧式距离是在欧式距离的基础上做的一点改进和优化。在欧式距离的计算过程中,没有把每一个分量都标准化之后再计算。在标准化欧式距离中,先把各个分量都标准化为均值和方差相等。
假设样本集X的数学期望或均值为m,标准差为s,那么X的“标准化变量”X*表示为:(X-m)/s,而且标准化变量的数学期望为0,方差为1。
即,样本集的标准化过程(standardization)用公式描述就是:
标准化后的值 = (标准化前的值 - 分量的均值)/分量的标准差
经过简单的推导就可以得到两个n维向量(x11,x12,…,x1n)与 (x21,x22,…,x2n)间的标准化欧氏距离的公式:
参考文献:
从K近邻算法、距离度量谈到KD树、SIFT+BBF算法。点击打开链接