相似度 / 距离计算

  • Ref: 《统计学习方法》

目录

L p L_p Lp​ 距离 ( L p L_p Lp​ distance) / Minkowski 距离 (Minkowski distance)

相似度 / 距离计算

  • 当 p = 2 p=2 p=2 时,称为欧氏距离 (Euclidean distance)
    相似度 / 距离计算
  • 当 p = 1 p=1 p=1 时,称为曼哈顿距离 (Manhattan distance)
    相似度 / 距离计算
  • 当 p = ∞ p= ∞ p=∞ 时,称为切比雪夫距离 (Chebyshev distance),它是各个坐标距离的最大值,即
    相似度 / 距离计算

马氏距离 / 马哈拉诺比斯距离 (Mahalanobis Distance)


  • 马氏距离是度量学习中一种常用的距离指标,同欧氏距离、曼哈顿距离、汉明距离等一样被用作评定数据之间的相似度指标。但却可以应对高维线性分布的数据中各维度间非独立同分布的问题

马氏距离

  • 单个数据点的马氏距离
    D M ( x ) = ( x − μ ) T Σ − 1 ( x − μ ) D_{M}(x)=\sqrt{(x-\mu)^{T} \Sigma^{-1}(x-\mu)} DM​(x)=(x−μ)TΣ−1(x−μ)
  • 数据点 x , y x, y x,y 之间的马氏距离
    D M ( x , y ) = ( x − y ) T Σ − 1 ( x − y ) D_{M}(x,y)=\sqrt{(x-y)^{T} \Sigma^{-1}(x-y)} DM​(x,y)=(x−y)TΣ−1(x−y) ​其中 Σ Σ Σ 是多维随机变量的协方差矩阵, μ μ μ 为样本均值,如果协方差矩阵是单位向量,也就是各维度独立同分布 (且各维度方差为 1),马氏距离就变成了欧氏距离

马氏距离到底有什么用?

  • 如下图的过程,此例的数据中心为原点, P 1 P_1 P1​, P 2 P_2 P2​ 到原点的欧氏距离相同,但点 P 2 P_2 P2​ 在 y y y 轴上相对原点有较大的变异,而点 P 1 P_1 P1​ 在 x x x 轴上相对原点有较小的变异。所以 P 1 P_1 P1​ 点距原点的直观距离是比 P 2 P_2 P2​ 点的小的
    相似度 / 距离计算
  • 马氏距离就是解决这个问题,它将直观距离和欧式距离统一。为了做到这一点, 它先将数据不同维度上的方差统一(即各维度上的方差相同),此时的欧式距离就是直观距离。如下图所示:统一方差后, P ^ 1 \hat P_1 P^1​ 到原点的距离小于 P ^ 2 \hat P_2 P^2​
    相似度 / 距离计算
  • 但是,如果不同维度之间具有相关性,则压缩的效果就不好了。如下图只在横向和纵向上压缩,则达不到上图的压缩效果;只有在 F 1 F_1 F1​ 方向和 F 2 F_2 F2​ 方向上压缩数据才能达到较好的效果。所以需要将原始数据在 X Y XY XY 坐标系中的坐标表示在 F F F 坐标系中。然后再分别沿着坐标轴压缩数据
    相似度 / 距离计算相似度 / 距离计算
  • 所以,计算样本数据的马氏距离分为两个步骤
    • (1) 坐标旋转: 使旋转后的各个维度之间线性无关 (也就是使得各个维度数据之间的协方差均为 0),所以该旋转过程就是主成分分析的过程
    • (2) 数据压缩: 将不同的维度上的数据压缩成为方差都是 1 的的数据集

马氏距离的推导

  • 定义一组 R n \R^n Rn 上的正交基 P P P 作为旋转后的新坐标系, y y y 为样本 x x x 旋转后的新坐标 (在新坐标系内,样本 y y y 各个属性之间协方差为 0),即 x = P y x=Py x=Py
  • 设原协方差矩阵为 Σ \Sigma Σ,旋转后的协方差矩阵为 D D D (由于旋转后各个属性之间协方差为 0,因此 D D D 一定为对角矩阵),有
    Σ = 1 N − 1 ∑ n = 1 N ( x n − μ ) ( x n − μ ) T ∴ D = 1 N − 1 ∑ n = 1 N ( y n − μ ′ ) ( y n − μ ′ ) T = 1 N − 1 ∑ n = 1 N P ( x n − μ ) ( x n − μ ) T P T = P Σ P T \begin{aligned}\Sigma&=\frac{1}{N-1}\sum_{n=1}^N(x_n-\mu)(x_n-\mu)^T\\ \therefore D&=\frac{1}{N-1}\sum_{n=1}^N(y_n-\mu')(y_n-\mu')^T \\&=\frac{1}{N-1}\sum_{n=1}^NP(x_n-\mu)(x_n-\mu)^TP^T \\&=P\Sigma P^T\end{aligned} Σ∴D​=N−11​n=1∑N​(xn​−μ)(xn​−μ)T=N−11​n=1∑N​(yn​−μ′)(yn​−μ′)T=N−11​n=1∑N​P(xn​−μ)(xn​−μ)TPT=PΣPT​注意到这上面的推导和 PCA 是一样的, P P P 由 Σ \Sigma Σ 的特征向量基组成, D D D 为对角矩阵,对角元素为 Σ \Sigma Σ 对应的特征值
  • 通过上面的推导,我们知道了如何旋转坐标系,之后我们要做的就是对旋转后的样本 y y y 进行数据压缩,压缩后的样本 y ^ = D − 1 y \hat y=\sqrt{D^{-1}}y y^​=D−1 ​y
  • 马氏距离是旋转变换缩放之后的欧式距离,因此马氏距离为:
    D M = ( y ^ 1 − y ^ 2 ) T ( y ^ 1 − y ^ 2 ) = ( y 1 − y 2 ) T D − 1 ( y 1 − y 2 ) = ( x 1 − x 2 ) T P D − 1 P T ( x 1 − x 2 ) = ( x 1 − x 2 ) T ( P T D P ) − 1 ( x 1 − x 2 ) = ( x 1 − x 2 ) T ( P T P Σ P T P ) − 1 ( x 1 − x 2 ) = ( x 1 − x 2 ) T Σ − 1 ( x 1 − x 2 ) \begin{aligned}D_M&=(\hat y_1-\hat y_2)^T(\hat y_1-\hat y_2) \\&=(y_1-y_2)^T{D^{-1}}(y_1-y_2) \\&=(x_1-x_2)^TP{D^{-1}}P^T(x_1-x_2) \\&=(x_1-x_2)^T(P^T{D}P)^{-1}(x_1-x_2) \\&=(x_1-x_2)^T(P^TP\Sigma P^TP)^{-1}(x_1-x_2) \\&=(x_1-x_2)^T\Sigma^{-1}(x_1-x_2) \end{aligned} DM​​=(y^​1​−y^​2​)T(y^​1​−y^​2​)=(y1​−y2​)TD−1(y1​−y2​)=(x1​−x2​)TPD−1PT(x1​−x2​)=(x1​−x2​)T(PTDP)−1(x1​−x2​)=(x1​−x2​)T(PTPΣPTP)−1(x1​−x2​)=(x1​−x2​)TΣ−1(x1​−x2​)​
上一篇:羽夏看Win系统内核——同步篇


下一篇:不使用useradd添加用户