本文介紹馬氏距離(Mahalanobis Distance),通過本文,你將瞭解到馬氏距離的含義、馬氏距離與歐式距離的比較以及一個通過馬氏距離進行異常檢測的例子(基於Python的sklearn包)。
目的
計算兩個樣本間的距離時,需要考慮樣本所在的分佈造成的影響。影響包括兩個方面:
- 不同維度上的方差不同,進而不同維度在計算距離時的重要性不同;
- 不同維度間可能存在相關性,干擾距離計算。
當數據的分佈已知時,我們通常會用馬氏距離代替歐氏距離,或者選擇另一種方法:對數據進行轉換(如PCA)。
定義
- 度量樣本到樣本分佈間的距離
其中是樣本分佈的均值,是樣本分佈的協方差矩陣 - 度量一個分佈下,兩個樣本之間的距離
直觀理解
下面是一個二維空間中距離度量的例子(戳這裏查看實例來源)。
圖中,圓圈表示樣本分佈的中心點,兩個叉分別表示兩個樣本點,從圖中可以看出,在二維空間中兩個叉到樣本分佈的中心點間的歐氏距離相等。但是很明顯,綠叉應該是分佈內的點,紅叉是分佈外的點,所以綠叉距離分佈中心點的距離應該更近才合理。
使用馬氏距離,就等同於通過數據轉換的方法,消除樣本中不同特徵維度間的相關性和量綱差異,使的歐式距離在新的分佈上能有效度量樣本到分佈間的距離。
-
第一步,端詳一下原始數據分佈的特點。
這些樣本的特徵維度即爲橫座標軸和縱座標軸,且兩個特徵維度呈現明顯的正相關性。 -
第二步,消除不同維度之間的相關性。
消除特徵維度間的相關性後,樣本分佈圖如下所示,還存在的一個問題是兩個特徵維度間的量綱不一致。
- 第三步,消除不同維度之間的量綱差異。
經過以上三步,現在的樣本分佈下,樣本間的距離可以用歐氏距離來衡量。
性質
馬氏距離消除了樣本不同維度之間的方差差異和相關性,是一個無量綱的度量方式。
與歐式距離的關係
- 如果協方差矩陣是單位矩陣樣本的特徵維度間相關性(協方差)爲0,量綱一致馬氏距離等同於歐氏距離。
- 如果協方差矩陣是對角矩陣樣本的特徵維度間的量綱一致馬氏距離等同於標準化後的歐氏距離。
實例——用馬氏距離進行異常檢測
實例來自sklearn官方文檔