機器學習看得見Lesson 9— 箱型圖真能看到離群值?試試Letter-value Plot吧(上篇)

施威銘研究室
5 min readDec 30, 2021

--

離群值(Outliers)通常是指那些跟大多數的資料差異很大的少數資料,有一些分析演算法,像是線性迴歸(Linear Regression),並沒有辦法有效處理離群值。因此,在資料預處理(Data Preprocessing)的階段,通常找找看是否有離群值。

找出離群值的方法有很多,之前已經有介紹 DBSCAN 以及 HDOutliers。今天,我們要說明箱型圖(Box Plot)如何找出離群值,以及箱型圖可能的問題。

一、箱型圖

箱型圖的長相如圖一,橘色水平線是資料的中位數(Median),橘色水平線的下方與上方黑色水平線分別是第 1 四分位數(First Quartile)與第 3 四分位數(Third Quartile),也就是說,箱子所包含的資料,就是第 1 四分位數到第 3 四分位數的所有資料。

圖一、箱型圖。

使用箱型圖來判斷資料是否有離群值時,就是看距離箱子很遠的資料有哪些。舉例來說,圖二的箱型圖中,顯然有一筆資料,數值為 10,距離箱子很遙遠,所以是離群值。Python 的 Matplotlib boxplot 預設還會把離群值標示出來,很方便吧!

圖二、含有一個離群值的箱型圖。

二、箱型圖可能的問題

接下來,我們來看看圖三的箱型圖,看起來有一些資料距離箱子滿遠,Python 已經幫我們標示出這些離群值了。

圖三、含有一些離群值的箱型圖。

那些被標示成離群值的資料,真的是離群值嗎?我們將同樣的資料一起畫成直方圖(Histogram)跟箱型圖,結果如圖四。

圖四、同時畫直方圖跟箱型圖。

結果發現,這組資料就是一個非常標準的常態分佈(Normal Distribution)。現在大家看到直方圖了,你還覺得這些資料有這麼多離群值嗎?看起來並不像箱型圖告訴我們的有這麼多離群值吧!

因此可以發現,箱型圖並不一定能夠忠實呈現資料中的離群值,搭配其他圖一起看,才可以避免誤判。

三、Letter-value Plot

為了解決箱型圖的問題,有研究者(Hofmann et al., 2011)提出了改良的箱型圖:Letter-value Plot。概念很簡單,就是多畫幾個箱子。其中,箱子包含的資料越多,箱子越大。我們可以想像把直方圖的該念,融合到箱型圖。讓我們用一張圖,就能取得足夠的資訊。

我們將同樣的資料,改成用 Letter-value Plot 來呈現,結果如圖五。可以發現,如果只看箱型圖的上半部,其實就有點像直方圖吧!

圖五、Letter-value Plot

Letter-value Plot 的繪圖方式也很簡單:

第 1 步:針對全部的資料,用紅色箭頭指的黑色垂直線,把全部資料分成左右各一半。

第 2 步:針對右半邊的資料,我們再用藍色箭頭指的黑色垂直線,把右半邊資料分成左右各一半

第 3 步:重複上述步驟,一直增加箱子把資料分成左右各一半。即可畫完 Letter-value Plot 了。

圖六、Letter-value Plot 的繪圖方式。

使用 Letter-value plot 來觀察同樣的資料,可以發現離群值就很少,應該是比較可信的結果。在 Python 畫 Letter-value plot,可以使用 seaborn boxenplot

讀者可能會有一個疑問:既然多畫幾個箱子可以解決誤判離群值的問題,那到底要畫多少個箱子才合適呢?關於這個問題,需要一連串數學推論,我們留待下週再來說明吧。

參考資料

Hofmann, H., Kafadar, K., and Wickham, H. (2011). Letter-value plots: Boxplots for large data. Technical report, had.co.nz.

關於作者

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.

--

--

施威銘研究室
施威銘研究室

Written by 施威銘研究室

致力開發AI領域的圖書、創客、教具,希望培養更多的AI人才。整合各種人才,投入創客產品的開發,推廣「實作學習」,希望實踐學以致用的理想。

No responses yet