機器學習筆記-距離度量與相似度(二)馬氏距離


馬氏距離(Mahalanobis Distance)

馬氏距離(Mahalanobis Distance)是由印度統計學家馬哈拉諾比斯(P. C. Mahalanobis)提出的,表示數據的協方差距離。它是一種有效的計算兩個未知樣本集的相似度的方法。它考慮到數據特征之間的聯系,並且是尺度無關的(scale-invariant),即獨立於測量尺度。

馬氏距離的定義

假設\(x\)\(y\)是從均值向量為\(\mu\),協方差矩陣為\(\Sigma\)的總體\(G\)中隨機抽取的兩個樣本,定義\(x\)\(y\)兩點之間的馬氏距離為:

\[d_m^2(x, y)= (x-y)^T \Sigma^{-1}(x-y) \]

定義\(x\)與總體\(G\)的馬氏距離為:

\[d_m^2(x, \mu_G)= (x-\mu_G)^T \Sigma^{-1}(x-\mu_G) \]

其中,如果協方差矩陣是單位向量,也就是各維度獨立同分布,馬氏距離就變成了歐氏距離。

注:上面的兩個表達式其實是馬氏距離的平方

為什么定義馬氏距離

1. 數據指標的單位對距離度量的影響

在很多機器學習問題中,樣本間的特征都可以用距離去描述,比如說最常見的歐氏距離。對於歐氏距離而言,空間中任意兩點\(P=(x_1, x_2, \dots, x_p)\)\(Q=(y_1, y_2, \dots, y_p)\)之間的距離為:

\[d(P,Q)=\sqrt{(x_1-y_1)^2 + (x_2-y_2)^2 + \dots + (x_p-y_p)^2} \]

顯然,當固定點\(Q\)且取值為\(0\)時,表示點\(P\)到坐標原點的距離。

歐氏距離有一個缺點,就是當各個分量為不同性質的量時(比如,人的身高與體重,西瓜的重量與體積),“距離”的大小竟然與指標的單位有關。例如,橫軸\(x_1\)代表重量(以\(kg\)為單位),縱軸\(x_2\)代表長度(以\(cm\)為單位)。有四個點\(A, B, C, D\),如圖2.1所示。


圖2.1

這時

\(d(A, B) = \sqrt{5^2+10^2} = \sqrt {125}\)
\(d(C, D) = \sqrt{10^2+1^2} = \sqrt {101}\)

顯然,\(AB\)\(CD\)要長。

現在,如果\(x_2\)用毫米\((mm)\)做單位,\(x_1\)保持不變,此時\(A\)坐標\((0, 50)\)\(C\)坐標為\((0, 100)\),則

\(d(A, B) = \sqrt{50^2+10^2} = \sqrt {2600}\)
\(d(C, D) = \sqrt{100^2+1^2} = \sqrt {10001}\)

結果\(CD\)反而比\(AB\)長!這顯然是不夠合理的。

2. 樣本分布對距離度量的影響

雖然我們可以先做歸一化來消除這種維度間度量單位不同的問題,但是樣本分布也會影響距離度量。我們可以看到,歐氏距離中每個坐標的權重是同等的。但是現實問題中,當坐標軸表示觀測值時,它們往往帶有大小不等的隨機波動,即具有不同的方差,顯然它們之間的權重是不同的。

下面舉兩個一維的例子說明這個問題:

設有兩個正態分布總體\(G_1: N(\mu_1, \sigma_1^2)\)\(G_2: N(\mu_2, \sigma_2^2)\)。若有一個樣本,其值在點A處,那么,A距離哪個總體近些呢?如圖2.2所示:


圖2.2

從絕對長度來看,點A距離左面的總體\(G_1\)近些,即點A到\(\mu_1\)比到\(\mu_2\)要近些,(這里用的是歐氏距離,比較的是A點坐標與\(\mu_1\)\(\mu_2\)值之差的絕對值),但從概率觀點來看,A點在\(\mu_1\)右側約4\(\sigma_1\)處,而在\(\mu_2\)的左側約3\(\sigma_2\)處,若以標准差來衡量,A點距離\(\mu_2\)要更“近一些”。后者是從概率角度來考慮的,它是用坐標差的平方除以方差(或者說乘以方差的倒數),從而化為無量綱數,推廣到多維就要乘以協方差矩陣\(\Sigma\)的逆矩陣\(\Sigma^{-1}\)

再來看下圖2.3,A與B相對於原點的距離是相同的。但是由於樣本總體沿着橫軸分布,所以B點更有可能是這個樣本中的點,而A則更有可能是離群點。在一個方差較小的維度下很小的差別就有可能成為離群點。


圖2.3

3. 維度間具有相關性對距離度量的影響

我們看到,上面描述的情形是維度間或者說特征之間是不相關的,那么如果維度間具有相關性會怎樣呢?如下圖2.4所示:


圖2.4

可以看到樣本點可以近似看做是\(f(x) = x\)的線性分布,A與B相對於原點的距離依舊相等,顯然A更像是一個離群點,也即是說離樣本總體較遠。

即使數據已經經過了標准化,也不會改變AB與原點間距離大小的相互關系。所以要本質上解決這個問題,就要針對主成分分析中的主成分來進行標准化。

為什么標准化不會改變距離大小的相互關系,這里以最常見的z-score標准化(也叫標准差標准化)為例進行簡單說明。這種方法給予原始數據的均值(mean)和標准差(standard deviation)進行數據的標准化。經過處理的數據符合標准正態分布,即均值為0,標准差為1,其轉化函數為:\(x^∗=(x−\mu)/\sigma\),其中\(\mu\)為所有樣本數據的均值,\(\sigma\)為所有樣本數據的標准差。

顯然這里的\(\mu\)\(\sigma\)都是相同的,所以標准化只相當於對A、B點與數據中心距離進行了一個等比例縮放,並不影響它們之間大小的相互關系
由此可見,僅僅靠標准化的歐氏距離還是存在很大問題的,數據相關性對判定結果的影響還是很大的。

為什么z-score 標准化后的數據標准差為1?

x-μ只改變均值,標准差不變,所以均值變為0
(x-μ)/σ只會使標准差除以σ倍,所以標准差變為1

\(E(x^*) = E[\frac{x-E(x)}{\sqrt{D(x)}}] = \frac{1}{\sqrt{D(x)}}E[x-E(x)]=0\)

\(D(x^*) = D\big[\frac{x-E(x)}{\sqrt{D(x)}}\big] = \frac{1}{D(x)}D[x-E(x)] = \frac{D(x)}{D(x)} = 1\)

OK! 總結一下問題:

  1)要考慮維度間相關性的影響
  2)要考慮方差的影響
  3)要考慮度量單位或者說量綱的影響

因此,有必要建立一種統計距離(只是一種術語,用於區別常用的歐氏距離),這種距離要能夠體現各個變量在變差大小上的不同,以及有時存在着的相關性,還要求距離與各變量所用的單位無關。看來我們選擇的距離要依賴於樣本的方差和協方差。馬氏距離就是最常用的一種統計距離。

馬氏距離的幾何意義

那么怎么辦?,其實如果上面內容已經搞懂了,我們就會知道,只需要將變量按照主成分進行旋轉,讓維度間相互獨立,然后進行標准化,讓維度同分布就OK了,然后計算馬氏距離就變成了計算歐氏距離。

由主成分分析可知,由於主成分就是特征向量方向,每個方向的方差就是對應的特征值,所以只需要按照特征向量的方向旋轉,然后縮放特征值倍就可以了,可以得到以下的結果,圖2.5:


圖2.5

離群點就被成功分離,這時候的馬氏距離就是歐氏距離。

馬氏距離的推導

假設原始的多維樣本數據\(X_{n\times m}\)\(n\)行,\(m\)列):

\[X_{n\times m} = \begin{matrix} x_{11} & x_{12}& \cdots & x_{1m} \\ x_{21} & x_{22}& \cdots & x_{2m} \\ \vdots & \vdots& \ddots & \vdots \\ x_{n1} & x_{n2}& \cdots & x_{nm} \end{matrix}\]

其中每行表示一個樣本,\(X_i\)表示樣本的第\(i\)個維度,\(X_i=(x_{1i}, x_{2i}, \dots, x_{ni})^T, i=1, 2, \dots, m\),則以上多維樣本數據可記為:\(X = (X_1, X_2, \dots, X_m)\)

樣本總體的均值向量記為:\(\mu_X=(\mu_{X1},\mu_{X2},\dots,\mu_{Xm})\)

協方差矩陣記為:\(\Sigma_X = E[(X-\mu_X)^T(X-\mu_X)] = \frac{1}{n}(X-\mu_X)^T(X-\mu_X)\)

按照之前的描述,首先要對數據進行轉換,旋轉至主成分,使維度間線性無關。假設將原始數據\(X\)通過坐標旋轉矩陣\(U\)變換得到了新的坐標,對應的新數據集記為\(F\)(實際上\(X\)\(F\)表示的是同一個數據集,只是由於坐標值不同,為了區分而使用不同標記),數據集\(F\)的均值向量記為\(\mu_F=(\mu_{F1},\mu_{F2},\dots,\mu_{Fm})\),則:

\[F^T = (F_1, F_2, \dots, F_m) = UX^T \]

\[(F-\mu_F)^T = U(X-\mu_X)^T \]

\[(F-\mu_F) = (X-\mu_X)U^T \]

變換后的數據維度間線性無關,且每個維度的方差為特征值,即協方差矩陣\(\Sigma_F\)是對角陣,所以:

\[\begin{aligned} \Sigma_F &= E[(F-\mu_F)^T(F-\mu_F)] \\ &= \frac{1}{n}(F-\mu_F)^T(F-\mu_F) \\ &= \frac{1}{n}U(X-\mu_X)^T(X-\mu_X)U^T \\ &= U\Sigma_XU^T \\ &= \left(\begin{matrix}\lambda_1 & && \\ &\lambda_2&& \\ &&\ddots& \\ &&&\lambda_m\end{matrix}\right) \end{aligned}\]

其中,\(\lambda_i, i=1, 2, \dots, m\)表示每個維度的方差。

推導到這里之后,我們就可以推導出馬氏距離公式了,假設要計算\(X\)的一個樣本點\(x=(x_1, x_2, \dots, x_3)\)到重心\(\mu_X=(\mu_{X1},\mu_{X2},\dots,\mu_{Xm})\)的馬氏距離。等價於求\(F\)中點\(f = (f_1, f_2, \dots, f_m)\)標准化后的坐標值到標准化數據重心坐標值\(\mu_F=(\mu_{F1},\mu_{F2},\dots,\mu_{Fm})\)的歐氏距離。

\[\begin{aligned} d_m^2(f, \mu_F) &= \big(\frac{f_1-\mu_{F1}}{\sqrt{\lambda_1}}\big)^2 + \big(\frac{f_2-\mu_{F2}}{\sqrt{\lambda_2}}\big)^2 + \dots + \big(\frac{f_m-\mu_{Fm}}{\sqrt{\lambda_m}}\big)^2\\ &= (f_1-\mu_{F1},f_2-\mu_{F2},\dots,f_m-\mu_{Fm})\left(\begin{matrix}\frac{1}{\lambda_1} & && \\ &\frac{1}{\lambda_2}&& \\ &&\ddots& \\ &&&\frac{1}{\lambda_m}\end{matrix}\right)\left(\begin{matrix}f_1-\mu_{F1} \\ f_2-\mu_{F2} \\ \vdots\\ f_m-\mu_{Fm}\end{matrix}\right) \\ &= (f-\mu_F)(U\Sigma_XU^T)^{-1}(f-\mu_F)^T \\ &= (x-\mu_X)U^T(U\Sigma_XU^T)^{-1}U(x-\mu_X)^T \\ &= (x-\mu_X)U^T(U^T)^{-1}\Sigma_X^{-1}U^{-1}U(x-\mu_X)^T \\ &= (x-\mu_X)\Sigma_X^{-1}(x-\mu_X)^T \end{aligned}\]

這就是前面定義的馬氏距離的計算公式

如果\(x\)是列向量,則

\[d_m^2(f, \mu_F) = (x-\mu_X)^T\Sigma_X^{-1}(x-\mu_X) \]

如果把推導過程中的重心點\(\mu_X\)改換成任意其他樣本點\(y\),則可以得到兩個樣本點之間的馬氏距離公式為:

\[d_m^2(x, y) = (x-y)^T\Sigma_X^{-1}(x-y) \]

假設\(E\)表示一個點集,\(d\)表示距離,它是\(E \times E\)\([0, \infty)\)的函數,可以證明,馬氏距離符合距離度量的基本性質

以上!

 
 
 
機器學習筆記-距離度量與相似度
1)機器學習筆記-距離度量與相似度(一)閔可夫斯基距離
 
 
 
 
 
參考來源:
1)https://www.jianshu.com/p/5706a108a0c6
2)https://blog.csdn.net/u010167269/article/details/51627338
3)https://zhuanlan.zhihu.com/p/46626607
4)多元統計分析-何曉群


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM