本篇文章的內容為筆記「補充:Exploratory Data Analysis」的延續,在那篇筆記裡,最後當我們在講 outliers 時,因為篇幅太長,所以我們只講了課本的 univarite 的情形。
當時我們說,利用 box-plot 或是其他的 graphical technique,我們可以用看的就能找出 outliers,但是這樣的方法只適用於 univariate data。
當我們的 data 是 multivariate 時,我們是沒有辦法用看的就找出哪些是 outliers,挑出 outliers 的工作也就變得複雜許多。
實務上,當我們的 variable 數 時,就很難去辨認 outliers。
在這篇筆記裡,我只會簡單講一下 multivariate case 的情況下我們大致上可以怎麼做,舉簡單的例子,停在大概有點概念的程度。如果有興趣深入看看,參考資料的兩篇文章一篇介紹了如何用 python 來計算 MD,另一篇為 multivariate outliers detection 的論文,這篇論文前半部分還是很容易懂的,後半部我就沒看了,總之有興趣可參考!
在 multivariate 的情況下,detect outliers 的方法還是有許多種,包含用不同的 distance metrics、scores、一些特殊的技巧⋯⋯。
舉例來說:
z-score:以 為單位,計算 和 之間的距離
Mahalanobis distance (MD) 是一種很適合 multivariate data 的 distance metric,因為 MD 代表的是 data point 和 distirbution 之間的距離。什麼意思呢?下面我們就會看到。
multivariate case 中,MD 的定義為:
此處因為是 multivariate,所以我們假設每個 observation 為 為一個 -dimensional 的向量。
關於 Mahalanobis distance 的說明,可參考筆記「5.4 Multivariate Normal Distribution」。
因此,根據定義,在計算點 和中心 的距離時,MD 會用到 covariance matrix ,所以如果我們把 MD 當作衡量是否為 outlier 的方式,就不是像 Euclidean distance 一樣單純只考慮 observation 和中心的距離,而是把所有 data points 的 distribution pattern 也考慮進去。
看個圖比較清楚:
從左邊的 Euclidean 我們可以看到,以代表 center 的綠色點為圓心,我們用某個值作為半徑畫出一個圓形的 outlier threshold,在綠色範圍以外的 data points 都是 outliers。
但是這樣的畫法並沒有考慮 data points 的 distribution。藍色的點其實呈一個當 越大 就越大的情形,也就是 為正相關,即 。
因為現在我們是 bivariate(即 ,我們只有兩個 variable )所以 covariance matrix 為:
在計算 MD 時,透過 ,我們把 的某個值也考慮進去了,當然也有 自己本身的 variance,所以我們才說 MD 能把 data points 的 distribution pattern 考慮進去。
從上圖右方我們可以看見,當 distance metric 為 MD 時,我們畫出來的 outlier threshold 更接近實際 data points 的分佈情形,因此拿來判斷 outliers 也就更貼切。
例如去看兩張圖中右上角的那些 data points,以 Euclidean distance 判斷,將他們視為 outliers 明顯就不太合理。
Recall: outlier 的意義是指那些 "data points that do not fit the model of the rest of the data"
不過,也不是所有情況下用 MD 都更適合,比如說當我們的 data points 本身就呈現一個圓形的分佈時,用 Euclidean distance 就更恰當。
因此在選擇 distance metric 時,我們要考慮 data 分佈的情形。
當我們的 data set 有許多的 outliers,或是 clusters of outliers 時,就會有 masking 和 swamping effect 發生。雖然沒有明確的數學定義,但是下面我們會說明這兩種 effects 的直觀定義。
masking effect 的意思如它的名字,也就是一個 outlier 去 "mask" 另一個 outlier。
更詳細的說,如果單純只看第二個 instance 本身,它會被視為是 outlier,但是當我們把第一個 outlier 也考慮進去時,它就不是 outlier 了。
因此,當我們把第一個 outlier 刪掉以後,第二個就變成是 outlier。
masking 會發生在當一個 outlying observations 的 cluster 讓 mean 和 covariance estimates 向它傾斜時,而且這樣一來,outlying point 和 之間的距離就變得比較小。
也就是說,masking effect 可能會讓 outlier 的 MD 變小。(以 MD 作為 distance metric 的情況下)
swamping effect 的意思也和它的名字相同,也就是一個 outlier "swamps"(覆蓋、淹沒)另一個 observation,第二個 observation 只有在第一個 outlier 存在的情況下,才會被視為 outlier。
因此,如果我們把第一個 outlier 刪掉,那麼第二個 observation 就變成了 non-outlying observation。
swamping 發生在當一群 outliers 讓 mean 和 covariance estimates 向它們傾斜,同時遠離其它的 non-outlying instances 時。並且這樣一來,也反倒使得 non-outlying instances 的 distance 變得比較大,讓我們覺得好像它們才是 outliers。
也就是說,swamping effect 可能會讓 non-outlying observations 的 MD 變大。
因為有 masking 和 swamping effect,所以當我們在計算 MD 時,比起用 robust estimators (以一般的定義計算 ),有些人就提出一些方法來改善這樣的問題。例如:
假設我們從一個 distribution 的 population 中取 個 observations,並且想要從這 個 data points 找出 outliers。
這些 data points 為 -dimensional,也就是每個 data point 為一個 的向量。
圖中的左上角為 scatterplot。
圖下方的 values 和 values 則是我們根據這 個點的 值,拆開來看得到的 box plot。我們可以看到兩個圖的 box 兩塊都差不多大、兩端的 whiskers 也都差不多長,因此我們基本上沒辦法像 univariate 時用這種方式來找出 outliers。
可是回過頭來看 scatterplot,我們會發現右下角那幾個點應該是 outliers。這代表說在 multivariate 的情況下,我們沒辦法把各個 variable 拆開來看來找出 outliers,而必須要考量 variables 之間的關係。
因此,如果要把 variables 之間的關係也考慮進去,那就是用右上角的方式:
圖中每個 為我們原本的 data points,我們以 MD 作為 distance metric,四個顏色的 ellipsoids 分別是當 MD 為四個 constant 時的情形,這四個值分別為 chi-square distribution 的 以及 adjusted quantiles。
為什麼這裡突然冒出一個 chi-square distribution 是因為,當我們的 data 是 normally distributed 時,這些 data 的 MD 分佈大約是 chi-square distributed with -degrees of freedom( variable 數)
詳細見下圖說明:
- Note: quantile percentile quartile
由 chi-square distribution 的 pdf()中我們可以看見,當我們的 data 是 noramlly distributed 時,比較大的 MD 值發生的機率是比較小的,這一樣也代表說如果我們有某個 observation MD 算出來比較大,那它就比較有可能是 outlier。
因此我們就根據算出來的 以及另一個 adjusted quantile,畫出了左下角的那四個 threshold,淺藍色的範圍代表有 的 observations 應該要落在裡面、深藍色代表 的 observations 應該要落在裡面⋯⋯。
adjusted quantile 怎麼取的我沒有特別看,有興趣可參考論文的 section 。
關於 multivariate outliers 就大概講到這裡,以上都非課本內容,所以如果有錯誤或疑問歡迎再留言告訴我!