異常檢測的N種方法,阿里工程師都盤出來了

2020-11-23 51CTO

背景

異常點檢測(Outlier detection),又稱為離群點檢測,是找出與預期對象的行為差異較大的對象的一個檢測過程。這些被檢測出的對象被稱為異常點或者離群點。異常點檢測在生產生活中有著廣泛應用,比如信用卡反欺詐、工業損毀檢測、廣告點擊反作弊等。

異常點(outlier)是一個數據對象,它明顯不同於其他的數據對象。如下圖1所示,N1、N2區域內的點是正常數據。而離N1、N2較遠的O1、O2、O3區域內的點是異常點。


圖1.異常點示例

異常檢測的一大難點是缺少ground truth。常見的方法是先用無監督方法挖掘異常樣本,再用有監督模型融合多個特徵挖掘更多作弊。

近期使用多種算法挖掘異常點,下面從不同視角介紹異常檢測算法的原理及其適用場景,考慮到業務特殊性,本文不涉及特徵細節。

1.時間序列

1.1 移動平均(Moving Average,MA)

移動平均是一種分析時間序列的常用工具,它可過濾高頻噪聲和檢測異常點。根據計算方法的不同,常用的移動平均算法包括簡單移動平均、加權移動平均、指數移動平均。假設移動平均的時間窗口為T,有一個時間序列:


1.1.1 簡單移動平均(Simple Moving Average,SMA)


從上面的公式容易看出可以用歷史的值的均值作為當前值的預測值,在序列取值隨時間波動較小的場景中,上述移動均值與該時刻的真實值的差值超過一定閾值則判定該時間的值異常。

適用於:

a.對噪聲數據進行平滑處理,即用移動均值替代當前時刻取值以過濾噪聲;

b.預測未來的取值。

1.1.2 加權移動平均(Weighted Moving Average, WMA)

由於簡單移動平均對窗口內所有的數據點都給予相同的權重,對近期的***數據不夠敏感,預測值存在滯後性。按著這個思路延伸,自然的想法就是在計算移動平均時,給近期的數據更高的權重,而給窗口內較遠的數據更低的權重,以更快的捕捉近期的變化。由此便得到了加權移動平均和指數移動平均。


加權移動平均比簡單移動平均對近期的變化更加敏感,加權移動平均的滯後性小於簡單移動平均。但由於僅採用線性權重衰減,加權移動平均仍然存在一定的滯後性。

1.1.3 指數移動平均(Exponential Moving Average, EMA)

指數移動平均(Exponential Moving Average, EMA)和加權移動平均類似,但不同之處是各數值的加權按指數遞減,而非線性遞減。此外,在指數衰減中,無論往前看多遠的數據,該期數據的係數都不會衰減到 0,而僅僅是向 0 逼近。因此,指數移動平均實際上是一個無窮級數,即無論多久遠的數據都會在計算當期的指數移動平均數值時,起到一定的作用,只不過離當前太遠的數據的權重非常低。在實際應用中,可以按如下方法得到t時刻的指數移動平均:


其中表示權重的衰減程度,取值在0和1之間。越大,過去的觀測值衰減得越快。

1.2 同比和環比

圖2.同比和環比

同比和環比計算公式如圖2所示。適合數據呈周期性規律的場景中。如:1.監控APP的DAU的環比和同比,以及時發現DAU上漲或者下跌;2.監控實時廣告點擊、消耗的環比和同比,以及時發現變化。當上述比值超過一定閾值(閾值參考第10部分)則判定出現異常。

1.3 時序指標異常檢測(STL+GESD)

STL是一種單維度時間指標異常檢測算法。大致思路是:

(1)先將指標做STL時序分解,得到seasonal,trend,residual成分,如圖3所示;

(2)用GESD (generalized extreme studentized deviate)算法對trend+residual成分進行異常檢測;

(3)為增強對異常點的魯棒性,將GESD算法中的mean,std等統計量用median, MAD(median absolute deviation)替換;

(4)異常分輸出:abnorm_score = (value - median)/MAD, value為當前值,median為序列的中位數。負分表示異常下跌,正分表示異常上升。


圖3.STL分解示例

2.統計

2.1 單特徵且符合高斯分布

如果變量x服從高斯分布:,則其概率密度函數為:

我們可以使用已有的樣本數據來預測總體中的,計方法如下:

2.2 多個不相關特徵且均符合高斯分布

假設n維的數據集合形如:。

且每一個變量均符合高斯分布,那麼可以計算每個維度的均值和方差,具體來說,對於,可以計算:


如果有一個新的數據,可以計算概率如下:


2.3 多個特徵相關,且符合多元高斯分布

假設n維的數據集合,且每一個變量均符合高斯分布,可以計算n維的均值向量的協方差矩陣:


如果有一個新的數據,可以計算概率:

2.4 馬氏距離(Mahalanobis distance)

對於一個多維列向量的數據集合D,假設是均值向量,那麼對於數據集D中的任意對象,從到的馬氏距離是:

其中是協方差矩陣。可以對數值進行排序,如果數值過大,那麼就可以認為點是離群點。

2.5 箱線圖

箱線圖算法不需要數據服從特定分布,比如數據分布不符合高斯分布時可以使用該方法。該方法需要先計算***四分位數Q1(25%)和第三四分位數Q3(75%)。令IQR=Q3-Q1,然後算出異常值邊界點Q3+λ*IQR和Q1- λ*IQR,通常λ取1.5(類似於正態分布中的,如下圖4所示:


圖4.箱線圖算法示意圖

3.距離

3.1、基於角度的異常點檢測

圖5.點集和角度

如上圖5所示,現在有三個點X,Y,Z,和兩個向量,如果對任意不同的點Y,Z,變化都較小,則點X是異常點。通過餘弦夾角公式易得角度:


D是點集,則對於任意不同的點,點X的所有角度的方差為:


異常點的上述方差較小。該算法的時間複雜度是,適合數據量N較小的場景。

3.2 基於KNN的異常點檢測

D是點集,則對於任意點,計算其K近鄰的距離之和Dist(K,X)。Dist(K,X)越大的點越異常。時間複雜度是,其中N是數據量的大小。

4.線性方法(矩陣分解和PCA降維)

基於矩陣分解的異常點檢測方法的主要思想是利用主成分分析(PCA)去尋找那些違反了數據之間相關性的異常點。為了找到這些異常點,基於主成分分析的算法會把數據從原始空間投影到主成分空間,然後再從主成分空間投影回原始空間。對於大多數的數據而言,如果只使用***主成分來進行投影和重構,重構之後的誤差是較小的;但是對於異常點而言,重構之後的誤差相對較大。這是因為***主成分反映了正常點的方差,***一個主成分反映了異常點的方差。

假設X是一個p維的數據集合,有N個樣本,它的協方差矩陣是。那麼協方差矩陣就可以分解為:。

其中P是一個維正交矩陣,它的每一列都是的特徵向量。D是一個維對角矩陣,包含了特徵值。在圖形上,一個特徵向量可以看成2維平面上的一條線,或者高維空間裡面的一個平面。特徵向量所對應的特徵值反映了這批數據在這個方向上的拉伸程度。通常情況下,將特徵值矩陣D中的特徵值從大到小的排序,特徵向量矩陣P的每一列也進行相應的調整。

數據集X在主成分空間的投影可以寫成Y=XP,注意可以只在部分的維度上做投影,使用top-j的主成分投影之後的矩陣為:。

其中是矩陣P的前j列,也就是說是一個維的矩陣。是矩陣Y的前j列,是一個維的矩陣。按同樣的方式從主成分空間映射到原始空間,重構之後的數據集合是。

其中是使用top-j的主成分重構之後的數據集,是一個維的矩陣。如圖6所示:

圖6.矩陣變換示意圖

定義數據的異常值分為:

其中表示的是top-j主成分佔所有主成分的比例,特徵值是按照從大到小的順序排列的。因此是遞增的,這就意味著j越大,越多的方差就會被算到中,因為是從 1 到 j 的求和。在這個定義下,偏差***的***個主成分獲得最小的權重,偏差最小的***一個主成分獲得了***的權重1。根據 PCA 的性質,異常點在***一個主成分上有著較大的偏差,因此會有更大的異常分。

5.分布

即對比基準流量和待檢測流量的某個特徵的分布。

5.1 相對熵(KL散度)

相對熵(KL散度)可以衡量兩個隨機分布之間的距離,當兩個隨機分布相同時,它們的相對熵為零,當兩個隨機分布的差別增大時,它們的相對熵也會增大。所以相對熵可以用於比較兩個分布的相似度。設是兩個概率分布的取值,則對應相對熵為。

5.2 卡方檢驗

卡方檢驗通過檢驗統計量來比較期望結果和實際結果之間的差別,然後得出實際結果發生的概率。其中O代表觀察值,E代表期望值。這個檢驗統計量提供了一種期望值與觀察值之間差異的度量辦法。***根據設定的顯著性水平查找卡方概率表來判定。

6.樹(孤立森林)

圖7.iForest檢測結果

孤立森林(Isolation Forest)假設我們用一個隨機超平面來切割數據空間, 每切一次便可以生成兩個子空間。接著繼續用一個隨機超平面來切割每個子空間,循環下去,直到每個子空間裡面只有一個數據點為止。那些密度很高的簇是需要被切很多次才能讓子空間中只有一個數據點,但是那些密度很低的點的子空間則很快就被切割成只有一個數據點。如圖7所示,黑色的點是異常點,被切幾次就停到一個子空間;白色點為正常點,白色點聚焦在一個簇中。孤立森林檢測到的異常邊界為圖7中紅色線條,它能正確地檢測到所有黑色異常點。

如圖8所示,用iForest切割4個數據,b和c的高度為3,a的高度為2,d的高度為1,d***被孤立,它最有可能異常。


圖8.iForest切割過程

7.圖

7.1 ***聯通圖

在無向圖G中,若從頂點A到頂點B有路徑相連,則稱A和B是連通的;在圖G中存在若干子圖,其中每個子圖中所有頂點之間都是連通的,但不同子圖間不存在頂點連通,那麼稱圖G的這些子圖為***連通子圖。

如圖9所示,device是設備id,mbr是會員id,節點之間有邊表示設備上有對應的會員登錄過,容易看出device_1、device_2、device_3、device_4是同人,可以根據場景用於判斷作弊,常用於挖掘團夥作弊。

圖9.***聯通圖結果

***聯通圖的前提條件是每條邊必須置信。適用場景:找所有連通關係。當數據中存在不太置信的邊時,需要先剔除髒數據,否則會影響***聯通圖的效果。

7.2 標籤傳播聚類

標籤傳播圖聚類算法是根據圖的拓撲結構,進行子圖的劃分,使得子圖內部節點的連接較多,子圖之間的連接較少。標籤傳播算法的基本思路是節點的標籤依賴其鄰居節點的標籤信息,影響程度由節點相似度決定,通過傳播迭代更新達到穩定。圖10中的節點經標籤傳播聚類後將得2個子圖,其中節點1、2、3、4屬於一個子圖,節點5、6、7、8屬於一個子圖。


圖10.標籤傳播聚類算法的圖結構

標籤傳播聚類的子圖間可以有少量連接。適用場景:節點之間「高內聚低耦合」。圖10用***聯通圖得1個子圖,用標籤傳播聚類得2個子圖。

8.行為序列(馬爾科夫鏈)

如圖11所示,用戶在搜尋引擎上有5個行為狀態:頁面請求(P),搜索(S),自然搜索結果(W),廣告點擊(O),翻頁(N)。狀態之間有轉移概率,由若干行為狀態組成的一條鏈可以看做一條馬爾科夫鏈。

圖11.用戶行為狀態圖

統計正常行為序列中任意兩個相鄰的狀態,然後計算每個狀態轉移到其他任意狀態的概率,得狀態轉移矩陣。針對每一個待檢測用戶行為序列,易得該序列的概率值,概率值越大,越像正常用戶行為。

9.有監督模型

上述方法都是無監督方法,實現和理解相對簡單。但是由於部分方法每次使用較少的特徵,為了全方位攔截作弊,需要維護較多策略;另外上述部分方法組合多特徵的效果取決於人工經驗。而有監督模型能自動組合較多特徵,具備更強的泛化能力。

9.1 機器學習模型GBDT

樣本:使用前面的無監督方法挖掘的作弊樣本作為訓練樣本。如果作弊樣本仍然較少,用SMOTE或者GAN生成作弊樣本。然後訓練GBDT模型,用轉化數據評估模型的效果。

9.2 深度學習模型Wide&Deep

Wide&Deep通過分別提取wide特徵和deep特徵,再將其融合在一起訓練,模型結構如圖12所示。wide是指高維特徵和特徵組合的LR。LR高效、容易規模化(scalable)、可解釋性強。出現的特徵組合如果被不斷加強,對模型的判斷起到記憶作用。但是相反的泛化性弱。

deep則是利用神經網絡自由組合映射特徵,泛化性強。deep部分本質上挖掘一些樣本特徵的更通用的特點然後用於判斷,但是有過度泛化的風險。

算法通過兩種特徵的組合去平衡記憶(memorization)和泛化( generalization)。

為了進一步增加模型的泛化能力,可以使用前面的無監督方法挖掘的作弊樣本作為訓練樣本,訓練Wide&Deep模型識別作弊。

圖12.Wide&Deep模型

10.其他問題

10.1 常用選擇閾值的思路

上述各種方法都需要計算異常閾值,可以用下述思路先選閾值,再用轉化數據驗證該閾值的合理性。

a.無監督方法:使用分位點定閾值、找歷史數據的分布曲線的拐點;

b.有監督模型:看驗證集的準召曲線

10.2 非高斯分布轉高斯分布

有些特徵不符合高斯分布,那麼可以通過一些函數變換使其符合高斯分布,以便於使用上述統計方法。常用的變換函數:,其中c為非負常數;

,c為0-1之間的一個分數。

參考文獻:

[1] Charu C, Aggarwal, et al. Outlier Analysis Second Edition, Springer.2016

[2] Varun Chandola, Arindam Banerjee, et al. Anomaly Detection: A survey,ACM Computing Surveys. 2009

[3] Kalyan Veeramachaneni, Ignacio Arnaldo, et al. AI2: Training abig data machine to defend, In Proc. HPSC and IDS. 2016

[4] Liu, Fei Tony, Kai Ming Ting, and Zhi-Hua Zhou, et al. Isolationforest, ICDM. 2008

【編輯推薦】

【責任編輯:

武曉燕

TEL:(010)68476606】

點讚 0

相關焦點

  • 數據科學家必備的5種離群點/異常檢測方法
    字幕組雙語原文:數據科學家必備的5種離群點/異常檢測方法英語原文:5 Ways to Detect Outliers/Anomalies That Every Data Scientist Should Know
  • 學會五種常用異常值檢測方法,亡羊補牢不如積穀防饑
    選自towardsdatacience作者:Will Badr機器之心編譯參與:韓放、shooting通過鑑別故障來檢測異常對任何業務來說都很重要。本文作者總結了五種用於檢測異常的方法,下面一起來看看吧。什麼是異常/離群點?
  • 基於統計的異常檢測方法S-H-ESD[twitter]
    原文主要介紹了twitter雲系統中利用統計學習實現異常檢測的自動化,下面直接介紹相關方法。但是缺點是數據集中存在多個異常點則不適合,因為 分布表不會更新。下面介紹多異常點的檢測算法ESD(Extreme Studentized Deviate)[3]。  ESD  ESD可以檢測時間序列數據的多異常點。需要指定異常點比例的upper bound是k,最差的情況是至多49.9%。實際中,數據集的異常比例一般不超過5%。
  • 用於異常檢測的幾種圖劃分算法
    在安全領域,「圖分析」廣泛應用在帳戶交易異常、不同事件關聯等各種場景下。與其他機器學習算法類比較, 其特有的優點在於分析方法符合人的思維方式,分析過程能直觀地可視化。
  • 這10道 Java 測試題,據說阿里P7的正確率只有50%
    據說這是一套阿里Java工程師答題正確率只有50%的題目,由泰山版《Java開發手冊》作者孤盡親自出題,來測測憑藉你的Java基礎寫下答案,看看你能對幾題?題目一: float a = 0.125f; double b = 0.125d; System.out.println((a - b) == 0.0); 代碼的輸出結果是什麼?
  • 為管道「做CT」 無損檢測工程師張亮是戴安全帽的「工業醫生」
    浙江在線12月11日訊(記者 李華 共享聯盟鎮海站 倪寅初 羅婷婷 李潔)「這套技術應用後,檢測人員就不用鑽大悶罐了,原油儲罐這些密封容器都可以實現無人化檢測。」近日,一場大型儲罐數字射線自動檢測裝置設計方案的研討會在寧波舉行,大型儲罐無人化檢測,鎮海區蛟川街道寧波恆信工程檢測有限公司工程師張亮的這一設想,正在逐步變成現實。
  • 圖文解析智能電網中的分布式電壓接線異常在線檢測方法
    但是,應該看到,由於使用廣泛,該基礎系統由於各種原因,在運行過程中常常會發生相序接反、相位接錯、接線不緊或漏電燒保險絲造成的缺相等異常現象,對於此類缺陷,頻繁發生,但往往由於環境的分散、用戶不夠專業等各種情況,耽誤了發現的時間,影響了供電質量、延誤了正常用電。對電力系統和用戶來說都產生了負面的影響。
  • 諧波及無功電流檢測方法對比分析
    目前文獻已報導運行的三相APF中所使用的幾種諧波電流檢測方法,除了各自存在的難以克服的缺陷外,共同存在的問題是,由於是開環檢測系統,故對元件參數和系統的工作狀況變化依賴性都比較大,且都易受電網電壓畸變的影響。對單相電路的諧波和無功電流的檢測還存在實時性較差的缺點。
  • 阿里王堅:真正的理想主義,都是拿命來填!
    今天,杭州已經有5萬個交通攝像頭充當「眼睛」來採集車流數據,通過人工智慧方法處理後,就可以智能調控紅綠燈,改善交通狀況。看到未來的似乎不止他一個,人工智慧是一個熱鬧的場域,大家一擁而上。王堅有他慣有的執拗堅持,他看到了,還要自己做出來。有位業內資深媒體人說過,王堅是中國近10年最成功的CTO,帶領一個全新的技術團隊做了一個全新的業務,現在到了千億的市值。
  • 大家都是阿里P6,有什麼不一樣
    業內人士都知道,現在阿里很多社招的崗位,一般要求都是P7起,也就是XX專家,P6以下的職位一般是校招或者用外包的形式來搞定(當然也不是絕對,最近我認識的字節和愛奇藝的小夥伴就收到過阿里P6的offer,然而,他們不約而同的拒掉了)。為什麼阿里發出來的P6 offer就這麼被嫌棄?
  • 頻譜檢測的方法和原理詳細介紹
    以檢測類型劃分,可分為信號存在性檢測和信號覆蓋範圍檢測兩類;以檢測節點個數劃分,可分為單節點檢測和多節點聯合檢測;以檢測方法劃分,主要分為匹配濾波、能量檢測、周期特性檢測三類[23]。總結歸納各種方法如圖所示:
  • 振動的檢測方法與監測方法
    振動檢測是針對旋轉設備的各種預測性維修技術中的核心部分,振動檢測具有直接、實時和故障類型覆蓋範圍廣的特點。其它預測性維修技術:如紅外熱像、油液分析、電氣診斷等則是振動檢測技術的有效補充。振動監測方法一臺設計合理的機器,其固有振級也很低。
  • 犀牛智造:出身阿里,過於低調,曾被扣上野雞帽子,連人都招不到
    說了這話的第2年,阿里就啟動戰略級一號工程,對外保密三年,現在終於見到廬山真面目,一個定名為犀牛智造的顛覆性工廠誕生出來,這是全世界第一座數位化、智能化服裝製造工廠。 新製造切入點:服裝生產 犀牛智造就是對傳統服裝製造業的全面數位化升級改造,它是阿里打造出來的新工廠範本,將引領整個行業的風口。這一全新數位化智能化服裝製造平臺的誕生離不開其創始人伍學剛的傾心打造。
  • 達林頓三極體檢測方法你都了解嗎
    那麼在工作中應當如何進行普通型達林頓三極體和大功率達林頓三極體的檢測?就讓我們來一起看看老工程師是怎麼做的。普通達林頓三極體的檢測通常情況下,我們在使用萬用表對普通達林頓管的檢測包括以下幾種:識別電極、區分pnp或npn類型、估測放大能力。
  • 林州設備檢測-國家認可的第三方檢測機構
    江蘇世通儀器檢測服務有限公司專門從事產品檢測和儀器校準的第三方公正實驗室。種:符合強制檢定條件的設備,可免費檢定。第二種:有具體參數設置或要求的,如電熱鼓風乾燥箱、水浴鍋、馬弗爐、溫溼度表等,適合校準。第三種:電子天平、酸度計、氣相色譜、液相色譜等設備,可選擇檢定,確定整機性能。也可選擇校準,自行根據檢定規程判斷設備是否合格。
  • 阿里王堅當選院士:所有的理想主義,都是拿命來填!
    所以,這又是一次沒什麼可借鑑,對成型方法挑戰的「創新」。最簡單的,他說,世界上最遙遠的距離是紅綠燈和交通監控攝像頭的距離。他們在一個杆子上,卻從未通過數據被連接過。他要連接,讓城市看到的都能被數據思考。數據是城市最重要資源,「比土地還要重要」。
  • 幾種常見的空調溫控器的快速檢測方法
    打開APP 幾種常見的空調溫控器的快速檢測方法 發表於 2020-05-01 16:20:00 下面介紹幾種常見的空調溫控器的快速檢測方法。 一、波紋管式或膜片式空調溫控器 1.故障現象:觸點接觸不良或燒毀,造成電路不能接通;觸點頻繁動作起弧粘連,造成電路不能斷;感溫腔內的感溫劑洩漏,造成觸點不能動作而失去控制作用等。
  • 關於入侵檢測系統常用的幾種檢測方法
    入侵檢測系統常用的檢測方法有特徵檢測、統計檢測與專家系統。  特徵檢測   特徵檢測對已知的攻擊或入侵的方式作出確定性的描述,形成相應的事件模式。當被審計的事件與已知的入侵事件模式相匹配時,即報警。原理上與專家系統相仿。其檢測方法上與計算機病毒的檢測方式類似。目前基於對包特徵描述的模式匹配應用較為廣泛。
  • 電容器好壞的幾種常見簡單檢測方法
    打開APP 電容器好壞的幾種常見簡單檢測方法 佚名 發表於 2016-06-24 14:50:53 也是容易損壞的電器元件,在沒有特殊儀表儀器的情況下檢測電容器的好壞,可用以幾種方法:   1、萬用表檢測法   對於O.01μF以上的固定電容器。可用萬用表的R×1k擋直接測試電容器有無充電過程以及有無內部短路或漏電,並可根據指針向右擺動的幅度大小估計出電容的容量。
  • 斐波那契數列的n種方法
    ; 2){return 1}; return fibonacci(n - 1) + fibonacci(n - 2)}2.循環function fibonacci(n) { let num1 = 1; let num2 = 1; let sum = num2; for(let n = 0; n <