距离度量
目录
1、欧氏距离
1.1 原理
最常见的两点之间或多点之间的距离表示法,又称之为欧几里德 度量,它定义于欧几里得空间中。二维平面上两点a(x1,y1),b(x2,y2)之间的欧式距离公式:\(d_{ab} = \sqrt{(x_1-x_2)^2+(y_1-y_2)^2}\)同理,n维空间上两点a(x1,x2……..xn),b(y1,y2……..yn)的欧式距离公式:\(d_{ab} = \sqrt{(x_1-y_2)^2+(x_2-y_2)^2+…+(x_n-y_n)^2}\)也可以表示成向量运算的形式:\(d_{ab} = \sqrt{(\overrightarrow{a}-\overrightarrow{b})(\overrightarrow{a}-\overrightarrow{b})^T}\)
1.2 例子
计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X,'euclidean')
结果:
D = 1.0000 2.0000 2.2361
2、曼哈顿距离
2.1 原理
定义为L1-距离或城市区块距离,也就是在欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。二维平面上两点a(x1,x2),b(y1,y2)之间的曼哈顿距离公式:\(d_{ab} = \left|x_1-x_2 \right|+ \left|x_1-x_2 \right|\)同理,n维空间上两点a(x1,x2……..xn),b(y1,y2……..yn)的曼哈顿距离公式:\(d_{ab} = \left|x_1-x_2 \right|+ \left|x_1-x_2 \right|+…+\left|x_n-y_n \right|\)
2.2 例子
计算向量(0,0)、(1,0)、(0,2)两两间的曼哈顿距离
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'cityblock')
结果:
D = 1 2 3
3、切比雪夫距离
3.1 原理
各对应坐标数值差的最大值。若二个向量或二个点p 、q,其坐标分别为 及 ,则两者之间的切比雪夫距离定义如下:\({D_{Chebyshev}}\left( {p,q} \right): = \mathop {\max }\limits_i \left( {\left| {{p_i} - {q_i}} \right|} \right)\)这个公式的另一种等价形式是 \({d_{ab}} = \mathop {\lim }\limits_{k \to \infty } {\left( {\sum\limits_{i = 1}^n {{{\left| {{x_i} - {y_i}} \right|}^k}} } \right)^{1/k}}\)
3.2 例子
计算向量(0,0)、(1,0)、(0,2)两两间的切比雪夫距离
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'chebychev')
结果:D = 1 2 2
4、闵可夫斯基距离
4.1原理
闵氏距离不是一种距离,而是一组距离的定义。n维空间上两点a(x1,x2……..xn),b(y1,y2……..yn)的闵可夫斯基距离定义为:\(d_{ab}=\sqrt[n]{ \sum\limits_{k=1}^N \left|x_k-y_k\right|^p}\)其中p是一个变参数。当p=1时,就是曼哈顿距离当p=2时,就是欧氏距离当p→∞时,就是切比雪夫距离 根据变参数的不同,闵氏距离可以表示一类的距离。
4.2 例子
计算向量(0,0)、(1,0)、(0,2)两两间的闵氏距离(以变参数为2的欧氏距离为例)X = [0 0 ; 1 0 ; 0 2]D = pdist(X,'minkowski',2)结果:D = 1.0000 2.0000 2.2361
5、标准化欧氏距离
5.1原理
标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,那先将各个分量都“标准化”到均值、方差相等。样本集的标准化过程(standardization)用公式描述就是:\(X^*=\frac{X-m}{s}\)经过简单的推导就可以得到两个n维向量a(x1,x2……..xn)与 b(y1,y2……..yn)间的标准化欧氏距离的公式:\(d_{ab}=\sqrt{\sum\limits_{k=1}^{n}(\frac{{x_k}-{y_k}}{S_k})^2}\)
5.2例子
计算向量(0,0)、(1,0)、(0,2)两两间的标准化欧氏距离 (假设两个分量的标准差分别为0.5和1)
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'seuclidean',[0.5,1])
结果:D = 2.0000 2.0000 2.8284
6、马氏距离
6.1原理
有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到μ的马氏距离表示为:\(D(X)=\sqrt{(X-\mu)^TS^{-1}(X-\mu)}\)而其中向量Xi与Xj之间的马氏距离定义为:\(D(X_i,X_j)=\sqrt{(X_i-X_j)^TS^{-1}(X_i-X_j)}\)马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。
6.2例子
Matlab计算(1 2),(1 3),(2 2),(3 1)两两之间的马氏距离
X = [1 2; 1 3; 2 2; 3 1]
Y = pdist(X,'mahalanobis')
结果:Y = 2.3452 2.0000 2.3452 1.2247 2.4495 1.2247
7、巴氏距离
7.1原理
在统计中,巴氏距离测量两个离散或连续概率分布的相似性。它与衡量两个统计样品或种群之间的重叠量的巴氏系数密切相关。巴氏距离的定义:在同一定义域 X中,对于离散概率分布 p和q,它被定义为:\(D_B(p,q)=-ln(BC(p,q))\)其中\(BC(p,q)=\sum\limits_{x\in X}\sqrt{p(x)q(x)}\) 是巴氏系数。对于连续概率分布,巴氏系数被定义为:\((BC(p,q)= \int\sqrt{p(x)q(x)} dx\)两种情形中,\(0≤BC≤1,0≤DB≤\infty\)
8、汉明距离
巴氏距离DB均不满足三角不等式两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数,即两个字符串对应位置的不同字符的个数。如:1011101与 1001001 之间的汉明距离是2 2143896与 2233796 之间的汉明距离是3 irie与 rise之间的汉明距离是 3
9、夹角余弦
9.1原理
几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异,可以把两点看成是空间中的两个向量,通过衡量两向量之间的相似性来衡量样本之间的相似性。二维平面上两向量a(x1,y1),b(x2,y2)之间的夹角余弦公式:\(cos\theta =d_{ab}=\frac{x_1x_2+y_1y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}}\)
n维空间上两点a(x1,x2……..xn),b(y1,y2……..yn)的夹角余弦公式:\(cos\theta = \frac{\overrightarrow{a}\overrightarrow{b}}{\left|\overrightarrow{a}\right|\left|\overrightarrow{b}\right|}=\frac{\sum\limits_{k=1}^nx_k y_k}{\sqrt{\sum\limits_{k=1}^n x_k^2}\sqrt{\sum\limits_{k=1}^n y_k^2}}\)
夹角余弦取值范围为[-1,1]。
9.2例子:
计算(1,0)、( 1,1.732)、( -1,0)两两间的夹角余弦
X = [1 0 ; 1 1.732 ; -1 0]
D = 1- pdist(X, 'cosine') % Matlab中的pdist(X, 'cosine')得到的是1减夹角余弦的值
结果:
D = 0.5000 -1.0000 -0.5000