馬氏距離

breezezz發表於2021-01-28

協方差與協方差矩陣

  協方差計算的是兩個隨機變數之間線性相關程度。變數之間越相關,協方差越大。變數之間越無關,協方差越小。隨機變數\(X,Y\)之間的協方差定義為

\[cov(X,Y) = E[(X-EX)(Y-EY)] \]

顯然,計算同一個變數的協方差時等同於計算其方差。

  通過樣本來統計其協方差時,假設單個樣本為\(m\)維列向量\(x_i\),將\(n\)個樣本組合為一個\(m \times n\)的矩陣\(X = (x_1,x_2,\cdots,x_n)\)\(X\)的資料可示例如下

\[\begin{bmatrix} x_{11}& x_{12}& \cdots & x_{1n}\\ x_{21}& x_{22}& \cdots & x_{2n}\\ \vdots &\vdots &&\vdots\\ x_{m1} &x_{m2}& \cdots & x_{mn}\end{bmatrix} \]

  注意這裡求取的協方差是關於不同維度之間的,也就是一個維度(屬性)可看作一個隨機變數。比如維度1與維度2之間樣本協方差的無偏估計可計算如下

\[cov(X1,X2) = \frac 1 {n-1} \sum_{i=1}^n (x_{1i}-\bar x_1)(x_{2i}-\bar x_1) \]

  兩個變數時,它們的相關程度可以方便的用協方差表示。但在機器學習任務中,常常會處理具有多個屬性的問題。每個屬性都可看作一個隨機變數,如果要考慮這些變數兩兩之間的關係,再挨個列出協方差太過麻煩。因此使用矩陣的形式將其組合起來,這就是協方差矩陣。

\[\Sigma = \begin{bmatrix} cov(X1,X1) & \cdots &cov(X1,Xm)\\ \vdots & \ddots &\vdots\\ cov(Xm,X1) & \cdots & cov(Xm,Xm)\\ \end{bmatrix} \]

  對於\(m\)維資料的樣本集合,相當於有\(m\)個隨機變數來描述其屬性特點。計算這\(m\)維資料兩兩之間的協方差便得到了一個\(m\times m\)的協方差矩陣。因此,協方差的具體含義可以理解為計算一組資料各個維度之間的相關性。

  協方差矩陣是實對稱矩陣,實對稱矩陣有一個重要性質是可以正交對角化,即存在一個正交矩陣U,對\(X\)作一個正交變換\(Y=U^TX\)後,使得協方差矩陣\(\Sigma\)滿足

\[\Lambda = U^T\Sigma U \]

這意味著,只要對一組樣本資料作一個正交變換,就能使得它變成維度之間兩兩無關的資料。這使得它在很多工程中成為了重要的理論基礎。在下文馬氏距離的推導中,就先根據這個原理講資料變換到一個維度無關的線性空間。

  同時,協方差矩陣還是半正定矩陣,因此\(\Sigma\)還可做\(Cholesky\)分解,即

\[\Sigma = L \cdot L^T \]

其中,\(L\) 是下三角矩陣,\(L^T\) 是它的轉置。

馬氏距離

  假設單個樣本為m維列向量\(x_i\),將\(n\)個樣本組合為一個\(m \times n\)的矩陣\(X = (x_1,x_2,\cdots,x_n)\)\(X\)的資料可示例如下

\[\begin{bmatrix} x_{11}& x_{12}& \cdots & x_{1n}\\ x_{21}& x_{22}& \cdots & x_{2n}\\ \vdots &\vdots &&\vdots\\ x_{m1} &x_{m2}& \cdots & x_{mn} \end{bmatrix} \]

對於\(X\)\(i\)個維度的樣本均值可表示為\(\mu ^{(x)}_i\)\(\mu^{(x)}\)\(X\)的樣本均值向量

\[\mu^{(x)} = (\mu_1^{(x)},\mu_2^{(x)},\cdots,\mu_m^{(x)})^T \]

  則其協方差矩陣可表示為

\[\begin{aligned} \Sigma_X =& E[(X-\mu^{(x)})(X-\mu^{(x)})^T]\\ =& \frac 1 {n-1} \sum_{i=1}^n (x_i -\mu^{(x)}) (x_i-\mu^{(x)})^T \end{aligned} \]

對一組資料,可通過主成分分析等方法,確定其特徵向量,按照特徵向量進行座標變換就能得到一個新座標系下的樣本,雖還是同一組樣本,但這組樣本的各個維度在變換後的座標系下相互獨立。用\(F\)來表示\(X\)旋轉後的向量組成的矩陣(它們是相同的,不過座標系不同),\(U\)表示變換矩陣。於是有

\[F=(f_1,f_2,\cdots , f_m)^T=U^TX \]

旋轉後的均值為

\[\mu^{(f)} =(\mu_1^{(f)},\mu_2^{(f)},\cdots,\mu_m^{(f)})^T=U^T\mu^{(x)} \]

得到

\[F-\mu^{(f)}=U^T(X-\mu^{(x)}) \]

  由於\(F\)經過正交變換後維度無關,因此其協方差矩陣是一個由其方差組成的對角矩陣

\[\begin{aligned} E[(F-\mu^{(f)}) (F-\mu^{(f)})^T]=& \begin{bmatrix} \lambda_1& \\ &\lambda_2&\\ && \ddots&\\ &&&& \lambda_m\\ \end{bmatrix}\\ =&E\;\left [ U^T(X-\mu^{(x)})(X-\mu^{(x)})^TU \right] \\ =& U^T \Sigma_X U \end{aligned} \]

經過變換後的\(F\)是維度無關的,此時它的馬氏距離相當於歐式距離。不過在求取歐式距離時,其變數的方差也會影響結果,所以要求標準化後的歐式距離。

\[\begin{aligned} D_F=& \frac {(f_1-\mu^{(f)}_1)} {\lambda_1} +\frac {(f_2-\mu^{(f)}_2)} { \lambda_2} +\cdots +\frac {(f_m-\mu^{(f)}_m)} { \lambda_m} \\ =& (f_1-\mu^{(f)}_1,f_2-\mu^{(f)}_2,\cdots,(f_m-\mu^{(f)}_m) \begin{bmatrix} \frac 1 {\lambda_1}&\\ &\frac 1 {\lambda_2}&\\ && \ddots&\\ &&&\frac 1 {\lambda_m}\\ \end{bmatrix} \begin{pmatrix} f_1-\mu^{(f)}_1\\ f_2-\mu^{(f)}_2\\ \cdots\\ (f_m-\mu^{(f)}_m \end{pmatrix}\\ =&(F-\mu^{(f)})^T(U^T\Sigma_XU)^{-1}(F-\mu^{(f)})\\ =&(X-\mu^{(x)})^TU(U^T\Sigma_X^{-1}U)U^T(X-\mu^{(x)})\\ =&(X-\mu^{(x)})\Sigma_X^{-1}(X-\mu^{(x)})\\ \end{aligned} \]

  通過推導過程可以發現,馬氏距離計算中用到協方差矩陣的逆與計算歐氏距離中的標準化有某種關係。事實上馬氏距離確實是尺度無關的一種度量,它通過對原資料進行線性變換,得到維度無關的資料之後,再計算其標準化後(去除方差影響)的歐式距離。進行線性變換的目的是去除維度之間相關性的影響。

相關文章