相似度 / 距离计算 (闵氏距离、马氏距离、相关系数、夹角余弦)

  • Ref: 《统计学习方法》

目录

  • L p L_p Lp 距离 ( L p L_p Lp distance) / Minkowski 距离 (Minkowski distance)
  • 马氏距离 / 马哈拉诺比斯距离 (Mahalanobis Distance)
  • 相关系数 (correlation coefficient)
  • 夹角余弦 (cosine)

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)

  • Ref: 马氏距离 (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)=(xy)TΣ1(xy) 其中 Σ Σ Σ 是多维随机变量的协方差矩阵 μ μ μ 为样本均值,如果协方差矩阵是单位向量,也就是样本数据的各个分量不相关且各个分量的方差为 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 点的小的
    相似度 / 距离计算 (闵氏距离、马氏距离、相关系数、夹角余弦)_第1张图片
  • 马氏距离就是解决这个问题,它将直观距离和欧式距离统一。为了做到这一点, 它先将数据不同维度上的方差统一(即各维度上的方差相同),此时的欧式距离就是直观距离。如下图所示:统一方差后, P ^ 1 \hat P_1 P^1 到原点的距离小于 P ^ 2 \hat P_2 P^2
    相似度 / 距离计算 (闵氏距离、马氏距离、相关系数、夹角余弦)_第2张图片
  • 但是,如果不同维度之间具有相关性,则压缩的效果就不好了。如下图只在横向和纵向上压缩,则达不到上图的压缩效果;只有 F 1 F_1 F1 方向和 F 2 F_2 F2 方向上压缩数据才能达到较好的效果。所以需要将原始数据在 X Y XY XY 坐标系中的坐标表示在 F F F 坐标系中。然后再分别沿着坐标轴压缩数据
    相似度 / 距离计算 (闵氏距离、马氏距离、相关系数、夹角余弦)_第3张图片相似度 / 距离计算 (闵氏距离、马氏距离、相关系数、夹角余弦)_第4张图片
  • 所以,计算样本数据的马氏距离分为两个步骤
    • (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=N11n=1N(xnμ)(xnμ)T=N11n=1N(ynμ)(ynμ)T=N11n=1NP(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^=D1 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^1y^2)T(y^1y^2)=(y1y2)TD1(y1y2)=(x1x2)TPD1PT(x1x2)=(x1x2)T(PTDP)1(x1x2)=(x1x2)T(PTPΣPTP)1(x1x2)=(x1x2)TΣ1(x1x2)

相关系数 (correlation coefficient)

  • 相关系数的绝对值越接近于 1,表示样本越相似;越接近于 0,表示样本越不相似

相似度 / 距离计算 (闵氏距离、马氏距离、相关系数、夹角余弦)_第5张图片

夹角余弦 (cosine)

  • 夹角余弦越接近于 1,表示样本越相似;越接近于 0,表示样本越不相似

相似度 / 距离计算 (闵氏距离、马氏距离、相关系数、夹角余弦)_第6张图片

你可能感兴趣的:(机器学习,概率论,机器学习)