異常檢測(cè)(也稱為離群點(diǎn)檢測(cè))是檢測(cè)異常實(shí)例的任務(wù),異常實(shí)例與常規(guī)實(shí)例非常不同。這些實(shí)例稱為異;螂x群值,而正常實(shí)例稱為內(nèi)部值。
異常檢測(cè)可用于多種應(yīng)用,例如:
① 欺詐識(shí)別
② 檢測(cè)制造中的缺陷產(chǎn)品
③ 數(shù)據(jù)清理——在訓(xùn)練另一個(gè)模型之前從數(shù)據(jù)集中去除異常值。
你可能已經(jīng)注意到,一些不平衡分類的問題也經(jīng)常使用異常檢測(cè)算法來解決。例如,垃圾郵件檢測(cè)任務(wù)可以被認(rèn)為是一個(gè)分類任務(wù)(垃圾郵件比普通電子郵件少得多),但是我們可以用異常檢測(cè)的方法實(shí)現(xiàn)這個(gè)任務(wù)。
一個(gè)相關(guān)的任務(wù)是奇異值檢測(cè)(Novelty Detection)。它與異常檢測(cè)的不同之處在于,假設(shè)該算法是在干凈的數(shù)據(jù)集(沒有異常值)上訓(xùn)練的。它被廣泛應(yīng)用于在線學(xué)習(xí)中,當(dāng)需要識(shí)別一個(gè)新實(shí)例是否是一個(gè)離群值時(shí)。
另一個(gè)相關(guān)任務(wù)是密度估計(jì)。它是估計(jì)數(shù)據(jù)集生成的隨機(jī)過程的概率密度函數(shù)的任務(wù)。密度估計(jì)通常用于異常檢測(cè)(位于低密度區(qū)域的實(shí)例很可能是異常)和數(shù)據(jù)分析。通常使用基于密度(高斯混合模型或 DBSCAN)的聚類算法來解決。
統(tǒng)計(jì)方法
檢測(cè)離群值最簡(jiǎn)單的方法是嘗試統(tǒng)計(jì)方法,這是很久以前開發(fā)出來的。其中最流行的一種方法被稱為離群值檢測(cè)Tukey方法(或四分位數(shù)距離IQR) 。
它的本質(zhì)是計(jì)算百分位數(shù)和四分位數(shù)之間的范圍。位于Q1-1.5 * IQR之前和Q3 + 1.5 * IQR之后的數(shù)據(jù)點(diǎn)被認(rèn)為是異常值。下面你可以看到一個(gè)使用人的身高數(shù)據(jù)集的例子。高度低于54.95英寸(139厘米)和高于77.75英寸(197厘米)被認(rèn)為是異常值。
這種和其他統(tǒng)計(jì)方法(用于檢測(cè)異常值的 z-score 方法等)通常用于數(shù)據(jù)清理。
聚類和降維算法
另一種簡(jiǎn)單、直觀且通常有效的異常檢測(cè)方法是使用一些聚類算法(如高斯混合模型和 DBSCAN)來解決密度估計(jì)任務(wù)。那么,任何位于低密度區(qū)域的實(shí)例都可以被認(rèn)為是異常,我們只需要設(shè)置一些密度閾值。
此外,可以使用任何具有 inverse_transform() 方法的降維算法。這是因?yàn)楫惓5闹亟ㄕ`差總是比正常實(shí)例的重建誤差大得多。
孤立森林和 SVM
一些監(jiān)督學(xué)習(xí)算法也可用于異常檢測(cè),其中最流行的兩種是孤立森林和 SVM。這些算法更適合奇異值檢測(cè),但通常也適用于異常檢測(cè)。
孤立森林算法構(gòu)建了一個(gè)隨機(jī)森林,其中每個(gè)決策樹都是隨機(jī)生長的。每走一步,這片森林就會(huì)隔離越來越多的點(diǎn),直到所有點(diǎn)都變得孤立。由于異常位于遠(yuǎn)離通常數(shù)據(jù)點(diǎn)的位置,因此它們通常比正常實(shí)例以更少的步驟被孤立。該算法對(duì)于高維數(shù)據(jù)表現(xiàn)良好,但需要比 SVM 更大的數(shù)據(jù)集。
SVM(在我們的例子中是一類 SVM)也廣泛用于異常檢測(cè)。內(nèi)核化 SVM 可以構(gòu)建一個(gè)有效的“限制超平面”,它將正常點(diǎn)與異常點(diǎn)分開。像任何 SVM 修改一樣,它可以很好地處理高維或稀疏數(shù)據(jù),但僅適用于中小型數(shù)據(jù)集。
局部異常因子
局部異常值因子 (LOF) 算法基于異常位于低密度區(qū)域的假設(shè)。它不只是設(shè)置密度閾值(就像我們可以用 DBSCAN 做的那樣),而是將某個(gè)點(diǎn)的密度與其最近鄰居的 k 的密度進(jìn)行比較。如果這個(gè)特定點(diǎn)的密度比它的鄰點(diǎn)低得多(這意味著它離它們很遠(yuǎn)),它被認(rèn)為是一個(gè)異常。
該算法既可用于異常檢測(cè),也可用于奇異值檢測(cè)。由于其計(jì)算簡(jiǎn)單且質(zhì)量好,會(huì)被經(jīng)常使用。
最小協(xié)方差行列式
最小協(xié)方差行列式(MCD 或其修改型 Fast-MCD)可用于異常值檢測(cè),尤其是在數(shù)據(jù)清理的時(shí)候。它假設(shè)內(nèi)點(diǎn)是從單個(gè)高斯分布中生成的,而離群點(diǎn)不是從這個(gè)分布中生成的。由于許多數(shù)據(jù)具有正態(tài)分布(或可以簡(jiǎn)化為正態(tài)分布),因此該算法通常表現(xiàn)良好。在 sklearn 中EllipticEnvelope類就是它的實(shí)現(xiàn)。
如何選擇異常檢測(cè)算法?
如果你需要清理數(shù)據(jù)集,你應(yīng)該首先嘗試經(jīng)典的統(tǒng)計(jì)方法,比如 Tukey Method for Outlier Detection。如果知道數(shù)據(jù)分布是高斯分布 則可以使用Fast-MCD,。
如果你做異常檢測(cè)不是為了數(shù)據(jù)清理,首先試試簡(jiǎn)單快速的LOF。如果它不能很好地工作(或者如果你出于某種原因需要分離超平面)——根據(jù)你的任務(wù)和數(shù)據(jù)集嘗試其他算法:
用于稀疏高維數(shù)據(jù)的單類SVM 或用于連續(xù)高維數(shù)據(jù)的孤立森林
如果可以假設(shè)數(shù)據(jù)是由多個(gè)高斯分布的混合生成的,可以試試高斯混合模型