本文使用markdown编写,如有公式显示异常,可将正文复制到markdown编辑器查看
马氏距离就是用于度量两个坐标点之间的距离关系,表示数据的协方差距离。与尺度无关的(scale-invariant),即独立于测量尺度。
基本思想(intuition)
如下图的过程(以两个维度作为例子),此例的数据重心为原点,P1,P2到原点的欧氏距离相同,但点P2在y轴上相对原点有较大的变异,而点P1在x轴上相对原点有较小的变异。所以P1点距原点的直观距离是比P2点的小的。
马氏距离就是解决这个问题,它将直观距离和欧式距离统一。它先将数据不同维度上的方差统一(即各维度上的方差相同),此时的欧式距离就是直观距离。
如图:统一方差后的图,P1到原点的距离小于P2。P1’到原点的欧式距离和P2的相同。** 以上所说的直观距离就是马氏距离 **。但是,如果不同维度之间具有相关性,则压缩的效果就不好了。如下图只在横向和纵向上压缩,则达不到上图的压缩效果。
所以在F1方向和F2方向上压缩数据才能达到较好的效果。所以需要将原始的在X坐标系中的坐标表示在F坐标系中。然后再分别沿着坐标轴压缩数据。
所以,计算样本数据的马氏距离分为两个步骤:
坐标旋转数据压缩
坐标旋转的目标:使旋转后的各个维度之间线性无关,所以该旋转过程就是主成分分析的过程。
数据压缩的目标:所以将不同的维度上的数据压缩成为方差都是1的的数据集。
推导过程
有一个原始的多维样本数据Xn×mXn×m(m列,n行):
x11x21⋮xn1x12x22⋮xn2⋯⋯⋱⋯x1mx2m⋮xnmx11x12⋯x1mx21x22⋯x2m⋮⋮⋱⋮xn1xn2⋯xnm
其中每一行表示一个测试样本(共n个);
XiXi
表示样本的第i个维度(共m个)Xi=(x1ix2i⋯xni)TXi=(x1ix2i⋯xni)T,以上多为样本数据记为X=(X1,X2⋯Xm)X=(X1,X2⋯Xm)。样本的总体均值为
μX=(μX1,μX2⋯μXm)μX=(μX1,μX2⋯μXm)
。其协方差为:
ΣX=E{(X−μX)T(X−μX)}=1n(X−μX)T(X−μX)ΣX=E{(X−μX)T(X−μX)}=1n(X−μX)T(X−μX)
协方差矩阵是在具有一组样本后,表示数据的各维度之间的关系的。其中n是样本的数量
假设将原始数据集XX通过坐标旋转矩阵UU旋转到新的坐标系统中得到一个新的数据集FF。(其实XX和FF表示的是同一组样本数据集,只是由于其坐标值不同,为了易于区分用了两个字母表示)
FT=(F1,F2⋯Fm)T=UXTFT=(F1,F2⋯Fm)T=UXT
新数据集FF的均值记为μF=(μF1,μF2⋯μFm)μF=(μF1,μF2⋯μFm),μF=UμXμF=UμX
由于将数据集旋转后数据的各维度之间是不相关的,所以新数据集FF的协方差矩阵ΣFΣF应该为对角阵。
由于:
(F−μF)T=U(X−μX)T(F−μF)T=U(X−μX)T
(F−μF)=(X−μX)UT(F−μF)=(X−μX)UT
所以:
ΣF=E{(F−μF)T(F−μF)}=1n(F−μF)T(F−μF)=1nU(X−μX)T(X−μX)UT=UΣXUT=⎛⎝⎜⎜⎜⎜⎜λ1λ2⋱λm⎞⎠⎟⎟⎟⎟⎟ΣF=E{(F−μF)T(F−μF)}=1n(F−μF)T(F−μF)=1nU(X−μX)T(X−μX)UT=UΣXUT=(λ1λ2⋱λm)
每个λi−−√λi就是每个维度值方差。
由于ΣXΣX是实对角阵,所以UU是一个正交矩阵,
UT=U−1UT=U−1
。(005-正交变化,EVD,SVD,PCA-原理详解及推导)