本篇记录一下常用的数据距离度量方法,欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,马氏距离,兰氏距离。
最常用的距离,用于衡量欧式空间中两点间的距离,等同于两个同维向量之差的2-范数,也称为L2距离:
d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 = ∣ ∣ x − y ∣ ∣ 2 d(x, y) = \sqrt {\sum_{i=1}^{n}(x_i - y_i)^2} = ||x-y||_2 d(x,y)=i=1∑n(xi−yi)2 =∣∣x−y∣∣2
标准欧式距离是在存在大量样本点时,通过数据标准化后再计算欧式距离:
d ( x , y ) = ∑ i = 1 n ( ( x i − μ i ) − ( y i − μ i ) s i ) 2 d(x, y) = \sqrt {\sum_{i=1}^{n} (\frac {(x_i - \mu_i )- (y_i- \mu_i)}{s_i})^2} d(x,y)=i=1∑n(si(xi−μi)−(yi−μi))2
等同于两个同维向量之差的1-范数,也称为L1距离:
d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ = ∣ ∣ x − y ∣ ∣ 1 d(x, y) = \sum_{i=1}^{n}|x_i - y_i| = ||x-y||_1 d(x,y)=i=1∑n∣xi−yi∣=∣∣x−y∣∣1
等同于两个同维向量之差的p-范数:
d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ p p = ∣ ∣ x − y ∣ ∣ p d(x, y) = \sqrt [^p] {\sum_{i=1}^{n}|x_i - y_i|^p} {}= ||x-y||_p d(x,y)=pi=1∑n∣xi−yi∣p =∣∣x−y∣∣p
等同于两个同维向量之差的无穷范数:
d ( x , y ) = max ( ∣ x i − y i ∣ ) = ∣ ∣ x − y ∣ ∣ ∞ d(x, y) = \max({|x_i-y_i|})=||x-y||_\infin d(x,y)=max(∣xi−yi∣)=∣∣x−y∣∣∞
d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ ∣ x i ∣ + ∣ y i ∣ d(x, y) = \sum_{i=1}^{n}\frac{|x_i - y_i|}{|x_i| + |y_i|} d(x,y)=i=1∑n∣xi∣+∣yi∣∣xi−yi∣
如果向量之间的某些维度具有相关性,欧式距离并不会考虑这些相关性。比如 x 1 , x 3 x_1, x_3 x1,x3独立, x 2 = 2 x 1 x_2=2x_1 x2=2x1,点(2, 4, 1)
与(3, 6, 1)
更近还是(1.5, 3, 1)
更近呢?如果使用欧式距离,必然点(1.5, 3, 1)
更近,但考虑到第0, 1维的函数关系,实际上应当把第二维拿掉再计算欧式距离,这时两点距离是相同的。
马氏距离通过协方差矩阵的逆来衡量各维度之间的关系(两维的协方差),并且去除了各维度自身的尺度影响(维度的方差):
d ( x , y ) = ( x − y ) T Σ − 1 ( x − y ) d(x, y) = \sqrt {(x - y)^T \Sigma^{-1} (x-y)} d(x,y)=(x−y)TΣ−1(x−y)