機器學習看得見Lesson 11 — 算Euclidean Distance找離群值?你該試試Mahalanobis Distance了
判斷資料是否為離群值(Outlier),很重要的依據是資料彼此之間的距離。計算距離最常見的方法為 Euclidean Distance,但是並非所有情況都適合用這個方法喔!我們來仔細看看吧。
一、特徵標準化(Standardisation)
使用 Euclidean Distance 計算距離,很多文章就會跟你說「資料要標準化,算出來的距離才能用」,仔細一點可能還會跟你說「如果資料中某一個特徵的尺度較大,則該特徵就幾乎決定了資料間的距離」。
確實 Euclidean Distance 有這樣的問題,也的確特徵標準化之後,就可以解決這個問題。我們來看看圖一的範例,左圖中可以發現 x 軸的尺度很大,y 軸的尺度很小。單看左圖會覺得好像沒有離群值,如果將資料做標準化之後,結果如右圖,就會發現其實有一個離群值。這個離群值在左圖觀察不到,是因為 x 軸的尺度太大,讓 y 軸的特徵分佈看不清楚。
有人可能會說「畫圖的時候,縮小 y 軸的尺度就好了呀」,那是因為現在的資料只有 2 個特徵,如果有更多特徵,根本無法畫圖。此時若是計算左圖中任 2 筆資料的 Euclidean Distance,就會發現根本無法發現離群值。而如果計算右圖中的 Euclidean Distance,便會發現離群值。
所以,將特徵標準化之後,就可以開開心心地使用 Euclidean Distance了嗎?並不是這樣。
二、特徵相關性(Correlation)
我們來看圖二的資料,左圖跟右圖當中都有一個橘色的資料點,請問大家覺得該資料點是否為離群值?
看起來,在右圖中的橘色點是離群值,左圖中的橘色點應該不是離群值。很不幸地,如果計算 Euclidean Distance,左圖跟右圖橘色點到最近的資料點,距離是差不多;左圖跟右圖橘色點到藍色資料的中心點(平均數),距離是也幾乎是一樣。
距離計算結果幾乎都是一樣,可是一看圖就知道右圖中的橘色點是離群值呀!問題就在右圖中的資料,2 個特徵有很高的相關性。而使用 Euclidean Distance 的前提假設是特徵之間互相獨立!
也就是說,當特徵之間不是獨立的時候,使用 Euclidean Distance 計算距離,判斷離群值,可能會出問題。
三、Mahalanobis Distance
為了解決特徵相關性造成距離計算的問題,我們可以改用 Mahalanobis Distance。這個距離的計算過程中,會考慮到特徵之間的相關性。計算公式如下:
上述的算式裡,第一個矩陣是資料點跟資料中心點的距離,第二個矩陣是共變異數(Covariance)矩陣的反矩陣(Inverse),第三個矩陣是第一個矩陣的轉置(Transpose)。
我們用圖二的資料來看看計算細節。左圖跟右圖中的第一個矩陣都相同:橘色點的 2 個特徵與特徵平均數的差異都為(-4, 4)。第二個矩陣就不同了,我們來看一下共變異數矩陣的內容:
可以看到 2 個矩陣的右上元素差異很大,右圖的元素數值明顯大很多。這是因為右圖中 2 個特徵有很大的相關性。更多關於共變異數的討論,可以參考這篇文章。
將資料代入 Mahalanobis Distance 公式之後,得到的結果:左圖是 3.59,右圖是 7.16。也就是說,當考慮了特徵的相關性之後,將會凸顯右圖中橘色點到資料中心的距離,符合我們的直觀感覺。
最後附上 Mahalanobis Distance 的 Python 計算範例程式,有興趣的讀者可以執行看看喔!
def func_find_mahalanobis_distance(x, y, new_x, new_y):
matrix1 = np.array([new_x - np.mean(x), new_y - np.mean(y)])
matrix2 = np.linalg.inv(np.cov(np.array([x, y])))
result = np.matmul(matrix1, np.matmul(matrix2, matrix1.T)) return np.sqrt(result)
參考資料
1、Wilkinson L. (2018). Visualizing Big Data Outliers Through Distributed Aggregation. IEEE Transactions on Visualization and Computer Graphics, 24(1), pp. 256–266.
2、Kaliyaperumal S. K. and Kuppusamy, M. (2015). Outlier detection in multivariate data. Applied Mathematical Sciences. 9. 2317–2324. 10.12988/ams.2015.53213.
關於作者
Chia-Hao Li received the M.S. degree in computer science from Durham University, United Kingdom. He engages in computer algorithm, machine learning, and hardware/software codesign. He was former senior engineer in Mediatek, Taiwan. His currently research topic is the application of machine learning techniques for fault detection in the high-performance computing systems.