其他算法-马氏距离

假设现在有数据集 X ∈ R N × F X\in R^{N\times F} XRN×F,而 x 1 , x 2 ∈ R F x_{1},x_{2}\in R^{F} x1,x2RF为数据集中的两个样本,则 x 1 x_{1} x1 x 2 x_{2} x2的马氏距离为: D M ( x 1 , x 2 ) = ( x 1 − x 2 ) Σ − 1 ( x 1 − x 2 ) T D_{M}(x_{1},x_{2})=\sqrt{(x_{1}-x_{2})\Sigma^{-1}(x_{1}-x_{2})^{T}} DM(x1,x2)=(x1x2)Σ1(x1x2)T 其中, Σ \Sigma Σ是数据集 X X X的协方差矩阵(对于高维数据,协方差可以表示两个特征之间的相关性,协方差矩阵的计算回顾其他算法-PCA主成分分析),如果我们令协方差矩阵 Σ \Sigma Σ是一个单位阵,此时的马氏距离就等价于欧氏距离,马氏距离相比欧氏距离有两个好处:

  • 排除变量之间相关性的干扰;
  • 消除特征之间量纲的影响;

下面将对马氏距离的两个优点进行分析,首先引入问题,我们考虑以下数据,这是一个二维数据:
fig1
发现两个维度间存在很强的相关性,其中红点和绿点到中心点(黑点)的欧式距离是一样的,但是从图中可以发现,红点更像是异常点,因此这种情况下用欧氏距离来判断效果不好。而马氏距离通过将数据进行坐标旋转、缩放到另一个空间后可以直接使用欧氏距离区分开红点和绿点。

首先进行坐标旋转,目的是消除各个维度之间的相关性,PCA降维后得到的各个维度是独立的,因为PCA本质就是坐标旋转。PCA对数据 X X X的协方差矩阵 Σ \Sigma Σ分解: Σ = U T Q U \Sigma=U^{T}QU Σ=UTQU其中, U U U是特征向量组成的矩阵,并且是一个正交矩阵( U T U = I U^{T}U=I UTU=I),即 U U U是一组正交基构成的矩阵,然后我们把 X X X投影到这组正交基上便能够消除维度间的相关性,PCA取前 k k k个维度实现降维,此处我们不降维,我们保留所有维度得到消除相关性的数据: Y = X U Y=XU Y=XU数据可视化如下:
fig2
可以看到坐标旋转变换后两个维度之间相关性已经很小了,但是样本之间的相对位置不变,红点和绿点到黑点的欧氏距离还是一样,仍然无法区分开,此时还需要进行缩放处理;

下一步,对数据进行缩放,消除量纲影响;我们只需让 Y Y Y的每个维度除以 Y Y Y对应维度的标准差( σ i \sigma_{i} σi是第 i i i维的方差),得到缩放后的数据 Z Z Z
Z = Y [ 1 σ 1 ⋯ 0 ⋱ 0 ⋯ 1 σ F ] = Y Λ Z=Y \begin{bmatrix} \frac{1}{\sqrt{\sigma_{1}}} & \cdots & 0 \\ & \ddots & \\ 0 & \cdots & \frac{1}{\sqrt{\sigma_{F}}} \end{bmatrix}=Y\Lambda Z=Yσ1 100σF 1=YΛ
下图是缩放后的数据:
fig3
假设 z 1 , z 2 ∈ R F z_{1},z_{2}\in R^{F} z1,z2RF Z Z Z中的两个样本,现在计算 z 1 , z 2 z_{1},z_{2} z1,z2的欧式距离即为 x 1 , x 2 x_{1},x_{2} x1,x2的马氏距离;

证明: D ( z 1 , z 2 ) = ( z 1 − z 2 ) ( z 1 − z 2 ) T D(z_{1},z_{2})=\sqrt{(z_{1}-z_{2})(z_{1}-z_{2})^{T}} D(z1,z2)=(z1z2)(z1z2)T = ( y 1 Λ − y 2 Λ ) ( y 1 Λ − y 2 Λ ) T = ( x 1 U Λ − x 2 U Λ ) ( x 1 U Λ − x 2 U Λ ) T =\sqrt{(y_{1}\Lambda-y_{2}\Lambda)(y_{1}\Lambda-y_{2}\Lambda)^{T}}=\sqrt{(x_{1}U\Lambda-x_{2}U\Lambda)(x_{1}U\Lambda-x_{2}U\Lambda)^{T}} =(y1Λy2Λ)(y1Λy2Λ)T =(x1UΛx2UΛ)(x1UΛx2UΛ)T = ( x 1 − x 2 ) U Λ Λ U T ( x 1 − x 2 ) T = ( x 1 − x 2 ) Σ − 1 ( x 1 − x 2 ) T =\sqrt{(x_{1}-x_{2})U\Lambda \Lambda U^{T}(x_{1}-x_{2})^{T}}=\sqrt{(x_{1}-x_{2})\Sigma^{-1}(x_{1}-x_{2})^{T}} =(x1x2)UΛΛUT(x1x2)T =(x1x2)Σ1(x1x2)T
补充: Λ Λ = [ 1 σ 1 ⋯ 0 ⋱ 0 ⋯ 1 σ F ] \Lambda \Lambda=\begin{bmatrix} \frac{1}{\sigma_{1}} & \cdots & 0 \\ & \ddots & \\ 0 & \cdots & \frac{1}{\sigma_{F}} \end{bmatrix} ΛΛ=σ1100σF1这就是 Y Y Y的协方差矩阵的逆 D ( Y ) − 1 D(Y)^{-1} D(Y)1,所以: U Λ Λ U T = U D ( Y ) − 1 U T = U ( U Σ U T ) − 1 U T = U U T Σ − 1 U U T = Σ − 1 U\Lambda \Lambda U^{T}=UD(Y)^{-1} U^{T}=U(U\Sigma U^{T})^{-1}U^{T}=UU^{T}\Sigma^{-1}UU^{T}=\Sigma^{-1} UΛΛUT=UD(Y)1UT=U(UΣUT)1UT=UUTΣ1UUT=Σ1

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值