PCA 与 马氏距离
PCA降维和马氏距离变换在数学上是一致的 在一个有很多个变量,每个变量有很多个维度的值的问题中,PCA是从中找到方差最大的方向(不一定是某个坐标轴),而马氏变换是将数据的各个方向上的方差拉成一致。 我们假定数据分布是高斯的且零均值,形状上是广义椭球。 那么,PCA就是去找出椭球最大的几个轴向,而马氏变换则是把椭球规则化成球。
数学描述: \(n个数据点X_i = [X_{i1},X_{i2},\cdots,X_{ik}]^T\) \(k个Tag\ \ \ \ T_i = [X_{1i},X_{2i},\cdots,X_{ni}]^T\) 每个数据点k个值,即有k个Tag,所有的数组成一个数据矩阵\(X\) \[X = [X_1,X_2,X_3,\cdots,X_n]^T\] 同时若将数据按Tag重新表示\(X\) \[X = [T_1,T_2,T_3,\cdots,T_k]\] 协方差矩阵\(\Sigma\) \[ \Sigma = X^TX = \left [ \begin{matrix} T_1 ^TT_1& T_1 ^TT_2 & \cdots & T_1 ^TT_k\\ T_2 ^TT_1& T_2 ^TT_2 & \cdots & T_2 ^TT_k\\ \vdots & \vdots & \ddots & \vdots\\ T_k ^TT_1 & T_k ^TT_2 & \cdots & T_k ^TT_k\\ \end{matrix} \right ] \]
PCA与马氏距离都需要用到这个协方差矩阵\(\Sigma\)
PCA
PCA需要找到方差最大的方向,方法上是将协方差矩阵对角化,由于协方差矩阵是实对称矩阵,故一定可以对角化分解 \[\Sigma = P^T\Lambda P,其中P^TP = I\] 选取最大的一些列对角阵\(\Lambda\)元素(主成分),并令P中对应特征向量为\(0\),得到新的矩阵\(P_p\),是一个旋转、投影矩阵。以此矩阵\(P_p\)作用于原数据,则得到降维数据
马氏距离
马氏距离是将不同坐标的方差归一化且去相关 \[d_M(x,y) = (x-y)^T\Sigma^{-1}(x-y)\]
旋转
我们先来看一下矩阵\(P\)的作用,将\(P\)作用在每个数据点\(X_i\)上,得到\(X_i'\) \[X_i' = PX_i\] 合起来则有 \[X' = XP^T\] 现在我们来算\(X\)的协方差 \[\Sigma' = (XP^T)^T(XP^T) = PX^TXP^T = \Lambda\] 这样来看,\(P\)的作用就相当于将这些数据转’正’,使得不同坐标量之间不相关
伸缩
令\(L = P^T\Lambda^{\frac{1}{2}},则\Sigma= LL^T\) 现在来看\(L^{-1}\)作用在变量上的效果 \[X_i^+ = L^{-1}X_i\] 合起来则有 \[X^+ = X(L^{-1})^T\] 现在我们来算\(X\)的协方差 \[\Sigma^* = (X(L^{-1})^T)^T(X(L^{-1})^T) = L^{-1}X^TX(L^{-1})^T = I\] 这样来看,\(L^{-1}\)的作用就相当于将这些数据转’正’,再伸缩各个尺度,使得不同坐标量之间不仅不相关,而且有相同的方差1
而再看马氏距离的公式本质上就是将原先的距离向量做了\(L^{-1}\)变换
多维正态分布
多维正态分布的公式 \[f(x) = \frac{1}{(\sqrt{2\pi})^n|\Sigma|^{1/2}}exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)^T)\] \[=\frac{1}{(\sqrt{2\pi})^n|\Sigma|^{1/2}}exp(-\frac{1}{2}d_M(x,\mu))\] 这里恰好有马氏距离 说一下我的理解,多维的正态分布无论内部相关不相关,其分布在形状上都是广义椭球,我们同样用\(L^{-1}\)对这个分布的所有点做变换,那么就归一化成标准的多维正态分布,这个有点类似一维中归一化成\(N(0,1)\),但是概率密度会因变换改变(微积分里应该讲过),其改变的倍数是变换的雅可比行列式。而\(|\Sigma^{1/2}|\)就是变换\(L^{-1}\)的雅可比行列式。