基於統計的異常檢測方法S-H-ESD[twitter]

2021-01-07 網易

  

  by:RandomWalk 阿里巴巴 算法工程師

  

Automatic Anomaly Detection in the Cloud Via Statistical Learning [1]

  原文主要介紹了twitter雲系統中利用統計學習實現異常檢測的自動化,下面直接介紹相關方法。

  Grubbs Test

  表示一組時間序列,Grubbs test 檢測單變量數據集的「最異常點「。前提假設數據分布是正態的。Grubbs test假設定義如下:

  :數據集中沒有異常點

  : 數據集中有至少一個異常點

  Grubbs『 test 統計量定義如下

  其中 和 分別表示數據集的均值和方差。對於雙邊檢驗,當滿足式(2)時,以顯著性水平 拒絕原假設

  其中 表示自由度 ,顯著性水平 的 分布的上臨界值。對於單邊檢驗,變為[2]。但是缺點是數據集中存在多個異常點則不適合,因為 分布表不會更新。下面介紹多異常點的檢測算法ESD(Extreme Studentized Deviate)[3]。

  ESD

  ESD可以檢測時間序列數據的多異常點。需要指定異常點比例的upper bound是k,最差的情況是至多49.9%。實際中,數據集的異常比例一般不超過5%。ESD假設定義如下:

  :數據集中沒有異常點

  : 數據集中有至多 個異常點

  檢驗統計量和臨界值分別定義如下

  其中 ,ESD會重複 次檢驗,當 時,則有至少 個異常點。對於Grubbs Test和ESD的區別[4],主要兩點:一是ESD會根據不同的離群值調整臨界值;二是ESD一直會檢驗 個離群點,而Grubbs test可能會提前結束檢驗(當「最異常點」檢驗時 成立)。比如下面Rosner paper中的數據,設置 ,第一次和第二次檢驗接受原假設,由於剔除前兩個值之後臨界值 的變化,在第三次檢驗拒絕了原假設,因此最終得到三個異常點。

  
前10離群點中第三個點檢測為異常,則至少有3個異常點 S-ESD

  考慮ESD有如下兩個限制:一是對於具有季節性的時間序列異常不能很好的識別,下圖1中很多周期性變化的點並非異常點;二是多峰分布的數據點,一些低峰異常數據點不能被識別出來,如圖2。

  
圖1 時間序列圖

  

  圖2 數據分布圖

  因此介紹S-ESD(Seasonal-ESD),Algorithm 1 中主要的不同是對時間序列數據進行STL分解,剔除其中的季節項,中位數做為趨勢項(STL Variant),對殘差項進行ESD檢驗。STL variant不同於STL主要考慮圖3的情形,(a)中的STL分解得到的殘差項,其中紅色陰影部分存在spurious anomalies(這些點在原時間序列中並非異常)。

  

  

  圖3 STL和變形STL分解對比圖

  (局部異常和全局異常可識別性)S-ESD通過分解之後對殘差項進行ESD檢驗,不僅可檢驗全局異常點,而且可以檢驗出如圖4的局部異常點,這些異常點在原始數據中介於季節項的最大值和最小值之間,直接對原始數據ESD檢驗則無法識別。

  
圖4 局部異常和全局異常對比 S-H-ESD

  但是S-ESD也有局限性,就是對於數據中含有異常點數量較多時,很難識別較多的異常點。因此下面介紹Seasonal Hybrid ESD (S-H-ESD),首先介紹MAD。

  MAD

  考慮到ESD的檢驗統計量中的均值和方差對於過大的異常值較為敏感,於是選擇利用MAD(Median Absolute Deviation)進行代替,如下

  更一般的可以使用 或者 。

  因此S-H-ESD相比S-ESD,是把ESD中的均值方差計算的統計量替換成MAD,圖5比較了兩種方法的效果,S-H-ESD對於異常點的識別率更高,同時由於計算中位數,時間複雜度也相對會更高。

  
圖5 S-ESD和S-H-ESD對比 python實現

  推薦pyculiarity,原文的github地址是R的實現。

  Pyculiarity是twitter時序數據異常檢測AnomalyDetection[1]的python實現版本。主要是基於ESD(Extreme Studentized Deviate test)原理的異常檢測算法。ESD的主要思想就是檢驗最大值、最小值偏離均值的程度是否為異常,具體可參考[2]。通過閱讀pyculiarity的源碼[3],了解其主要包含兩個方法:

  

主要參數:

  df:包含時間和值的DataFrame

  

  max_anoms=0.10:發現異常數據的量(佔總體的百分之多少)

  

  direction=』pos』:』pos』是發現數據突增點,』neg』是發現數據突降點,』both』是包含突增與突降

  

  alpha=0.05:接受或拒絕顯著性水平,即p-value

  

  only_last=None:僅再時間序列最後1天(』day』)或1小時(』hr』)尋找異常

  

  threshold=None:僅報告高於指定閾值的正向異常。選項有:

  

  med_max:每日最大值的中位數

  

  p95:每日最大值的95%

  

  p99:每日最大值的99%

  

  e_value=False:返回數據中新增一列期望值

  

  longterm=False:當時間序列超過一個月時,設置此值,

  

  piecewise_median_period_weeks=2:當設置longterm後需要設置該值,設置滑動窗口的大小,注意這裡需要>=2

  

  plot=False:輸出圖像,已經不支持

  

  y_log=False:對Y軸值取對數

  

  xlabel = 」:添加輸出到圖形的X軸標籤

  

  ylabel = 『count』:添加輸出到圖形的Y軸標籤

  

  title=None:輸出圖像的標籤

  

  verbose=False:是否輸出debug信息

  

示例代碼:

//data為包含[時間,數值]兩列的dataframe
results=detect_ts(data,max_anoms=0.4,alpha=0.05,direction='both',only_last=None,longterm=True, piecewise_median_period_weeks=2)
//結果可視化
data['timestamp'] = pd.to_datetime(data['timestamp'])
data.set_index('timestamp', drop=True)

  f, ax = plt.subplots(2, 1, sharex=True)
ax[0].plot(data['timestamp'], data['value'], 'b')
ax[0].plot(results['anoms'].index, results['anoms']['anoms'], 'ro')
ax[0].set_title('Detected Anomalies')
ax[1].set_xlabel('Time Stamp')
ax[0].set_ylabel('Count')
ax[1].plot(results['anoms'].index, results['anoms']['anoms'], 'b')
ax[1].set_ylabel('Anomaly Magnitude')
plt.show()參考

  

  ^Hochenbaum J, Vallis O S, Kejariwal A. Automatic anomaly detection in the cloud via statistical learning[J]. arXiv preprint arXiv:1704.07706, 2017.

  

  ^Francisco Augusto Alcaraz Garcia. Tests to identify outliers in data series. Pontifical Catholic University of Rio de Janeiro, Industrial Engineering Department, Rio de Janeiro, Brazil, 2012.

  

  ^Bernard Rosner. On the detection of many outliers. Technometrics, 17(2):221–227, 1975.

  

  ^https://www.itl.nist.gov/div898/handbook/eda/section3/eda35h3.htm

  

  ^https://github.com/twitter/AnomalyDetection

  

  

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關焦點

  • 研究人員開發基於圖形的統計方法,可有效檢測車輛通信網絡威脅
    該校助理教授Riadul Islam與其同事,以及密西根大學迪爾本分校(University of Michigan-Dearborn)的研究人員共同開發了一種簡單易行的車輛安全漏洞檢測方法。(圖片來源:https://techxplore.com)目前,在汽車行業中應用最廣泛的車內通信網絡是控制器局網(CAN)。
  • 獲取幾何測量的估計標準偏差(esd)
    原文如下:Get esd's on geometric measurements
  • Ethernet 防雷及 ESD 保護設計
    應用的二極體esd二極體它包括標準的乙太網(10Mbit/s)、快速乙太網(100Mbit/s)和 10G(10Gbit/s)乙太網。它們都符合 IEEE802.3。二極體保護方案一:氣體放電管與esd二極體保護方案一特點:方案選擇第一級使用GDT氣體放電管,將泿湧電流通過開關式氣體放電管洩放到大地,或放電管電極之關的惰性氣體電光弧以熱量形式消除
  • 異常檢測的N種方法,阿里工程師都盤出來了
    背景異常點檢測(Outlier detection),又稱為離群點檢測,是找出與預期對象的行為差異較大的對象的一個檢測過程。這些被檢測出的對象被稱為異常點或者離群點。異常點檢測在生產生活中有著廣泛應用,比如信用卡反欺詐、工業損毀檢測、廣告點擊反作弊等。
  • 基於深度學習的智能網格錯誤數據注入攻擊動態檢測
    我們的時間序列異常檢測器採用卷積神經網絡(CNN)和一個長短期記憶(LSTM)網絡。為了能夠有效地估計系統變量,我們的方法進行觀察數據測量和網絡級特性共同學習系統狀態。該系統在IEEE 39-bus測試系統上進行了測試。實驗分析表明,該深度學習算法能識別傳統狀態估計不良數據檢測檢測不到的異常。
  • 學會五種常用異常值檢測方法,亡羊補牢不如積穀防饑
    選自towardsdatacience作者:Will Badr機器之心編譯參與:韓放、shooting通過鑑別故障來檢測異常對任何業務來說都很重要。本文作者總結了五種用於檢測異常的方法,下面一起來看看吧。什麼是異常/離群點?
  • 《基於微陣列晶片的遺傳性耳聾基因檢測方法》國家標準解讀
    統一規範 填補空白——《基於微陣列晶片的遺傳性耳聾基因檢測方法》國家標準解讀□ 本報記者 楊 蕾5月14日,我國第一部關於遺傳性耳聾基因檢測方法的國家標準——《基於微陣列晶片的遺傳性耳聾基因檢測方法》正式發布
  • 基於離散小波變換的分布式光伏孤島檢測方法
    被動檢測方法通過監測電網的參數,如電壓、電流、頻率等來檢測孤島事件,這種方法易於實現且不影響系統的電能質量,但是存在較大的檢測死區,其檢測精度受閾值的影響較大[7-10]。如果將允許擾動的閾值設置得較低,則會出現錯誤跳閘的問題;如果閾值設置得過高,則可能無法檢測到孤島現象。針對以上問題,本文提出一種基於離散小波變換信號分析的分布式光伏發電孤島檢測方法。
  • 數據科學家必備的5種離群點/異常檢測方法
    當觀察值只是一組數字並且是一維時,很容易識別它,但是當你有數千個觀察值或多維值時,你需要更聰明的方法來檢測這些值。這就是本文將要介紹的內容。為什麼我們關心異常?離群點的檢測是數據挖掘的核心問題之一。數據的不斷擴展和持續增長以及物聯網設備的普及,使我們重新思考我們處理異常的方式,以及通過觀察這些異常情況可以構建的用例。
  • 基於混沌理論的微弱信號檢測的DSP實現
    >理論的微弱信號檢測原理;深入討論其應用於DSP的實用化,構建一個優化的TMS320C6203為核心的真實系統,實時實現基於混沌方法的微北信號檢測。如何檢測這種強噪聲幹擾情況下的微弱信號,是信號處理中的重要研究內容。許多科研工作者已提出了一些有效的處理方法,如基於高增益的寬帶波束形成的微弱信號檢測方法及微弱信號的相干檢測法等,但都存在靈敏度不高或適應性不強的問題。混沌系統對小信號的敏感性及對噪聲的強免疫力,使它在微弱信號檢測中的應用潛力很大。
  • 一種基於人工神經元實時諧波電流數字檢測方法
    摘 要: 本文基於人工神經網絡理論,提出了人工神經元自適應諧波和無功電流、諧波電流數字檢測新方法,實驗結果證明了所提出的方法的正確性及實時性。傳統的檢測方法有Fryze時域分解、槽形濾波器、基於頻域的FFT變換法、用於不平衡三相系統的同步檢測法,這些方法主要的缺點是1)時延較大;2)難以實現,如槽形濾波器法;3)
  • 採用TVS二極體的ESD原理及典型電路
    由於變阻器的箝位電壓太高,他們不能夠提供有效的esd保護。此外,由於變阻器的高電容他們也不能給高速數據線路提供保護。TVS二極體正是為解決此問題而產生的,它已成為保護便攜電子設備的關鍵性技術。   TVS二極體是專門設計用於吸收esd能量並且保護系統免遭esd損害的固態元件。如果應用得當,TVS二極體將限制跨在被保護器件上的電壓剛好高過額定工作電壓,但是卻遠低於破壞閾值電壓。
  • 國家藥監局關於發布基於細胞螢光原位雜交法的人類染色體異常檢測...
    為加強醫療器械產品註冊工作的監督和指導,進一步提高註冊審查質量,國家藥品監督管理局組織制定了《基於細胞螢光原位雜交法的人類染色體異常檢測試劑註冊技術審查指導原則》《呼吸道病毒多重核酸檢測試劑註冊技術審查指導原則》《基於核酸檢測方法的金黃色葡萄球菌和耐甲氧西林金黃色葡萄球菌檢測試劑註冊技術審查指導原則》《沙眼衣原體和/或淋病奈瑟菌核酸檢測試劑註冊技術審查指導原則
  • 關於入侵檢測系統常用的幾種檢測方法
    入侵檢測系統常用的檢測方法有特徵檢測、統計檢測與專家系統。據公安部計算機信息系統安全產品質量監督檢驗中心的報告,國內送檢的入侵檢測產品中95%是屬於使用入侵模板進行模式匹配的特徵檢測產品,其他5%是採用概率統計的統計檢測產品與基於日誌的專家知識庫系產品。
  • 基於RCNN的多層次結構顯著性目標檢測方法
    基於RCNN的多層次結構顯著性目標檢測方法 工程師5 發表於 2018-04-30 20:33:00 近年來,隨著人工智慧技術的迅速發展,傳統汽車行業與信息技術結合
  • 研究基於基因密碼子擴展及新型生物正交反應「S-Click」方法改造...
    10月5日,《德國應用化學》(Angewandte Chemie International Edition)期刊以「Hot Article」的形式發表了中國科學院生物物理研究所王江雲課題組題為S-click reaction for isotropic orientation of oxidases
  • 邁向檢測基於澱粉樣β肽的阿爾茲海默症生物標誌物的通用方法
    或者不如說,這些蛋白質生物標誌物的檢測已經漸漸失去了難度,不再是創新的最前沿方向了。這篇發表於2017-2018年的文章將檢測對象鎖定於脊髓液中特定的澱粉樣肽生物標誌物,並提出一種新穎的基於磁珠的免疫分析方法,其中捕獲嫁接在磁珠上的抗體和檢測抗體可以在單個步驟中同時與單體Aβ 1–40和Aβ 1–42結合,具有不錯的創新意義,發表在Sensors and Actuators B-chemical。
  • 機器學習如何做好分布外異常檢測?谷歌這篇 NeurIPS 2019 論文提出...
    谷歌在 NeurIPS 2019 論文中提出並發布了針對基因組序列 OOD 檢測的現實基準數據集,進而提出一種基於似然比的解決方案,可顯著提高 OOD 檢測的準確性。AI 科技評論將谷歌對該方法的官方解讀編譯如下。深度學習科學家要成功部署機器學習系統,需要系統能夠區分出異常數據或與訓練中使用的數據有顯著差異的數據。
  • 基於平面投影的起重機吊裝碰撞檢測方法
    由於工況的複雜性,為了實現安全吊裝,在規划過程中碰撞檢測成為重要的研究內容。在各種工程建設中,起重機吊裝過程是否與障礙物碰撞決定著施工工程的安全性、可靠性、高效性。因此,研究一種判斷起重機吊裝作業規劃及仿真系統中實時碰撞檢測的可行且高效的計算方法,對吊裝行業的施工具有重要意義。
  • 統計建模的理論和方法
    這種方法可以從整體上診斷實驗分布和理論分布的擬合,而不會過於拘泥於擬合優度檢測的嚴格結果。delta 方法在預測參數統計模型中估計值的漸進性質上起到了重要的作用,但基於delta 方法的漸進理論也可以應用於樣本的預處理和變換(transformation)上。