
在之前的文章中颗胡,我們討論了如何利用單變量和多變量分析的方法來檢測異常值们何。接下來我們將介紹如何利用聚類方法識別多變量情形中的異常值岩遗。
顧名思義扇商,聚類方法就是將特征相似的樣本聚集在同一個(gè)類別中,因此樣本間的相似性是一個(gè)非常重要的概念宿礁,我們需要考慮如何量化樣本間的相似情況案铺。通常情況下,我們用樣本之間的距離遠(yuǎn)近來衡量其相似度窘拯,不同的聚類方法采用不同的距離測度方式來實(shí)現(xiàn)聚類的目標(biāo)红且。我們應(yīng)該著重關(guān)注一個(gè)被廣泛使用的聚類方法——K均值聚類算法。
K均值聚類算法主要是基于兩兩樣本之間的歐式距離涤姊,歐式距離是兩點(diǎn)之間的直線距離。我們還可以采用其他方法——比如馬氏距離嗤放,閔式距離和切比雪夫距離——來度量樣板間的相似性思喊,但是這些方法的缺點(diǎn)是計(jì)算量大、收斂速度較慢次酌。
給定一組樣本x1,x2,…,xn恨课,其中每個(gè)觀測值都是一個(gè)d維的向量,K均值算法的目標(biāo)是在最小化類內(nèi)離差的前提下將這n個(gè)觀測值分成 k(<=n) 組(S={S1,S2,…,Sk})岳服。換句話說剂公,該算法的目標(biāo)函數(shù)如下所示:
其中μi表示第 i 組樣本的均值。
借助上面這個(gè)目標(biāo)函數(shù)吊宋,我們可以更加直觀地介紹K均值算法的計(jì)算過程纲辽。
K均值算法的基本步驟
步驟一:聚類數(shù)目
選擇類別數(shù)目k。這是一個(gè)循環(huán)迭代的過程璃搜,我們無法提前知道應(yīng)該選擇聚成幾個(gè)類別拖吼。我們將用一個(gè)例子來說明如何選擇類別數(shù)目。
步驟二:聚類中心
從樣本中隨機(jī)抽取出k個(gè)點(diǎn)这吻,并將其定義為k個(gè)組的中心吊档。
步驟三:計(jì)算距離
分別計(jì)算所有觀測值到聚類中心的歐式距離,并將其歸到距離最近的中心類別中唾糯。假設(shè)我們有一個(gè)包含100個(gè)觀測值的數(shù)據(jù)集怠硼,我們的目標(biāo)是將其聚成5類。首先我們需要計(jì)算每個(gè)觀測值到5個(gè)中心點(diǎn)的距離移怯,然后從5個(gè)距離中篩選出距離最小值香璃,并將該樣本歸到對應(yīng)的類別中。
步驟四:重新計(jì)算類中心
接下來我們需要重新計(jì)算各個(gè)類別的中心值芋酌。某個(gè)類的中心值等于該類別中所有樣本點(diǎn)的均值增显。因此,如果某個(gè)類別中的樣本點(diǎn)由于步驟三的計(jì)算導(dǎo)致了重分配,那么相應(yīng)的類中心也會隨之改變同云。
步驟五:迭代過程


重復(fù)步驟三和步驟四直到類別中心不再改變?yōu)橹埂?br>
擬合K均值算法前需要記住一個(gè)要點(diǎn)——對變量進(jìn)行標(biāo)準(zhǔn)化處理糖权。比如,你的數(shù)據(jù)集中包含年齡炸站、身高星澳、體重、收入等無法直接比擬的變量旱易,我們需要將其標(biāo)準(zhǔn)化到同一量綱中禁偎。如果數(shù)據(jù)集中的變量單位一致但方差不同,我們也需要事先將其標(biāo)準(zhǔn)化阀坏。數(shù)據(jù)集中的變量方差不相等如暖,這相當(dāng)于對方差小的變量賦予了一個(gè)更大的權(quán)重,因此該算法傾向于對方差大的變量進(jìn)行劃分忌堂。標(biāo)準(zhǔn)化處理可以保證K均值算法同等對待所有的變量盒至。一個(gè)常用的標(biāo)準(zhǔn)化方法是——所有的觀測值減去均值然后除以標(biāo)準(zhǔn)差。
接下來士修,讓我們利用K均值聚類算法來識別數(shù)據(jù)集中的異常值枷遂。假設(shè)數(shù)據(jù)集中某一個(gè)類別的特征完全不同于其他類別,如下表所示:
上表是某個(gè) app 的部分用戶數(shù)據(jù)棋嘲。表中有 5 個(gè)變量酒唉,其中 3 個(gè)數(shù)值變量,2 個(gè)分類變量沸移。分析過程中痪伦,我們將忽略第一列變量。通常情況下阔籽,我們將 OS 變量中的 Android 賦值為 0流妻,iOS 賦值為1。但是從理論上來說笆制,我們并不建議這樣做绅这,因?yàn)閿M合K均值模型需要計(jì)算樣本之間的歐式距離,我們無法很好地量化 Android 用戶和 iOS 用戶之間的距離在辆。
舉個(gè)例子证薇,如果點(diǎn) A 和點(diǎn) B 之間的歐式距離等于 30,點(diǎn) A 和點(diǎn) C 之間的歐式距離等于 8匆篓,那么我們可以推出點(diǎn) A 和點(diǎn) C 更相似浑度。但分類變量不是由數(shù)值構(gòu)成的,而是由枚舉的方式展現(xiàn)出來鸦概,比如“香蕉”箩张、“蘋果”和“橙子”,我們無法計(jì)算這些水果之間的歐式距離,所以我們無法判斷橙子和香蕉哪個(gè)與蘋果更相近先慷∫眩基于這個(gè)原因,我們應(yīng)該采用K眾數(shù)算法來處理分類變量問題论熙,而不是K均值算法福青。
獲取聚類數(shù)目是一個(gè)反復(fù)迭代的過程。為了獲取最佳類別數(shù)目脓诡,我們可以嘗試對所有的樣本分別擬合 2-20 個(gè)類別的模型无午,然后通過評估統(tǒng)計(jì)量的表現(xiàn)情況來選取最佳類別數(shù)目。作為一名分析師祝谚,擬合多少個(gè)類別的模型都是由你決定的宪迟。但需要注意的是,你必須在建模前標(biāo)準(zhǔn)化處理數(shù)據(jù)踊跟。
我們可以利用一些統(tǒng)計(jì)量來評估最佳類別數(shù)目踩验,比如類內(nèi)平方和,類間平方和商玫,方差貢獻(xiàn)比和統(tǒng)計(jì)差異值。本文中主要采用類內(nèi)平方和來選擇最佳類別數(shù)目牡借。
類內(nèi)平方和(wss)


類內(nèi)平方和主要反映同一類別中樣本的同質(zhì)性拳昌,該統(tǒng)計(jì)量通過計(jì)算類中所有點(diǎn)與類中心之間的距離平方和來刻畫聚類效果。加總所有類的類內(nèi)平方和得到所有樣本的總離差平方和(Total wss)钠龙。
上述指標(biāo)是個(gè)相對指標(biāo)而不是絕對指標(biāo)炬藤,也就是說我們需要結(jié)合類別數(shù)目來進(jìn)一步判斷最佳類別數(shù)目。如果我們的最佳類別數(shù)目在 2 和 20 之間碴里,那么我們傾向于選擇具有最小 twss 的類別數(shù)目沈矿。
上圖展現(xiàn)了 twss 隨類別數(shù)目變化的趨勢圖,從圖中可以看出:當(dāng)類別數(shù)目大于4時(shí)咬腋,twss的下降率大大降低羹膳。理論上來說,你會傾向于選擇最小twss所對應(yīng)的類別數(shù)目根竿,但在實(shí)際應(yīng)用中這并不是一個(gè)好的方案陵像;雖然將樣本聚成 19 類時(shí)具有最小的 twss,但是分析這么多類的數(shù)據(jù)非常麻煩寇壳,我們無法達(dá)到聚類的基本要求——類內(nèi)差異小醒颖,類間差異大。綜合多方面信息壳炎,本例中我們應(yīng)該選擇的最佳類別數(shù)目為 4泞歉。你甚至可以比較不同類別數(shù)目模型之間的差異,然后再選取出最佳類別數(shù)目。
上圖中不同顏色的點(diǎn)代表不同類別中的樣本腰耙。其中第 4 類不同于其他三個(gè)類榛丢,它的標(biāo)記顏色為藍(lán)色。
聚類特征





上表給出了每個(gè)類別中觀測值的數(shù)量沟优,其中類別 4 占比最小涕滋,僅為 3.7%。
接下來讓我們看看每個(gè)類別各自的一些特征:
上表不僅給出了每個(gè)類別中各個(gè)變量的均值以及樣本的總體均值和標(biāo)準(zhǔn)差挠阁,同時(shí)還提供了一個(gè)用于衡量類均值與總體均值之間差異的統(tǒng)計(jì)量 Z-score:
其中μ代表總體均值宾肺,σ代表總體標(biāo)準(zhǔn)差。
對每個(gè)數(shù)值型變量來說侵俗,標(biāo)準(zhǔn)差越小锨用,對應(yīng)的 Z-score 越大。Z-score 的符號代表類均值高于或低于總體均值隘谣。
第 4 類的變量值與其他三個(gè)類別相差甚遠(yuǎn)增拥,比如較低的樣本個(gè)數(shù),較高的訪問量寻歧、交易值和 Z-score掌栅。
讓我們也來看看不同類別中分類變量 OS 的差異情況:
從上表中可以看出,第 4 類中 iOS用戶的比例遠(yuǎn)高于其他三組码泛,因此我們可以認(rèn)為第 4 類為異常值猾封。作為一名分析師,我們需要進(jìn)一步探索第 4 類的詳細(xì)情況噪珊,以便于更好地了解異常值的情況晌缘。
總之,我們可以利用聚類方法來識別多變量情形中的異常值痢站。除了K均值算法外還有許多聚類算法可以用于檢測異常值磷箕,但這些已經(jīng)超出了本文的討論范圍。
原文作者: Jacob Joseph
原文鏈接:https://blog.clevertap.com/how-to-detect-outliers-using-parametric-and-non-parametric-methods-part-ii/
譯者:Fibears
?