實(shí)戰(zhàn) | 異常檢測(cè)與多場(chǎng)景應(yīng)用
異常檢測(cè)概述:
異常檢測(cè)(anomaly detection),也叫異常分析(outlier analysis或者outlier detection)或者離群值檢測(cè),在工業(yè)上有非常廣泛的應(yīng)用場(chǎng)景:
金融業(yè):從海量數(shù)據(jù)中找到“欺詐案例”,如信用卡反詐騙,識(shí)別虛假信貸
網(wǎng)絡(luò)安全:從流量數(shù)據(jù)中找到“侵入者”,識(shí)別新的網(wǎng)絡(luò)入侵模式
在線零售:從交易數(shù)據(jù)中發(fā)現(xiàn)“惡意買(mǎi)家”,比如惡意刷評(píng)等
生物基因:從生物數(shù)據(jù)中檢測(cè)“病變”或“突變”
同時(shí)它可以被用于機(jī)器學(xué)習(xí)任務(wù)中的預(yù)處理(preprocessing),防止因?yàn)樯倭慨惓|c(diǎn)存在而導(dǎo)致的訓(xùn)練或預(yù)測(cè)失敗。換句話來(lái)說(shuō),異常檢測(cè)就是從茫茫數(shù)據(jù)中找到那些“長(zhǎng)得不一樣”的數(shù)據(jù)。
但檢測(cè)異常過(guò)程一般都比較復(fù)雜,而且實(shí)際情況下數(shù)據(jù)一般都沒(méi)有標(biāo)簽(label),我們并不知道哪些數(shù)據(jù)是異常點(diǎn),所以一般很難直接用簡(jiǎn)單的監(jiān)督學(xué)習(xí)。異常值檢測(cè)還有很多困難,如極端的類(lèi)別不平衡、多樣的異常表達(dá)形式、復(fù)雜的異常原因分析等。
異常值不一定是壞事。例如,如果在生物學(xué)中實(shí)驗(yàn),一只老鼠沒(méi)有死,而其他一切都死,那么理解為什么會(huì)非常有趣,這可能會(huì)帶來(lái)新的科學(xué)發(fā)現(xiàn)。因此,檢測(cè)異常值非常重要。
Python Outlier Detection(PyOD)是一個(gè)Python異常檢測(cè)工具庫(kù),除了支持Sklearn上支持的四種模型外,還額外提供了很多模型如:
傳統(tǒng)異常檢測(cè)方法:HBOS、PCA、ABOD和Feature Bagging等,基于深度學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)的異常檢測(cè):自編碼器(keras實(shí)現(xiàn)) ,其主要亮點(diǎn)包括:
1.包括近20種常見(jiàn)的異常檢測(cè)算法,比如經(jīng)典的LOF/LOCI/ABOD以及最新的深度學(xué)習(xí)如對(duì)抗生成模型(GAN)和集成異常檢測(cè)(outlier ensemble)
2.所有算法共享通用的API,方便快速調(diào)包,同時(shí)支持Python2和3,支持多種操作系統(tǒng):windows,macOS和Linux
3.代碼經(jīng)過(guò)了重重優(yōu)化,大部分模型通過(guò)了并行與即時(shí)編譯。使用JIT和并行化(parallelization)進(jìn)行優(yōu)化,加速算法運(yùn)行及擴(kuò)展性(scalability),可以處理大量數(shù)據(jù)
4.提供了詳細(xì)的文檔以及大量例子,方便快速上手

典型算法介紹:
Angle-Based Outlier Detection(ABOD)
它考慮每個(gè)點(diǎn)與其鄰居之間的關(guān)系,它沒(méi)有考慮這些鄰居之間的關(guān)系,其加權(quán)余弦分?jǐn)?shù)與所有鄰居的方差可視為偏離分?jǐn)?shù)
ABOD在多維數(shù)據(jù)上表現(xiàn)良好
PyOD提供兩種不同版本的ABOD:
最大:使用第k個(gè)鄰居的距離作為離群值
均值:使用所有k個(gè)鄰居的平均值作為離群值得分
中位數(shù):使用與鄰居的距離的中位數(shù)作為離群值得分

