前言 在《Python數(shù)據(jù)清洗--類型轉(zhuǎn)換和冗余數(shù)據(jù)刪除》和《Python數(shù)據(jù)清洗--缺失值識(shí)別與處理》文中已經(jīng)講解了有關(guān)數(shù)據(jù)中重復(fù)觀測(cè)和缺失值的識(shí)別與處理,,在本節(jié)中將分享異常值的判斷和處理方法,。 異常值也稱為離群點(diǎn),,就是那些遠(yuǎn)離絕大多數(shù)樣本點(diǎn)的特殊群體,,通常這樣的數(shù)據(jù)點(diǎn)在數(shù)據(jù)集中都表現(xiàn)出不合理的特性,。如果忽視這些異常值,,在某些建模場(chǎng)景下就會(huì)導(dǎo)致結(jié)論的錯(cuò)誤(如線性回歸模型、K均值聚類等),,所以在數(shù)據(jù)的探索過程中,,有必要識(shí)別出這些異常值并處理好它們。 異常值的識(shí)別 通常,,異常值的識(shí)別可以借助于圖形法(如箱線圖,、正態(tài)分布圖)和建模法(如線性回歸、聚類算法,、K近鄰算法),,在本期內(nèi)容中,將分享兩種圖形法,在下一期將分享基于模型識(shí)別異常值的方法,。 箱線圖法 箱線圖技術(shù)實(shí)際上就是利用數(shù)據(jù)的分位數(shù)識(shí)別其中的異常點(diǎn),,該圖形屬于典型的統(tǒng)計(jì)圖形,在學(xué)術(shù)界和工業(yè)界都得到廣泛的應(yīng)用,。箱線圖的形狀特征如下圖所示: 圖中的下四分位數(shù)指的是數(shù)據(jù)的25%分位點(diǎn)所對(duì)應(yīng)的值(Q1),;中位數(shù)即為數(shù)據(jù)的50%分位點(diǎn)所對(duì)應(yīng)的值(Q2);上四分位數(shù)則為數(shù)據(jù)的75%分位點(diǎn)所對(duì)應(yīng)的值(Q3),;上須的計(jì)算公式為Q3+1.5(Q3-Q1),;下須的計(jì)算公式為Q1-1.5(Q3-Q1)。其中,,Q3-Q1表示四分位差,。如果采用箱線圖識(shí)別異常值,其判斷標(biāo)準(zhǔn)是,,當(dāng)變量的數(shù)據(jù)值大于箱線圖的上須或者小于箱線圖的下須時(shí),,就可以認(rèn)為這樣的數(shù)據(jù)點(diǎn)為異常點(diǎn)。 所以,,基于上方的箱線圖,可以定義某個(gè)數(shù)值型變量中的異常點(diǎn)和極端異常點(diǎn),,它們的判斷表達(dá)式如下表所示: 在Python中可以使用matplotlib模塊實(shí)現(xiàn)數(shù)據(jù)的可視化,,其中boxplot函數(shù)就是用于繪制箱線圖的。下面以1700年至1988年太陽黑子數(shù)量的數(shù)據(jù)為例,,利用箱線圖法識(shí)別數(shù)據(jù)中的異常點(diǎn)和極端異常點(diǎn),。具體的代碼如下: # 導(dǎo)入第三方模塊 如上圖所示,,利用matplotlib子模塊pyplot中的boxplot函數(shù)可以非常方便地繪制箱線圖,,其中左圖的上下須設(shè)定為1.5倍的四分位差,右圖的上下須設(shè)定為3倍的四分位差,。從左圖可知,,發(fā)現(xiàn)數(shù)據(jù)集中至少存在5個(gè)異常點(diǎn),它們均在上須之上,;而在右圖中并沒有顯示極端異常點(diǎn),。 通過上圖可以直觀地發(fā)現(xiàn)數(shù)據(jù)中是否存在異常點(diǎn)或極端異常點(diǎn),但無法得知哪些觀測(cè)為異常點(diǎn),,以及這些異常點(diǎn)的具體數(shù)值,。為解決該問題,讀者可以通過下方的代碼實(shí)現(xiàn)查詢:
正態(tài)分布圖法 根據(jù)正態(tài)分布的定義可知,數(shù)據(jù)點(diǎn)落在偏離均值正負(fù)1倍標(biāo)準(zhǔn)差(即sigma值)內(nèi)的概率為68.2%,;數(shù)據(jù)點(diǎn)落在偏離均值正負(fù)2倍標(biāo)準(zhǔn)差內(nèi)的概率為95.4%,;數(shù)據(jù)點(diǎn)落在偏離均值正負(fù)3倍標(biāo)準(zhǔn)差內(nèi)的概率為99.6%。 所以,,換個(gè)角度思考上文提到的概率值,,如果數(shù)據(jù)點(diǎn)落在偏離均值正負(fù)2倍標(biāo)準(zhǔn)差之外的概率就不足5%,它屬于小概率事件,,即認(rèn)為這樣的數(shù)據(jù)點(diǎn)為異常點(diǎn),。同理,如果數(shù)據(jù)點(diǎn)落在偏離均值正負(fù)3倍標(biāo)準(zhǔn)差之外的概率將會(huì)更小,,可以認(rèn)為這些數(shù)據(jù)點(diǎn)為極端異常點(diǎn),。為使讀者直觀地理解文中提到的概率值,可以查看標(biāo)準(zhǔn)正態(tài)分布的概率密度圖,,如下圖所示: 進(jìn)一步,,基于上圖的結(jié)論,可以按照下表中的判斷條件,,識(shí)別出數(shù)值型變量的異常點(diǎn)和極端異常點(diǎn),,如下表所示: 利用正態(tài)分布的知識(shí)點(diǎn),結(jié)合pyplot子模塊中的plot函數(shù)繪制折線圖和散點(diǎn)圖,,并借助于兩條水平參考線識(shí)別異常值或極端異常值,。 接下來以某公司的支付轉(zhuǎn)化率數(shù)據(jù)為例,使用正態(tài)分布的特性識(shí)別數(shù)據(jù)集中的異常點(diǎn)和極端異常點(diǎn),,該數(shù)據(jù)呈現(xiàn)的是2017年第三季度每天的支付轉(zhuǎn)化率,。我們利用如上介紹的plot函數(shù),識(shí)別數(shù)據(jù)中可能存在的異常點(diǎn)或極端異常點(diǎn),。具體代碼如下: # 讀入外部數(shù)據(jù) 如上圖所示,,左圖中的兩條水平線是偏離均值正負(fù)2倍標(biāo)準(zhǔn)差的參考線,,目測(cè)有6個(gè)樣本點(diǎn)落在參考線之外,可以判定它們屬于異常點(diǎn),;而對(duì)于右圖中偏離均值正負(fù)3倍標(biāo)準(zhǔn)差的參考線來說,,僅有1個(gè)樣本點(diǎn)落在參考線之外,即說明該樣本點(diǎn)就是2017年第三季度的唯一極端異常點(diǎn),。
異常點(diǎn) 極端異常點(diǎn) 盡管基于箱線圖的分位數(shù)法和基于正態(tài)分布的參考線法都可以實(shí)現(xiàn)異常值和極端異常值的識(shí)別,但是在實(shí)際應(yīng)用中,,需要有針對(duì)性的選擇,。如果待判斷的變量近似服從正態(tài)分布,建議選擇正態(tài)分布的參考線法識(shí)別異常點(diǎn),,否則使用分位數(shù)法識(shí)別異常點(diǎn),。 結(jié)語 |
|