異常檢測演算法
❶ 異常檢測概述
異常檢測(Outlier Detection) ,顧名思義,是識別與正常數據不同的數據,與預期行為差異大的數據。
識別如信用卡欺詐,工業生產異常,網路流里的異常(網路侵入)等問題,針對的是少數的事件。
點異常 :指的是少數個體實例是異常的,大多數個體實例是正常的,例如正常人與病人的健康指標;
上下文異常 :又稱上下文異常,指的是在特定情境下個體實例是異常的,在其他情境下都是正常的,例如在特定時間下的溫度突然上升或下降,在特定場景中的快速信用卡交易;
群體異常 :指的是在群體集合中的個體實例出現異常的情況,而該個體實例自身可能不是異常,例如社交網路中虛假賬號形成的集合作為群體異常子集,但子集中的個體節點可能與真實賬號一樣正常。
有監督 :訓練集的正例和反例均有標簽
無監督 :訓練集無標簽
半監督 :在訓練集中只有單一類別(正常實例)的實例,沒有異常實例參與訓練
統計學方法對數據的正常性做出假定。 它們假定正常的數據對象由一個統計模型產生,而不遵守該模型的數據是異常點。 統計學方法的有效性高度依賴於對給定數據所做的統計模型假定是否成立。
異常檢測的統計學方法的一般思想是:學習一個擬合給定數據集的生成模型,然後識別該模型低概率區域中的對象,把它們作為異常點。
即利用統計學方法建立一個模型,然後考慮對象有多大可能符合該模型。
假定輸入數據集為 ,數據集中的樣本服從正態分布,即 ,我們可以根據樣本求出參數 和 。
典型的如PCA方法,Principle Component Analysis是主成分分析,簡稱PCA。它的應用場景是對數據集進行降維。降維後的數據能夠最大程度地保留原始數據的特徵(以數據協方差為衡量標准)。
PCA的原理是通過構造一個新的特徵空間,把原數據映射到這個新的低維空間里。PCA可以提高數據的計算性能,並且緩解"高維災難"。
這類演算法適用於數據點的聚集程度高、離群點較少的情況。同時,因為相似度演算法通常需要對每一個數據分別進行相應計算,所以這類演算法通常計算量大,不太適用於數據量大、維度高的數據。
基於相似度的檢測方法大致可以分為三類:
集成是提高數據挖掘演算法精度的常用方法。集成方法將多個演算法或多個基檢測器的輸出結合起來。其基本思想是一些演算法在某些子集上表現很好,一些演算法在其他子集上表現很好,然後集成起來使得輸出更加魯棒。集成方法與基於子空間方法有著天然的相似性,子空間與不同的點集相關,而集成方法使用基檢測器來探索不同維度的子集,將這些基學習器集合起來。
常用的集成方法有Feature bagging,孤立森林等。
**feature bagging **:
與bagging法類似,只是對象是feature。
孤立森林 :
孤立森林假設我們用一個隨機超平面來切割數據空間,切一次可以生成兩個子空間。然後我們繼續用隨機超平面來切割每個子空間並循環,直到每個子空間只有一個數據點為止。直觀上來講,那些具有高密度的簇需要被切很多次才會將其分離,而那些低密度的點很快就被單獨分配到一個子空間了。孤立森林認為這些很快被孤立的點就是異常點。
用四個樣本做簡單直觀的理解,d是最早被孤立出來的,所以d最有可能是異常。
在有標簽的情況下,可以使用樹模型(gbdt,xgboost等)進行分類,缺點是異常檢測場景下數據標簽是不均衡的,但是利用機器學習演算法的好處是可以構造不同特徵。
Scikit-learn:
Scikit-learn 是一個python語言的開源機器學習庫。它具有各種分類,回歸和聚類演算法。也包含了一些異常檢測演算法,例如LOF和孤立森林。
官網: https://scikit-learn.org/stable/
PyOD:
1、學習pyod庫基本操作
參考資料:
❷ 動態圖上的異常檢測文獻綜述(2015)
動態圖上的異常檢測任務包括:發現異常的對象、關系、時點。動態圖上的異常檢測與靜態圖上的異常檢測不同的地方在於:
本文首先將異常類型分為:anomalous vertices, edges, subgraphs, and events(or change),將使用的方法分為:community detection, MDL(minimum description length) and compression, decompression, distance, probabilistic, 按每種方法使用的異常類型進行了文獻學分類。各方法的主要參考文獻見表1:
本文假設不同時點的節點和邊都有唯一標簽從而不會混淆,定義 為圖序列,其中 為總時間步, , 為節點集, 為邊集, 時稱 為圖流。本文的主要記號見表2:
給定 ,節點集 ,打分函數 ,定義異常節點集為 ,使得對於 , ,其中 為得分 的摘要式統計。
一個典型的異常節點如圖1,其可由基於社區檢測的方法識別,即: 其中 為節點所屬的社會劃分, 為異或操作。
給定 ,邊集 ,打分函數 ,定義異常邊集為 ,使得對於 , ,其中 為得分 的摘要式統計。
一個典型的異常邊如圖2,可令 ,其中 為時間步 時 的權重,可以為邊的概率。
給定 ,子圖集 ,打分函數 ,定義異常集為 ,使得對於 , ,其中 為得分 的摘要式統計。
兩種典型的異常子圖如圖3,其中(a)為圖的收縮,(b)為圖的分裂。圖的收縮可根據子圖中的的數量衡量,即 ,圖的分裂可由不同時間點社區的數量衡量。
與異常節點、邊、子圖檢測不同,異常事件或異常突變檢測檢驗的是時點。
給定 ,打分函數 ,若時點 滿足: , ,則稱時點 為一個事件。
給定 ,打分函數 ,若時點 滿足: , ,則稱時點 為一個突變。
通常的異常檢測都使用兩步法:第一步,基於特徵的圖表示;第二,基於機器學習的異常檢測。
基於社區檢測的方法關注的是社區和關聯節點的演化過程,特徵向量的生成亦基於圖中的社區結構。不同社區檢測方法的區別在於:(1)社區結構的領域,如社區內的連接性v.s.單個節點在每一步所屬的社區;(2)社區結構的定義,如基於概率的軟社區定義v.s.硬社區定義。基於社區檢測的方法可用於異常定點、子圖、突變的檢測。
基於軟社區匹配並單獨考察每一個社區,我們可以在連續時間步內計算每個節點歸屬的平均變化,如果某個節點歸屬的平均變化顯著異於其他節點,則稱其為演化社區異常點。
節點社區歸屬的變化可以構造一個時間模式,稱為軟時序模式。一些文獻使用了最小描述長度(MDL)結合非負矩陣分解的方法來自動檢測節點角色及構造轉移模型。多數文獻通過抽取圖中不同節點的共同模式,並比較每個節點與共同模式之間的差異來定義異常節點。部分文獻使用了交替迭代優化替代常用的兩步法。部分文獻使用了corenet的概念,該概念不同於單純使用density,molarity,hop-distance等概念,而是使用了節點間的加權路徑,即一個節點的corenet包含該節點與權重大於給定閾值的兩跳鄰居。假設兩個強連接的節點通常屬於同一社區,則如果移除一個節點的兩個鄰居,一個鄰域具有較高的邊權重,另一個具有較低的邊權重,則移除較高權重鄰居的影響應更大,在每一步,每個節點首先被賦予一個異常得分,該得分衡量了其corenet的變化,異常得分較高的 各節點將被視為異常節點。
文獻【69】定義了六種基於社區的異常:shrink, grow, merge, split, born, and vanish。其使用圖和社區代表(representatives)進行比較以減少計算量,圖代表為出現在t時刻,同時還出現在t-1、t+1或t+1與t-1時刻的節點集,社區代表是出現在其他社區最少的定點集合,基於社區代表和圖代表,基於規則,判斷社區是否落在六種異常中。
文獻【73】定義了一種基於社區的異常:comet,周期性出現或消失的社區,演化圖可表示為一個張量,然後基於低秩張量分解和MDL原則進行comet檢測。
文獻【3】基於多種信息源構造時序復網路,識別跨時間和網路的穩定社區結構。行為相似的網路可以用聚類或前驗知識分組,如何一個社區結構在組內跨時間步穩定,但在組外沒有對應社區,則該社區即為異常,如何兩個社區共享一定比例的定點則稱為對應。
社交網路可以根據特定時間窗口內的發文量定義事件,一個經歷共同事件的組即構成一個異常子圖。
通過劃分圖流為一致的分割來檢測,分割是依據劃分的相似性。
通過將最新圖的頂點分區與當前增長分割中的圖的分區進行比較,可以在線找到這些分割。【67】基於可返回隨機的相關矩陣和molarity最大化來進行定點劃分,當新圖的劃分與當前分割的劃分有很大不同時,一個新段開始,並將新圖的時間點輸出為檢測到的突變。兩個劃分的相似度使用Jaccard系數定義。GraphScope思路類似,但基於MDL來指導劃分和分割。
基於MDL原則和基於該原則的壓縮技術利用數據中的模式和規律性實現緊湊的圖表示,其主要通過將圖的鄰接矩陣表示為一個二進制串,如果矩陣的行和列可以重新排列使矩陣的二進制字元串表示的熵最小化,那麼壓縮損失(也稱為編碼損失)就會最小化。數據指向的特徵都來自於圖或其特定子結構的編碼代價;因此,異常被定義為抑制可壓縮性的圖或子結構(如邊)
對於一條邊和對應子圖,如果包含該邊的編碼損失比不包含該邊的編碼損失高,則稱該邊為異常邊。
【74】使用了一種兩步交替迭代法進行節點的自動劃分,當節點劃分的熵收斂時,根據包含和不包含該邊的編碼損失,該方法也給出了邊的異常度得分。
突變檢測的主要思路是:連續時間步間的圖是相似的,因而可以分為一組,從而降低壓縮比。壓縮比的上升表明新一個時間步的圖與已有的圖差異明顯,因此是一個突變。
該方法將圖集合表示為一個tensor,在該tensor上進行矩陣分解或降維,基於分解或降維後的圖發現其模式和規律性,該方法可以融合更多屬性信息,最常用的方法是SVD和PARAFAC(廣義SVD)。
矩陣分解可用於計算每個節點的活躍(activity)向量,如果某個節點的活躍向量在連續時間步間變化明顯,則稱為異常節點。
【87】首先抽取每個節點的邊相關矩陣 ,即該節點的每個鄰域都有一行一列,對於節點 的矩陣中的一個entry 代表了邊 和 間加權頻率的相關性,加權頻率由衰減函數獲得,時間越近權重越高。M的最大特徵值和對應特徵向量即頂點的活躍向量的summary及邊的相關性。通過尋找這些值的變化而形成的時間序列用於計算每個時間步長中每個頂點的分數,得分高於閾值的頂點將被輸出為異常。
基於分解的異常事件檢測有兩種方法:(1)先基於分解方法來近似原始數據,然後以重建損失作為近似優劣的指標。如果某個子張量、切片或元素的重建損失很高,則即可以視其與周圍數據不同特徵不同,將其標記為異常事件、子圖或節點。(2)跟蹤奇異值和向量,以及特徵值和特徵向量,以檢測異常頂點的顯著變化。
為解決 intermediate blowup 問題(即計算中輸入和輸出張量超過內存限制),【81】提出了momery-efficient tucker(MET)分解方法,該方法源於Tucker分解,Tucker分解將高階tensor用一個core tensor和每個mode(維度)矩陣表示。【80】使用了Compact Matrix Decomposition(CMD),其可以用來計算給定矩陣的稀疏低秩矩陣。使用CMD對圖流中的每個鄰接矩陣進行分解,可得到重建值的時間序列,基於重建值序列可進程事件檢測,典型應用有COLIBRI, PARCUBE,其中後者在斑點(spotting)異常中的表現更高效。
【84】使用了隨機圖模型進行基於概率模型的檢測,其將真實圖鄰接矩陣和期望圖的鄰接矩陣間的差異構造為殘差矩陣,對殘差矩陣執行SVD,再使用線性Ramp濾波器,基於top奇異值即可進行異常時間窗口檢測,通過檢查正確的奇異向量來確定相應的頂點。
除以上方法,我們還可以基於分解空間的顯著變化來識別事件。【77】通過對數據執行PCA,計算的特徵向量可以分為正常和異常兩個集合,方法是檢驗數據中的值映射到特徵向量。在每個時間步,根據特徵值對特徵向量進程降序排列,第一個特徵向量則包含一個在其餘值的3個標准差之外的投影點,此後的每個特徵向量,都構成了異常集。第二步即是將數據映射到正常和異常子空間,一旦完成了這些操作,當從上一個時間步長到當前時間步異常成分的修改超過一個閾值時,即將其視為一個事件。【83】擴展了該方法,提出了聯合稀疏PCA和圖引導的聯合稀疏PCA來定位異常和識別對應的頂點。通過為異常集使用稀疏的成分集,可以更容易識別負責的頂點。頂點根據它們在異常子空間中對應行的值得到一個異常分數,由於異常分量是稀疏的,不異常的頂點得分為0。
圖的活躍向量 為主成分,左奇異向量對應最大奇異值,奇異值和奇異向量通過對加權鄰接矩陣進行SVD得到。當活躍向量大幅異於「正常活躍"向量時,即定義該時點為突變點,」正常活躍「向量由前序向量得到。
正常活躍向量 ,它是對最後W時間步中活動向量形成的矩陣進行SVD得到的左奇異向量。每個時點都定義一個得分 ,其代表了當前活躍向量與正常向量的差異。異常可以使用動態閾值方案在線發現,其中得分高於閾值的時間點被輸出為變化。通過計算正常向量和活動向量之間的變化比率來找到負責的頂點,與變化最大的索引所對應的頂點被標記為異常,類似的方法也可以用於節點-節點相關矩陣的活躍向量,或基於鄰居相似度的節點-節點相關矩陣。
基於距離的異常檢測演算法的不同點在於選擇用於提取和比較距離度量,以及它們用於確定異常值和相應圖的方法。
如果一些邊的屬性演化異於正常演化,則該邊就是一個異常邊。
邊之間的權重使用衰減函數定義,在每個時間步長中,根據相似度得分的變化之和計算每條邊的異常值得分,使用閾值或簡單的 作為異常值標准。
將網路視為邊的流,意味著網路沒有固定的拓撲,一個邊的頻率和持久性可以用來作為其新穎性的指標,【48】定義了集合系統不一致性指標來度量頻率和持久性,當一條邊到達時,計算其差異,並與活動邊集的平均不一致性值進行比較,如果邊的加權不一致性大於平均不一致性的閾值水平,則聲明該邊為異常邊,基於異常邊,可以進一步識別其他異常圖元素(如頂點,邊,子圖)。
具有許多「異常」邊的子圖即是異常的子圖。
【52】將邊的權重視為異常得分,每個時間步長上的每條邊都有它自己的異常分數,給定了該邊權值在所有圖序列的分布,該分數表示在該特定的邊上看到該特定權值的概率函數。或者,為網路中的邊分配異常值分數的現有方法的輸出可以用作為該方法的輸入。後一種方法允許應用於任何能夠為邊分配異常值分數的網路,一旦完成每條邊的異常打分,即可發現顯著異常的區域(SARs),即一個窗口內的固定子圖,其類似於HDSs。【112】提出了一種迭代演算法,該演算法首先固定子圖發現最優時間窗口,然後固定時間窗口發現最優子圖。【97】拓展了該方法,允許子圖漸變,即在相鄰時間步間增加或移除頂點。
定義函數 為測度圖距離的函數,將其應用於連續圖序列,即得到距離序列,基於該距離序列應用一些啟發式演算法(如基於移動平均閾值的 取值)即可得到異常事件。
稱每個頂點及其egonet的特徵為局部特徵,整張圖的特徵為全局特徵。每個頂點的局部特徵可聚合為一個向量,基於該向量的各階矩可構造signature向量,利用signature向量間的Canberra距離(歸一化的曼哈頓距離)可構造圖之間的距離函數【93】。【92】利用全局特徵,定義了一種基於dK-2序列的距離測度,將高於閾值的特徵視為異常點。
【96】使用了頂點親和度(即一個頂點對另一個頂點的影響,可以用於快速信念傳播)得分作為signature向量,其基於連續時間步技術頂點親和度,基於馬氏距離度量兩個圖的相似度,親和度得分的變化反應並適應變化的影響水平,例如橋邊的移除比正常邊移除的得分更高。利用單個移動范圍的質量控制,可以對相似度得分的時間序列設置一個移動閾值,如指數移動平均加權。
作為特徵相似度的補充,我們也可以比較兩個圖的結構差異來度量突變的大小,這類方法致力於發現定義距離的函數而非發現特徵向量。【88】計算了異常網路的10種距離函數,使用ARMA模型構造特徵值的正常模型,然後基於正常模型計算時點的殘差,殘差超過給定閾值的時間即可標記為異常。10種距離函數中,基於最大共有子圖的方法表現最好。【90】使用了五中得分函數(頂點/邊重疊,頂點排序,向量相似度,序列相似度,signature相似度)來檢測三種異常(子圖缺失,頂點缺失,連通性變化),表現最好的方案是抽取每個頂點和邊的特徵構造signature向量,使用SimHash定義距離。
我們還可以通過計算每個圖的穩健性序列來檢測事件,穩健性序列是圖連通性的測度,具有高穩健性的圖即使在去除一些頂點或邊的情況下,也能保持相同的一般結構和連通性,事件檢測即發現穩健性值異常變化的時點【95】。【89】使用的是圖半徑的變體作為穩健性指標,圖半徑的定義是基於所有頂點的平均離心度,而非常用的最大離心度。
基於概率理論、分布、掃描統計學等方法可以構造「正常」樣本的模型,偏離該模型的樣本即視為異常,這類方法的主要區別在於構造方法、建模對象、離群值定義。
主要有兩種方法:一,構造掃描統計時間序列並檢測離均值若干標准差的點;二,頂點分類。
掃描統計常稱為滑動窗口分析,其在數據的特徵區域中發現測度統計量的局部最小或最大值。對某個特定圖,掃描統計量可以是圖不變特徵的最大值,如邊的數量。
【8】使用了一個適應測度統計量的變數,即每個節點的0-2度鄰居數,然後對每個頂點的局部統計量使用近期值的均值和標准差進行標准化,圖的掃描統計量即最大的標准化局部統計量。標准化可以解釋每個頂點的歷史信息,代表每個頂點的統計量只與自己的歷史信息有關而與其他頂點無關。這保證測度的最大變化與變化的絕對量無關而與比例有關。基於掃描統計量標准化時間序列,將序列均值的五個標准差作為異常值。最負責的頂點被確定為為整個圖的掃描統計值所選擇的頂點。
類似於使用鄰居進行掃描統計,我們還可以用Markov隨機場(MRF)來發現節點的狀態,並通過信念傳播演算法推斷最大似然分配,其中,每個頂點標簽取決於其鄰居節點。【99】通過發現二部核來檢測異常點(即詐騙犯),二部核定義為詐騙犯與從犯間的交互。利用邊的插入或刪除隻影響局部子圖這一事實,它在添加新邊時逐步更新模型。在傳播矩陣中,一個頂點可以處於三種狀態之一:欺詐者、共犯者或誠實者。
邊異常檢測通常使用計數過程建模,統計上顯著異於該模型的邊標記為異常邊。
【50】用貝葉斯離散時間計數過程來建模頂點間的通信次數(邊權重),並根據新圖更新模型。基於學習到的計數的分布,對新觀測的邊進行預測 值計算,基於 值標記異常頂點對。
首先用固定的子圖,多重圖,累積圖來構造預期行為的模型,對模型的偏離可作為子圖異常檢測的依據。
【104】結合掃描統計量和隱馬爾可夫模型(HMM)建模邊行為,其使用的局部掃描統計量是基於兩種圖形狀:k-path圖和星型圖,其將滑動窗口的掃描統計數據與其過去的值進行比較,並使用在線閾值系統識別局部異常,局部異常是所有統計上顯著的子圖(代表k個路徑或恆星)的並集。
另一個建模動態圖的方法是基於多重圖,其中平行邊對應於兩個連續時間步頂點間的通信,初始的多重圖可分解為多個針對每個時間窗口的疊套子圖(TSG),TSG滿足兩個條件:(1)對於任何兩個有共同點的邊,首先開始通信的邊最後完成通信;(2)存在一個根頂點r,它沒有傳入的邊,並且有一條到TSG中每個頂點的路徑。出現概率低的TSG視為異常子圖。【102】
累積圖即為包含直到當前時點的所有邊的圖,邊權重依據衰減函數定義,通過識別「持久模式」來定義子圖的正常行為。該持久模型識別模型如下:首先構造一種圖,該圖每個邊根據時間來加權,然後基於該圖迭代抽取最重連接成分來發現。隨著累積圖的發展,提取的子圖將被監控,並將其當前活動與基於最近行為的預期活動進行比較來進行子圖異常檢測。【101】
事件檢測可以基於偏離圖似然模型或特徵值分布的偏差來進行。
【103】提出了一種新的蓄水池抽樣方法來抽取圖流的結構摘要,這種在線抽樣方法維持多個網路劃分以構造統計上顯著的摘要,當一個新圖進入圖流,每個邊都根據不同分區的邊生成模型計算出一種似然性,然後以這些似然性的幾何均值作為全局圖似然性。
【98】使用了類似的邊生成模型,每個邊 的概率都存儲在矩陣 中,概率基於期望最大化估計,基於所有收發對的分布,然後為每個收發對給出潛在得分,基於所有邊似然得分的均值即得到每個圖的得分。
【100】計算了特徵值和壓縮特徵等式的分布(而非計算收發對的分布),基於每個頂點都存在一個頂點局部特徵時間序列的假設,可在每個時間步構造一個頂點-頂點相關矩陣,通過保留最大特徵值和一組低維矩陣(每個頂點對應一個矩陣),可對相關矩陣的特徵方程進行壓縮,通過學習特徵值和矩陣的分布,即可發現異常頂點和事件。當特徵值偏離期望分布時,即認為發生了事件,當頂點的矩陣偏離矩陣分布時,可認為該頂點為異常頂點。
❸ 對於異常值的檢測
離群點,是一個數據對象,它顯著不同於其他數據對象,與其他數據分布有較為顯著的不同。有時也稱非離群點為「正常數據」,離群點為「異常數據」。
離群點跟雜訊數據不一樣,雜訊是被觀測變數的隨機誤差或方差。一般而言,雜訊在數據分析(包括離群點分析)中不是令人感興趣的,需要在數據預處理中剔除的,減少對後續模型預估的影響,增加精度。
離群點檢測是有意義的,因為懷疑產生它們的分布不同於產生其他數據的分布。因此,在離群點檢測時,重要的是搞清楚是哪種外力產生的離群點。
常見的異常成因:
通常,在其餘數據上做各種假設,並且證明檢測到的離群點顯著違反了這些假設。如統計學中的假設檢驗,基於小概率原理,對原假設進行判斷。一般檢測離群點,是人工進行篩選,剔除不可信的數據,例如對於房屋數據,面積上萬,卧室數量過百等情況。而在面對大量的數據時,人工方法耗時耗力,因此,才有如下的方法進行離群點檢測。
統計學方法是基於模型的方法,即為數據創建一個模型,並且根據對象擬合模型的情況來評估它們。大部分用於離群點檢測的統計學方法都是構建一個概率分布模型,並考慮對象有多大可能符合該模型。
離群點的概率定義:離群點是一個對象,關於數據的概率分布模型,它具有低概率。這種情況的前提是必須知道數據集服從什麼分布,如果估計錯誤就造成了重尾分布。
a. 參數法:
當數據服從正太分布的假設時在正態分布的假定下,u±3σ區域包含99.7%的數據,u±2σ包含95.4%的數據,u±1σ包含68.3%的數據。其區域外的數據視為離群點。
當數據是非正態分布時,可以使用切比雪夫不等式,它對任何分布形狀的數據都適用。根據 切比雪夫不等式 ,至少有(1-1/k 2 )的數據落在±k個標准差之內。所以,有以下結論:
計算得到:通過繪制箱線圖可以直觀地找到離群點,或者通過計算四分位數極差(IQR)定義為Q3-Q1。比Q1小1.5倍的IQR或者比Q3大1.5倍的IQR的任何對象都視為離群點,因為Q1-1.5IQR和Q3+1.5IQR之間的區域包含了99.3%的對象。
涉及兩個或多個屬性或變數的數據稱為多元數據。核心思想是把多元離群點檢測任務轉換成一元離群點檢測問題。
- 卡方統計量的多元離群點檢測 :正態分布的假定下,卡方統計量也可以用來捕獲多元離群點,對象 ,卡方統計量是: , 是 在第i維上的值, 是所有對象在第i維上的均值,而n是維度。如果對象的卡方統計量很大,則該對象是離群點。
b. 非參數法:
構造直方圖
為了構造一個好的直方圖,用戶必須指定直方圖的類型和其他參數(箱數、等寬or等深)。最簡單的方法是,如果該對象落入直方圖的一個箱中,則該對象被看做正常的,否則被認為是離群點。也可以使用直方圖賦予每個對象一個離群點得分,比如對象的離群點得分為該對象落入的箱的容積的倒數。但這個方法很難選擇一個較好的直方圖參數。
注意 :
傳統的觀點都認為孤立點是一個單獨的點,然而很多的現實情況是異常事件具有一定的時間和空間的局部性,這種局部性會產生一個小的簇.這時候離群點(孤立點)實際上是一個小簇(圖下圖的C1和C3)。
一個對象是異常的,如果它遠離大部分點。這種方法比統計學方法更一般、更容易使用,因為確定數據集的有意義的鄰近性度量比確定它的統計分布更容易。不依賴統計檢驗,將基於鄰近度的離群點看作是那些沒有「足夠多「鄰居的對象。這里的鄰居是用 鄰近度(距離) 來定義的。最常用的距離是絕對距離(曼哈頓)和歐氏距離等等。
一個對象的離群點得分由到它的k-最近鄰的距離給定。離群點得分對k的取值高度敏感。如果k太小,則少量的鄰近離群點可能導致離群點較少;如果K太大,則點數少於k的簇中所有的對象可能都成了離群點,導致離群點過多。為了使該方案對於k的選取更具有魯棒性,可以使用k個最近鄰的平均距離。
從基於密度的觀點來說,離群點是在低密度區域中的對象。一個對象的離群點得分是該對象周圍密度的逆。基於密度的離群點檢測與基於鄰近度的離群點檢測密切相關,因為密度通常用鄰近度定義。
定義密度
一種常用的定義密度的方法是,定義密度為到k個最近鄰的平均距離的倒數 。如果該距離小,則密度高,反之亦然。
另一種密度定義是使用DBSCAN聚類演算法使用的密度定義,即一個對象周圍的密度等於該對象指定距離d內對象的個數。 需要小心的選擇d,如果d太小,則許多正常點可能具有低密度,從而離群點較多。如果d太大,則許多離群點可能具有與正常點類似的密度(和離群點得分)無法區分。 使用任何密度定義檢測離群點具有與基於鄰近度的離群點方案類似的特點和局限性。特殊地,當數據包含不同密度的區域時,它們不能正確的識別離群點。
定義相對密度
為了正確的識別這種數據集中的離群點,我們需要與對象鄰域相關的密度概念,也就是定義相對密度。常見的有兩種方法:
(1)使用基於SNN密度的聚類演算法使用的方法;
(2)用點x的密度與它的最近鄰y的平均密度之比作為相對密度。使用相對密度的離群點檢測( 局部離群點要素LOF技術 ):
一種利用聚類檢測離群點的方法是丟棄遠離其他簇的小簇。這個方法可以和其他任何聚類技術一起使用,但是需要最小簇大小和小簇與其他簇之間距離的閾值。這種方案對簇個數的選擇高度敏感。使用這個方案很難將離群點得分附加到對象上。
一種更系統的方法,首先聚類所有的點,對某個待測點評估它屬於某一簇的程度。(基於原型的聚類可用離中心點的距離來評估,對具有目標函數(例如kmeans法時的簇的誤差平方和)的聚類技術,該得分反映刪除對象後目標函數的改進),如果刪去此點能顯著地改善此項目標函數,則可以將該點定位為孤立點。
基於聚類的離群點:一個對象是基於聚類的離群點,如果該對象不強屬於任何簇。離群點對初始聚類的影響:如果通過聚類檢測離群點,則由於離群點影響聚類,存在一個問題:結構是否有效。為了處理該問題,可以使用如下方法:
對象是否被認為是離群點可能依賴於簇的個數(如k很大時的雜訊簇)。該問題也沒有簡單的答案。一種策略是對於不同的簇個數重復該分析。另一種方法是找出大量小簇,其想法是(1)較小的簇傾向於更加凝聚,(2)如果存在大量小簇時一個對象是離群點,則它多半是一個真正的離群點。不利的一面是一組離群點可能形成小簇而逃避檢測。
根據已有訓練集檢測新樣本是否異常
異常檢測根據原始數據集的不同可分為兩類:
novelty detection: 訓練集中沒有異常樣本
outlier detection: 訓練集中有異常樣本
異常樣本:
數量少,比較分散
novelty detection和outlier detection的區別:
Sklearn異常檢測模型一覽
5.1 奇異點檢測(Novelty Detection)
奇異點檢測,就是判斷待測樣本到底是不是在原來數據的概率分布內。概率學上認為,所有的數據都有它的隱藏的分布模式,這種分布模式可以由概率模型來具象化。
5.1 離群點檢測(Outlier Detection)
不同與奇異點檢測是,現在我們沒有一個干凈的訓練集(訓練集中也有雜訊樣本)。下面介紹的三種離群點檢測演算法其實也都可以用於奇異點檢測。
如果我們認為,可達密度小的目標樣本點就是異常點,這樣未嘗不可。但是,LOF演算法更進一步。
LOF可以用來判斷經緯度的異常。
使用python進行異常值(outlier)檢測實戰:KMeans + PCA + IsolationForest + SVM + EllipticEnvelope
文章引用: 數據挖掘:數據清洗——異常值處理
❹ 「宏觀網路流量」的定義是什麼有哪些異常檢測方法
一種互聯網宏觀流量異常檢測方法(2007-11-7 10:37) 摘要:網路流量異常指網路中流量不規則地顯著變化。網路短暫擁塞、分布式拒絕服務攻擊、大范圍掃描等本地事件或者網路路由異常等全局事件都能夠引起網路的異常。網路異常的檢測和分析對於網路安全應急響應部門非常重要,但是宏觀流量異常檢測需要從大量高維的富含雜訊的數據中提取和解釋異常模式,因此變得很困難。文章提出一種分析網路異常的通用方法,該方法運用主成分分析手段將高維空間劃分為對應正常和異常網路行為的子空間,並將流量向量影射在正常子空間中,使用基於距離的度量來檢測宏觀網路流量異常事件。公共互聯網正在社會生活的各個領域發揮著越來越重要的作用,與此同時,由互聯網的開放性和應用系統的復雜性所帶來的安全風險也隨之增多。2006年,國家計算機網路應急技術處理協調中心(CNCERT/CC)共接收26 476件非掃描類網路安全事件報告,與2005年相比增加2倍,超過2003—2005年3年的總和。2006年,CNCERT/CC利用部署的863-917網路安全監測平台,抽樣監測發現中國大陸地區約4.5萬個IP地址的主機被植入木馬,與2005年同期相比增加1倍;約有1千多萬個IP地址的主機被植入僵屍程序,被境外約1.6萬個主機進行控制。黑客利用木馬、僵屍網路等技術操縱數萬甚至上百萬台被入侵的計算機,釋放惡意代碼、發送垃圾郵件,並實施分布式拒絕服務攻擊,這對包括骨幹網在內的整個互聯網網路帶來嚴重的威脅。由數萬台機器同時發起的分布式拒絕服務攻擊能夠在短時間內耗盡城域網甚至骨幹網的帶寬,從而造成局部的互聯網崩潰。由於政府、金融、證券、能源、海關等重要信息系統的諸多業務依賴互聯網開展,互聯網骨幹網路的崩潰不僅會帶來巨額的商業損失,還會嚴重威脅國家安全。據不完全統計,2001年7月19日爆發的紅色代碼蠕蟲病毒造成的損失估計超過20億美元;2001年9月18日爆發的Nimda蠕蟲病毒造成的經濟損失超過26億美元;2003年1月爆發的SQL Slammer蠕蟲病毒造成經濟損失超過12億美元。針對目前互聯網宏觀網路安全需求,本文研究並提出一種宏觀網路流量異常檢測方法,能夠在骨幹網路層面對流量異常進行分析,在大規模安全事件爆發時進行快速有效的監測,從而為網路防禦贏得時間。1 網路流量異常檢測研究現狀在骨幹網路層面進行宏觀網路流量異常檢測時,巨大流量的實時處理和未知攻擊的檢測給傳統入侵檢測技術帶來了很大的挑戰。在流量異常檢測方面,國內外的學術機構和企業不斷探討並提出了多種檢測方法[1]。經典的流量監測方法是基於閾值基線的檢測方法,這種方法通過對歷史數據的分析建立正常的參考基線范圍,一旦超出此范圍就判斷為異常,它的特點是簡單、計算復雜度小,適用於實時檢測,然而它作為一種實用的檢測手段時,需要結合網路流量的特點進行修正和改進。另一種常用的方法是基於統計的檢測,如一般似然比(GLR)檢測方法[2],它考慮兩個相鄰的時間窗口以及由這兩個窗口構成的合並窗口,每個窗口都用自回歸模型擬合,並計算各窗口序列殘差的聯合似然比,然後與某個預先設定的閾值T 進行比較,當超過閾值T 時,則窗口邊界被認定為異常點。這種檢測方法對於流量的突變檢測比較有效,但是由於它的閾值不是自動選取,並且當異常持續長度超過窗口長度時,該方法將出現部分失效。統計學模型在流量異常檢測中具有廣闊的研究前景,不同的統計學建模方式能夠產生不同的檢測方法。最近有許多學者研究了基於變換域進行流量異常檢測的方法[3],基於變換域的方法通常將時域的流量信號變換到頻域或者小波域,然後依據變換後的空間特徵進行異常監測。P. Barford等人[4]將小波分析理論運用於流量異常檢測,並給出了基於其理論的4類異常結果,但該方法的計算過於復雜,不適於在高速骨幹網上進行實時檢測。Lakhina等人[5-6]利用主成分分析方法(PCA),將源和目標之間的數據流高維結構空間進行PCA分解,歸結到3個主成分上,以3個新的復合變數來重構網路流的特徵,並以此發展出一套檢測方法。此外還有一些其他的監測方法[7],例如基於Markov模型的網路狀態轉換概率檢測方法,將每種類型的事件定義為系統狀態,通過過程轉換模型來描述所預測的正常的網路特徵,當到來的流量特徵與期望特徵產生偏差時進行報警。又如LERAD檢測[8],它是基於網路安全特徵的檢測,這種方法通過學習得到流量屬性之間的正常的關聯規則,然後建立正常的規則集,在實際檢測中對流量進行規則匹配,對違反規則的流量進行告警。這種方法能夠對發生異常的地址進行定位,並對異常的程度進行量化。但學習需要大量正常模式下的純凈數據,這在實際的網路中並不容易實現。隨著宏觀網路異常流量檢測成為網路安全的技術熱點,一些廠商紛紛推出了電信級的異常流量檢測產品,如Arbor公司的Peakflow、GenieNRM公司的GenieNTG 2100、NetScout公司的nGenius等。國外一些研究機構在政府資助下,開始部署宏觀網路異常監測的項目,並取得了較好的成績,如美國研究機構CERT建立了SiLK和AirCERT項目,澳大利亞啟動了NMAC流量監測系統等項目。針對宏觀網路異常流量監測的需要,CNCERT/CC部署運行863-917網路安全監測平台,採用分布式的架構,能夠通過多點對骨幹網路實現流量監測,通過分析協議、地址、埠、包長、流量、時序等信息,達到對中國互聯網宏觀運行狀態的監測。本文基於863-917網路安全監測平台獲取流量信息,構成監測矩陣,矩陣的行向量由源地址數量、目的地址數量、傳輸控制協議(TCP)位元組數、TCP報文數、數據報協議(UDP)位元組數、UDP報文數、其他流量位元組數、其他流量報文書、WEB流量位元組數、WEB流量報文數、TOP10個源IP占總位元組比例、TOP10個源IP占總報文數比例、TOP10個目的IP占總位元組數比例、TOP10個目的IP占總報文數比例14個部分組成,系統每5分鍾產生一個行向量,觀測窗口為6小時,從而形成了一個72×14的數量矩陣。由於在這14個觀測向量之間存在著一定的相關性,這使得利用較少的變數反映原來變數的信息成為可能。本項目採用了主成份分析法對觀測數據進行數據降維和特徵提取,下面對該演算法的工作原理進行介紹。 2 主成分分析技術主成分分析是一種坐標變換的方法,將給定數據集的點映射到一個新軸上面,這些新軸稱為主成分。主成分在代數學上是p 個隨機變數X 1, X 2……X p 的一系列的線性組合,在幾何學中這些現線性組合代表選取一個新的坐標系,它是以X 1,X 2……X p 為坐標軸的原來坐標系旋轉得到。新坐標軸代表數據變異性最大的方向,並且提供對於協方差結果的一個較為簡單但更精練的刻畫。主成分只是依賴於X 1,X 2……X p 的協方差矩陣,它是通過一組變數的幾個線性組合來解釋這些變數的協方差結構,通常用於高維數據的解釋和數據的壓縮。通常p 個成分能夠完全地再現全系統的變異性,但是大部分的變異性常常能夠只用少量k 個主成分就能夠說明,在這種情況下,這k 個主成分中所包含的信息和那p 個原變數做包含的幾乎一樣多,於是可以使用k 個主成分來代替原來p 個初始的變數,並且由對p 個變數的n 次測量結果所組成的原始數據集合,能夠被壓縮成為對於k 個主成分的n 次測量結果進行分析。運用主成分分析的方法常常能夠揭示出一些先前不曾預料的關系,因而能夠對於數據給出一些不同尋常的解釋。當使用零均值的數據進行處理時,每一個主成分指向了變化最大的方向。主軸以變化量的大小為序,一個主成分捕捉到在一個軸向上最大變化的方向,另一個主成分捕捉到在正交方向上的另一個變化。設隨機向量X '=[X 1,X 1……X p ]有協方差矩陣∑,其特徵值λ1≥λ2……λp≥0。考慮線性組合:Y1 =a 1 'X =a 11X 1+a 12X 2……a 1pX pY2 =a 2 'X =a 21X 1+a 22X 2……a 2pX p……Yp =a p'X =a p 1X 1+a p 2X 2……a p pX p從而得到:Var (Yi )=a i' ∑a i ,(i =1,2……p )Cov (Yi ,Yk )=a i '∑a k ,(i ,k =1,2……p )主成分就是那些不相關的Y 的線性組合,它們能夠使得方差盡可能大。第一主成分是有最大方差的線性組合,也即它能夠使得Var (Yi )=a i' ∑a i 最大化。我們只是關注有單位長度的系數向量,因此我們定義:第1主成分=線性組合a 1'X,在a1'a 1=1時,它能夠使得Var (a1 'X )最大;第2主成分=線性組合a 2 'X,在a2'a 2=1和Cov(a 1 'X,a 2 'X )=0時,它能夠使得Var (a 2 'X )最大;第i 個主成分=線性組合a i'X,在a1'a 1=1和Cov(a i'X,a k'X )=0(k<i )時,它能夠使得Var (a i'X )最大。由此可知主成分都是不相關的,它們的方差等於協方差矩陣的特徵值。總方差中屬於第k個主成分(被第k個主成分所解釋)的比例為:如果總方差相當大的部分歸屬於第1個、第2個或者前幾個成分,而p較大的時候,那麼前幾個主成分就能夠取代原來的p個變數來對於原有的數據矩陣進行解釋,而且信息損失不多。在本項目中,對於一個包含14個特徵的矩陣進行主成分分析可知,特徵的最大變化基本上能夠被2到3個主成分捕捉到,這種主成分變化曲線的陡降特性構成了劃分正常子空間和異常子空間的基礎。3 異常檢測演算法本項目的異常流量檢測過程分為3個階段:建模階段、檢測階段和評估階段。下面對每個階段的演算法進行詳細的介紹。3.1 建模階段本項目採用滑動時間窗口建模,將當前時刻前的72個樣本作為建模空間,這72個樣本的數據構成了一個數據矩陣X。在試驗中,矩陣的行向量由14個元素構成。主成份分為正常主成分和異常主成份,它們分別代表了網路中的正常流量和異常流量,二者的區別主要體現在變化趨勢上。正常主成份隨時間的變化較為平緩,呈現出明顯的周期性;異常主成份隨時間的變化幅度較大,呈現出較強的突發性。根據采樣數據,判斷正常主成分的演算法是:依據主成分和采樣數據計算出第一主成分變數,求第一主成分變數這72個數值的均值μ1和方差σ1,找出第一主成分變數中偏離均值最大的元素,判斷其偏離均值的程度是否超過了3σ1。如果第一主成分變數的最大偏離超過了閾值,取第一主成份為正常主成分,其他主成份均為異常主成分,取主成份轉換矩陣U =[L 1];如果最大偏離未超過閾值,轉入判斷第下一主成分,最後取得U =[L 1……L i -1]。第一主成份具有較強的周期性,隨後的主成份的周期性漸弱,突發性漸強,這也體現了網路中正常流量和異常流量的差別。在得到主成份轉換矩陣U後,針對每一個采樣數據Sk =xk 1,xk 2……xk p ),將其主成份投影到p維空間進行重建,重建後的向量為:Tk =UU T (Sk -X )T計算該采樣數據重建前與重建後向量之間的歐氏距離,稱之為殘差:dk =||Sk -Tk ||根據采樣數據,我們分別計算72次采樣數據的殘差,然後求其均值μd 和標准差σd 。轉換矩陣U、殘差均值μd 、殘差標准差σd 是我們構造的網路流量模型,也是進行流量異常檢測的前提條件。 3.2 檢測階段在通過建模得到網路流量模型後,對於新的觀測向量N,(n 1,n 2……np ),採用與建模階段類似的分析方法,將其中心化:Nd =N -X然後將中心化後的向量投影到p維空間重建,並計算殘差:Td =UUTNdTd =||Nd -Td ||如果該觀測值正常,則重建前與重建後向量應該非常相似,計算出的殘差d 應該很小;如果觀測值代表的流量與建模時發生了明顯變化,則計算出的殘差值會較大。本項目利用如下演算法對殘差進行量化:3.3 評估階段評估階段的任務是根據當前觀測向量的量化值q (d ),判斷網路流量是否正常。根據經驗,如果|q (d )|<5,網路基本正常;如果5≤|q (d )|<10,網路輕度異常;如果10≤|q (d )|,網路重度異常。4 實驗結果分析利用863-917網路安全監測平台,對北京電信骨幹網流量進行持續監測,我們提取6小時的觀測數據,由於篇幅所限,我們給出圖1—4的時間序列曲線。由圖1—4可知單獨利用任何一個曲線都難以判定異常,而利用本演算法可以容易地標定異常發生的時間。本演算法計算結果如圖5所示,異常發生時間在圖5中標出。我們利用863-917平台的回溯功能對於異常發生時間進行進一步的分析,發現在標出的異常時刻,一個大規模的僵屍網路對網外的3個IP地址發起了大規模的拒絕服務攻擊。 5 結束語本文提出一種基於主成分分析的方法來劃分子空間,分析和發現網路中的異常事件。本方法能夠准確快速地標定異常發生的時間點,從而幫助網路安全應急響應部門及時發現宏觀網路的流量異常狀況,為迅速解決網路異常贏得時間。試驗表明,我們採用的14個特徵構成的分析矩陣具有較好的識別准確率和分析效率,我們接下來將會繼續尋找更具有代表性的特徵來構成數據矩陣,並研究更好的特徵矩陣構造方法來進一步提高此方法的識別率,並將本方法推廣到短時分析中。6 參考文獻[1] XU K, ZHANG Z L, BHATTACHARYYA S. Profiling Internet backbone traffic: Behavior models and applications [C]// Proceedings of ACM SIGCOMM, Aug 22- 25, 2005, Philadelphia, PA, USA. New York, NY,USA:ACM,2005:169-180.[2] HAWKINS D M, QQUI P, KANG C W. The change point model for statistical process control [J]. Journal of Quality Technology,2003, 35(4).[3] THOTTAN M, JI C. Anomaly detection in IP networks [J]. IEEE Transactions on Signal Processing, 2003, 51 )8):2191-2204.[4] BARFORD P, KLINE J, PLONKA D, et al. A signal analysis of network traffic anomalies [C]//Proceedings of ACM SIGCOMM Intemet Measurement Workshop (IMW 2002), Nov 6-8, 2002, Marseilles, France. New York, NY,USA:ACM, 2002:71-82.[5] LAKHINA A, CROVELLA M, DIOT C. Mining anomalies using traffic feature distributions [C]// Proceedings of SIGCOMM, Aug 22-25, 2005, Philadelphia, PA, USA. New York, NY,USA: ACM, 2005: 217-228.[6] LAKHINA A, CROVELLA M, DIOT C. Diagnosing network-wide traffic anomalies [C]// Proceedings of ACM SIGCOMM, Aug 30 - Sep 3, 2004, Portland, OR, USA. New York, NY,USA: ACM, 2004: 219-230.[7] SCHWELLER R, GUPTA A, PARSONS E, et al. Reversible sketches for efficient and accurate change detection over network data streams [C]//Proceedings of ACM SIGCOMM Internet Measurement Conference (IMC』04), Oct 25-27, 2004, Taormina, Sicily, Italy. New York, NY,USA: ACM, 2004:207-212.[8] MAHONEY M V, CHAN P K. Learning rules for anomaly detection of hostile network traffic [C]// Proceedings of International Conference on Data Mining (ICDM』03), Nov 19-22, Melbourne, FL, USA . Los Alamitos, CA, USA: IEEE Computer Society, 2003:601-604.
❺ 異常值檢測演算法--箱線圖四分位檢測異常值
首先,給大家講下什麼叫四分位數。顧名思義,就是把一堆數據排序會分成四份,找出其中的那三個點。中間那個叫中位數,下面那個叫下四分位數據,上面那個叫上四分位數。如下圖:
中間的兩個數是12和14,平均數13即為中位數。14以上的數字,最中間的數字是20即為上四分位數。12以下中間的數字是4即為下四分位數。
當然,也是更嚴謹的計算方法。對樣本數據或者全部數據線性回歸,找出概率密度函數。反函數y=0.5對應的x值為中位數,y=0.25對應的x值為下四分位數,y=0.75對應的x值為上四分位數
和3σ原則相比,箱線圖依據實際數據繪制,真實、直觀地表現出了數據分布的本來面貌,且沒有對數據作任何限制性要求(3σ原則要求數據服從正態分布或近似服從正態分布),其判斷異常值的標准以四分位數和四分位距為基礎。四分位數給出了數據分布的中心、散布和形狀的某種指示,具有一定的魯棒性,即25%的數據可以變得任意遠而不會很大地擾動四分位數,所以異常值通常不能對這個標准施加影響。鑒於此,箱線圖識別異常值的結果比較客觀,因此在識別異常值方面具有一定的優越性。
箱型圖提供了識別異常值的一個標准,即異常值通常被定義為小於QL-1.5IQR或大於QU+1.5IQR的值。其中,QL稱為下四分位數,表示全部觀察值中有四分之一的數據取值比它小;QU稱為上四分位數,表示全部觀察值中有四分之一的數據取值比它大;IQR稱為四分位數間距,是上四分位數QU與下四分位數QL之差,其間包含了全部觀察值的一半。
❻ 關於異常檢測auc的一些思考
auc作為度量有個好處,就是可以排除閾值的影響,auc直接體現演算法對所檢測樣本的排序質量。要提高auc的准確率,就需要演算法能夠准確發現待測樣本與訓練樣本的差異。對於視覺分類任務來說,就是將視覺上的差異體現到度量上,在樣本上直接衡量是很難行得通,通常希望提取出可以度量的特徵,在特徵空間中去衡量,這個特徵空間最好可以利用歐式距離來計算,那就可以提取出特徵,接著計算特徵之間的距離,最後按照距離來排序得到auc。
概括下步驟,樣本先映射成特徵,根據訓練樣本的特徵得出特徵中心,計算測試樣本與中心的距離,按照距離排序。映射特徵可以使用自編碼器,AE提取的特徵在非線性的流形空間中,未必就適合歐式距離,所以還要有一些約束,這些都可以通過損失來體現。什麼的損失合適需要根據具體的任務來定了。
❼ 異常點檢測方法
一、基本概念
異常對象被稱作離群點。異常檢測也稱偏差檢測和例外挖掘。
常見的異常成因:數據來源於不同的類(異常對象來自於一個與大多數數據對象源(類)不同的源(類)的思想),自然變異,以及數據測量或收集誤差。
異常檢測的方法:
(1)基於模型的技術:首先建立一個數據模型,異常是那些同模型不能完美擬合的對象;如果模型是簇的集合,則異常是不顯著屬於任何簇的對象;在使用回歸模型時,異常是相對遠離預測值的對象。
(2)基於鄰近度的技術:通常可以在對象之間定義鄰近性度量,異常對象是那些遠離其他對象的對象。
(3)基於密度的技術:僅當一個點的局部密度顯著低於它的大部分近鄰時才將其分類為離群點。
二、異常點檢測的方法
1、統計方法檢測離群點
統計學方法是基於模型的方法,即為數據創建一個模型,並且根據對象擬合模型的情況來評估它們。大部分用於離群點檢測的統計學方法都是構建一個概率分布模型,並考慮對象有多大可能符合該模型。離群點的概率定義:離群點是一個對象,關於數據的概率分布模型,它具有低概率。這種情況的前提是必須知道數據集服從什麼分布,如果估計錯誤就造成了重尾分布。異常檢測的混合模型方法:對於異常檢測,數據用兩個分布的混合模型建模,一個分布為普通數據,而另一個為離群點。
聚類和異常檢測目標都是估計分布的參數,以最大化數據的總似然(概率)。聚類時,使用EM演算法估計每個概率分布的參數。然而,這里提供的異常檢測技術使用一種更簡單的方法。初始時將所有對象放入普通對象集,而異常對象集為空。然後,用一個迭代過程將對象從普通集轉移到異常集,只要該轉移能提高數據的總似然(其實等價於把在正常對象的分布下具有低概率的對象分類為離群點)。(假設異常對象屬於均勻分布)。異常對象由這樣一些對象組成,這些對象在均勻分布下比在正常分布下具有顯著較高的概率。
優缺點:(1)有堅實的統計學理論基礎,當存在充分的數據和所用的檢驗類型的知識時,這些檢驗可能非常有效;(2)對於多元數據,可用的選擇少一些,並且對於高維數據,這些檢測可能性很差。
2、基於鄰近度的離群點檢測。
一個對象是異常的,如果它遠離大部分點。這種方法比統計學方法更一般、更容易使用,因為確定數據集的有意義的鄰近性度量比確定它的統計分布更容易。一個對象的離群點得分由到它的k-最近鄰的距離給定。離群點得分對k的取值高度敏感。如果k太小(例如1),則少量的鄰近離群點可能導致較低的離群點得分;如果k太大,則點數少於k的簇中所有的對象可能都成了離群點。為了使該方案對於k的選取更具有魯棒性,可以使用k個最近鄰的平均距離。
優缺點:(1)簡單;(2)缺點:基於鄰近度的方法需要O(m^2)時間,大數據集不適用;(3)該方法對參數的選擇也是敏感的;(4)不能處理具有不同密度區域的數據集,因為它使用全局閾值,不能考慮這種密度的變化。
3、基於密度的離群點檢測。
從基於密度的觀點來說,離群點是在低密度區域中的對象。一個對象的離群點得分是該對象周圍密度的逆。基於密度的離群點檢測與基於鄰近度的離群點檢測密切相關,因為密度通常用鄰近度定義。一種常用的定義密度的方法是,定義密度為到k個最近鄰的平均距離的倒數。如果該距離小,則密度高,反之亦然。另一種密度定義是使用DBSCAN聚類演算法使用的密度定義,即一個對象周圍的密度等於該對象指定距離d內對象的個數。需要小心的選擇d,如果d太小,則許多正常點可能具有低密度,從而具有高離群點得分。如果d太大,則許多離群點可能具有與正常點類似的密度(和離群點得分)。使用任何密度定義檢測離群點具有與基於鄰近度的離群點方案類似的特點和局限性。特殊地,當數據包含不同密度的區域時,它們不能正確的識別離群點。
為了正確的識別這種數據集中的離群點,我們需要與對象鄰域相關的密度概念,也就是定義相對密度。常見的有兩種方法:(1)使用基於SNN密度的聚類演算法使用的方法;(2)用點x的密度與它的最近鄰y的平均密度之比作為相對密度。
使用相對密度的離群點檢測(局部離群點要素LOF技術):首先,對於指定的近鄰個數(k),基於對象的最近鄰計算對象的密度density(x,k) ,由此計算每個對象的離群點得分;然後,計算點的鄰近平均密度,並使用它們計算點的平均相對密度。這個量指示x是否在比它的近鄰更稠密或更稀疏的鄰域內,並取作x的離群點得分(這個是建立在上面的離群點得分基礎上的)。
優缺點:
(1)給出了對象是離群點的定量度量,並且即使數據具有不同的區域也能夠很好的處理;
(2)與基於距離的方法一樣,這些方法必然具有O(m2)的時間復雜度。對於低維數據使用特定的數據結構可以達到O(mlogm);
(3)參數選擇是困難的。雖然LOF演算法通過觀察不同的k值,然後取得最大離群點得分來處理該問題,但是,仍然需要選擇這些值的上下界。
4、基於聚類的技術
一種利用聚類檢測離群點的方法是丟棄遠離其他簇的小簇。這個方法可以和其他任何聚類技術一起使用,但是需要最小簇大小和小簇與其他簇之間距離的閾值。這種方案對簇個數的選擇高度敏感。使用這個方案很難將離群點得分附加到對象上。一種更系統的方法,首先聚類所有對象,然後評估對象屬於簇的程度(離群點得分)(基於原型的聚類可用離中心點的距離來評估,對具有目標函數的聚類技術該得分反映刪除對象後目標函數的改進(這個可能是計算密集的))。基於聚類的離群點:一個對象是基於聚類的離群點,如果該對象不強屬於任何簇。離群點對初始聚類的影響:如果通過聚類檢測離群點,則由於離群點影響聚類,存在一個問題:結構是否有效。為了處理該問題,可以使用如下方法:對象聚類,刪除離群點,對象再次聚類(這個不能保證產生最優結果)。還有一種更復雜的方法:取一組不能很好的擬合任何簇的特殊對象,這組對象代表潛在的離群點。隨著聚類過程的進展,簇在變化。不再強屬於任何簇的對象被添加到潛在的離群點集合;而當前在該集合中的對象被測試,如果它現在強屬於一個簇,就可以將它從潛在的離群點集合中移除。聚類過程結束時還留在該集合中的點被分類為離群點(這種方法也不能保證產生最優解,甚至不比前面的簡單演算法好,在使用相對距離計算離群點得分時,這個問題特別嚴重)。
對象是否被認為是離群點可能依賴於簇的個數(如k很大時的雜訊簇)。該問題也沒有簡單的答案。一種策略是對於不同的簇個數重復該分析。另一種方法是找出大量小簇,其想法是(1)較小的簇傾向於更加凝聚,(2)如果存在大量小簇時一個對象是離群點,則它多半是一個真正的離群點。不利的一面是一組離群點可能形成小簇而逃避檢測。
優缺點:
(1)基於線性和接近線性復雜度(k均值)的聚類技術來發現離群點可能是高度有效的;
(2)簇的定義通常是離群點的補,因此可能同時發現簇和離群點;
(3) 產生的離群點集和它們的得分可能非常依賴所用的簇的個數和數據中離群點的存在性;
(4)聚類演算法產生的簇的質量對該演算法產生的離群點的質量影響非常大。
新穎性和離群值檢測
離群值檢測:訓練數據包含離群值,即與其他觀測值相距甚遠的觀測值。離群檢測估計器會嘗試擬合訓練數據最集中的區域,忽略異常觀察。
新穎性檢測:訓練數據不受異常值的污染,有興趣檢測新觀察值是否是異常值。該情況下離群值也稱為新穎性。
離群值檢測和新穎性檢測均用於異常檢測,離群值檢測稱為無監督異常檢測,新穎性檢測稱為半監督異常檢測。離群值檢測的情況下,離群值/異常不能形成密集的群集,可假設離群值/異常位於低密度區域;新穎性檢測的情況下,只要新穎性/異常位於訓練數據的低密度區域,就可以形成密集的簇。
通過對玩具數據集進行異常檢測比較異常檢測演算法
數據集中包含一種或兩種模式(高密度區域),以說明演算法處理多模式數據的能力。
對於每個數據集,將生成15%的樣本作為隨機均勻雜訊。該比例是OneClassSVM的nu參數和其他異常值檢測演算法的污染參數提供的值。離群值之間的決策邊界以黑色顯示,但是LOF除外,因為當採用LOF用於離群值檢測時,沒有適用於新數據的預測方法。
OneClassSVM對異常值敏感,對異常值檢測執行的不好。當訓練集不受異常值污染時,此估計器最適合新穎性檢測。即不適用在高維中進行離群值檢測或者不對基礎數據的分布進行任何假設,OneClassSVM在這些情況下可能會根據其超參數給出有用的結果。
covariance EllipticEnvelope(協方差橢圓密度)假定數據是高斯分布並學習一個橢圓。在數據不是單峰時,會退化。此估計器對異常值具有魯棒性。
IsolationFrorest和LocalOutlierFactor針對多模式數據集效果顯著。LOF針對第三種數據集,明顯優於其它三種估計器,該數據集中兩種模式的密度不同。LOF的局部方面,即它僅將一個樣本的異常評分與其鄰居評分作比較,從何體現了該方法的優勢。
針對最後一個均勻分布在超立方體中的數據集,很難說一個樣本比另一個樣本異常得多。除了OneClassSVM有些過擬合外,所有估計器都針對該情況提出不錯的解決方案。針對這種情況,應該仔細觀察樣本的異常分數,性能好的估算器應該為所有樣本分配相似的分數。
使用局部離群因子(LOF)進行離群值檢測
LOF演算法是一種無監督的異常檢測方法,可計算給定數據點相對於其鄰居的局部密度偏差。其中密度遠低於其鄰居的樣本為異常值。
LOF演算法的優勢在於同時考慮了數據集的局部和全局屬性:即使在異常樣本具有不同底層密度的數據集中,仍能保持良好性能。問題不在於樣本有多孤立,而在於樣本相對於周圍鄰域有多孤立。
通常考慮的鄰居數量(1)大於群集必須包含的最小樣本數量,以便其他樣本可以是相對於該群集的局部離散值;(2)小於可能是局部異常值的最大進距采樣數,此類消息通常不可用,採用n_neighbors=20。
具有局部異常值的新穎性檢驗
LOF是一種無監督的異常檢測方法,可計算給定數據點相對於其鄰居的局部密度偏差,密度遠低於其鄰居的樣本為異常值。LOF用於新穎性檢驗時,切勿在訓練集上使用預測、決定函數、實例得分,會導致結果錯誤。只能對新的看不見的數據(不在訓練集中)使用這些方法。
通常考慮鄰居數量(1)大於群集必須包含的最小樣本數,以便其他樣本可以是相對於該群集的局部離群值;(2)小於可能是局部異常值的最大進距采樣數,此類消息通常不可用,採用n_neighbors=20。
隔離林
在高維數據集中執行異常檢測的一種有效方法是使用隨機森林,分離的觀察通過隨機選擇一個函數,隨機選擇所選擇的特徵的最大值和最小值之間的分割值。遞歸分區可用樹結構表示,隔離樣本所需的拆分數量等於從根節點到終止結點的路徑長度。隨機樹的森林中的平均路徑長度是對正態性和決策函數的度量。隨機分區產生的異常路徑明顯較短,因此如果隨機樹森林為特定樣本生成的較短路徑,則該樹代表的值很可能是異常的。
OneClassSVM
無監督的離群值檢測,支持高維分布,基於libsvm
不假定數據分布的任何參數形式,可以更好的對數據的復雜形狀進行建模,能夠捕獲真實的數據結構,難點在於調整核函數寬度參數,以便在數據散布矩陣的形狀和數據過度擬合的風險間取得折中。
協方差橢圓密度
用於檢測高斯分布數據集中的異常值的對象
經驗協方差估計(作為非穩健估計)受到觀測值異質結構的高度影響;魯棒協方差估計能夠集中於數據分布的主要模式,但是它堅持假設數據是高斯分布,產生了對數據結構的某些估計,在一定程度上是准確的。
HBOS單維效果極佳,但是標准差方法的mask 掩碼效應嚴重。例如 數據通常在100以內,但是有兩個異常點,500,1000000。這個演算法就不能檢出500這個異常點。
對比而言,孤立森林理論上更適合大數據的異常檢測,且無掩碼效應。孤立森林確定異常時訓練只用樣本數據。每顆樹樣本數量默認只有256個,默認只用100顆樹。所以理論上25600個樣本就能確定海量數據中的異常點了。
Sklearn的 isolation forest 例子默認是讀入全量數據再采樣。如果配上warm up 選項就能分批放入采樣。
異常檢測的深度學習研究綜述
❽ 基於統計分析的異常檢測演算法有哪些
根據不同的需求來進行不同的處理1空洞這個肯定是像素顏色和周邊的不同建議用閾值分割然後輪廓檢測2褶皺這個褶皺肯定會有梯度的變化建議檢測邊緣再計算褶皺的梯度信息3劃痕這個和上一個問題相似但是也有不同應該是梯度的方向和強度不同(一個是凹一個是凸)4斑點如果只是點點星星的opencv里也有很多角點檢測演算法比如surffastORB等但是也不是每個必須獨立對應著相應的方法,比如求邊緣梯度的時候可以一次性處理處理好多信息。你往下做,還有疑問在這里提問就行,不用另開問題了。
❾ 大數據科學家需要掌握的幾種異常值檢測方法
引言
異常值檢測與告警一直是工業界非常關注的問題,自動准確地檢測出系統的異常值,不僅可以節約大量的人力物力,還能盡早發現系統的異常情況,挽回不必要的損失。個推也非常重視大數據中的異常值檢測,例如在運維部門的流量管理業務中,個推很早便展開了對異常值檢測的實踐,也因此積累了較為豐富的經驗。本文將從以下幾個方面介紹異常值檢測。
1、異常值檢測研究背景
2、異常值檢測方法原理
3、異常值檢測應用實踐
異常值檢測研究背景
異常值,故名思議就是不同於正常值的值。 在數學上,可以用離群點來表述,這樣便可以將異常值檢測問題轉化為數學問題來求解。
異常值檢測在很多場景都有廣泛的應用,比如:
1、流量監測
互聯網上某些伺服器的訪問量,可能具有周期性或趨勢性:一般情況下都是相對平穩的,但是當受到某些黑客攻擊後,其訪問量可能發生顯著的變化,及早發現這些異常變化對企業而言有著很好的預防告警作用。
2、金融風控
正常賬戶中,用戶的轉賬行為一般屬於低頻事件,但在某些金融詐騙案中,一些嫌犯的賬戶就可能會出現高頻的轉賬行為,異常檢測系統如果能發現這些異常行為,及時採取相關措施,則會規避不少損失。
3、機器故障檢測
一個運行中的流水線,可能會裝有不同的感測器用來監測運行中的機器,這些感測器數據就反應了機器運行的狀態,這些實時的監測數據具有數據量大、維度廣的特點,用人工盯著看的話成本會非常高,高效的自動異常檢測演算法將能很好地解決這一問題。
異常值檢測方法原理
本文主要將異常值檢測方法分為兩大類:一類是基於統計的異常值檢測,另一類是基於模型的異常值檢測。
基於統計的方法
基於模型的方法
1、基於統計的異常值檢測方法
常見的基於統計的異常值檢測方法有以下2種,一種是基於3σ法則,一種是基於箱體圖。
3σ法則
箱體圖
3σ法則是指在樣本服從正態分布時,一般可認為小於μ-3σ或者大於μ+3σ的樣本值為異常樣本,其中μ為樣本均值,σ為樣本標准差。在實際使用中,我們雖然不知道樣本的真實分布,但只要真實分布與正太分布相差不是太大,該經驗法則在大部分情況下便是適用的。
箱體圖也是一種比較常見的異常值檢測方法,一般取所有樣本的25%分位點Q1和75%分位點Q3,兩者之間的距離為箱體的長度IQR,可認為小於Q1-1.5IQR或者大於Q3+1.5IQR的樣本值為異常樣本。
基於統計的異常檢測往往具有計算簡單、有堅實的統計學基礎等特點,但缺點也非常明顯,例如需要大量的樣本數據進行統計,難以對高維樣本數據進行異常值檢測等。
2、基於模型的異常值檢測
通常可將異常值檢測看作是一個二分類問題,即將所有樣本分為正常樣本和異常樣本,但這和常規的二分類問題又有所區別,常規的二分類一般要求正負樣本是均衡的,如果正負樣本不均勻的話,訓練結果往往會不太好。但在異常值檢測問題中,往往面臨著正(正常值)負(異常值)樣本不均勻的問題,異常值通常比正常值要少得多,因此需要對常規的二分類模型做一些改進。
基於模型的異常值檢測一般可分為有監督模型異常值檢測和無監督模型異常值檢測,比較典型的有監督模型如oneclassSVM、基於神經網路的自編碼器等。 oneclassSVM就是在經典的SVM基礎上改進而來,它用一個超球面替代了超平面,超球面以內的值為正常值,超球面以外的值為異常值。
經典的SVM
1
基於模型的方法
2
基於神經網路的自編碼器結構如下圖所示。
自編碼器(AE)
將正常樣本用於模型訓練,輸入與輸出之間的損失函數可採用常見的均方誤差,因此檢測過程中,當正常樣本輸入時,均方誤差會較小,當異常樣本輸入時,均方誤差會較大,設置合適的閾值便可將異常樣本檢測出來。但該方法也有缺點,就是對於訓練樣本比較相近的正常樣本判別較好,但若正常樣本與訓練樣本相差較大,則可能會導致模型誤判。
無監督模型的異常值檢測是異常值檢測中的主流方法,因為異常值的標注成本往往較高,另外異常值的產生往往無法預料,因此有些異常值可能在過去的樣本中根本沒有出現過, 這將導致某些異常樣本無法標注,這也是有監督模型的局限性所在。 較為常見的無監督異常值檢測模型有密度聚類(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一種典型的無監督聚類方法,對某些類型的異常值檢測也能起到不錯的效果。該演算法原理網上資料較多,本文不作詳細介紹。
IF演算法最早由南京大學人工智慧學院院長周志華的團隊提出,是一種非常高效的異常值檢測方法,該方法不需要對樣本數據做任何先驗的假設,只需基於這樣一個事實——異常值只是少數,並且它們具有與正常值非常不同的屬性值。與隨機森林由大量決策樹組成一樣,IsolationForest也由大量的樹組成。IsolationForest中的樹叫isolation tree,簡稱iTree。iTree樹和決策樹不太一樣,其構建過程也比決策樹簡單,因為其中就是一個完全隨機的過程。
假設數據集有N條數據,構建一顆iTree時,從N條數據中均勻抽樣(一般是無放回抽樣)出n個樣本出來,作為這顆樹的訓練樣本。
在樣本中,隨機選一個特徵,並在這個特徵的所有值范圍內(最小值與最大值之間)隨機選一個值,對樣本進行二叉劃分,將樣本中小於該值的劃分到節點的左邊,大於等於該值的劃分到節點的右邊。
這樣得到了一個分裂條件和左、右兩邊的數據集,然後分別在左右兩邊的數據集上重復上面的過程,直至達到終止條件。 終止條件有兩個,一個是數據本身不可再分(只包括一個樣本,或者全部樣本相同),另外一個是樹的高度達到log2(n)。 不同於決策樹,iTree在演算法裡面已經限制了樹的高度。不限制雖然也可行,但出於效率考慮,演算法一般要求高度達到log2(n)深度即可。
把所有的iTree樹構建好了,就可以對測試數據進行預測了。預測的過程就是把測試數據在iTree樹上沿對應的條件分支往下走,直到達到葉子節點,並記錄這過程中經過的路徑長度h(x),即從根節點,穿過中間的節點,最後到達葉子節點,所走過的邊的數量(path length)。最後,將h(x)帶入公式,其中E(.)表示計算期望,c(n)表示當樣本數量為n時,路徑長度的平均值,從而便可計算出每條待測數據的異常分數s(Anomaly Score)。異常分數s具有如下性質:
1)如果分數s越接近1,則該樣本是異常值的可能性越高;
2)如果分數s越接近0,則該樣本是正常值的可能性越高;
RCF演算法與IF演算法思想上是比較類似的,前者可以看成是在IF演算法上做了一些改進。針對IF演算法中沒有考慮到的時間序列因素,RCF演算法考慮了該因素,並且在數據樣本采樣策略上作出了一些改進,使得異常值檢測相對IF演算法變得更加准確和高效,並能更好地應用於流式數據檢測。
IF演算法
RCF演算法
上圖展示了IF演算法和RCF演算法對於異常值檢測的異同。我們可以看出原始數據中有兩個突變異常數據值,對於後一個較大的突變異常值,IF演算法和RCF演算法都檢測了出來,但對於前一個較小的突變異常值,IF演算法沒有檢測出來,而RCF演算法依然檢測了出來,這意味著RCF有更好的異常值檢測性能。
異常值檢測應用實踐
理論還需結合實踐,下面我們將以某應用從2016.08.16至2019.09.21的日活變化情況為例,對異常值檢測的實際應用場景予以介紹:
從上圖中可以看出該應用的日活存在著一些顯著的異常值(比如紅色圓圈部分),這些異常值可能由於活動促銷或者更新迭代出現bug導致日活出現了比較明顯的波動。下面分別用基於統計的方法和基於模型的方法對該日活序列數據進行異常值檢測。
基於3σ法則(基於統計)
RCF演算法(基於模型)
從圖中可以看出,對於較大的突變異常值,3σ法則和RCF演算法都能較好地檢測出來, 但對於較小的突變異常值,RCF演算法則要表現得更好。
總結
上文為大家講解了異常值檢測的方法原理以及應用實踐。綜合來看,異常值檢測演算法多種多樣 ,每一種都有自己的優缺點和適用范圍,很難直接判斷哪一種異常檢測演算法是最佳的, 具體在實戰中,我們需要根據自身業務的特點,比如對計算量的要求、對異常值的容忍度等,選擇合適的異常值檢測演算法。
接下來,個推也會結合自身實踐,在大數據異常檢測方面不斷深耕,繼續優化演算法模型在不同業務場景中的性能,持續為開發者們分享前沿的理念與最新的實踐方案。
❿ 異常檢測統計學方法
1. 概述
2. 參數方法
3. 非參數方法
4. HBOS
5. 總結
<span id="1"></span>
統計學方法對數據的正常性做出假定。 它們假定正常的數據對象由一個統計模型產生,而不遵守該模型的數據是異常點。 統計學方法的有效性高度依賴於對給定數據所做的統計模型假定是否成立。
具體方法:先基於統計學方法確定一個概率分布模型,然後判斷各個離散點有多大概率符合該模型。
難點在於如何得到概率分布模型。首先是識別數據集的具體分布:數據的真實分布是否是現在手裡的數據集完全體現的。盡管許多類型的數據都可以用常見的分布(高斯分布、泊松分布或者二項式分布)來描述,但是具有非標准分布的數據集非常常見。如果選擇了錯誤的模型,則對象可能會被錯誤地識別為異常點。其次,如何確定使用屬性的個數,基於統計學的方法,數據的屬性一般具有一個或多個,那麼在建立概率分布模型的過程中究竟是用一個屬性還是多個屬性需要分析和嘗試。最後,當使用數據屬性很多時,模型比較復雜並且難以理解,會涉及到EM演算法。
異常檢測的統計學方法,有兩種具體的方法:參數方法和非參數方法。
<span id="2"></span>
假定正常的數據對象被一個以 為參數的參數分布產生。該參數分布的概率密度函數 給出對象 被該分布產生的概率。該值越小, 越可能是異常點。
<span id="2.1"></span>
僅涉及一個屬性或變數的數據稱為一元數據。我們假定數據分布符合正態分布,然後通過現有的數據得到正態分布的關鍵參數,把低概率的點識別為異常點。
假定輸入的數據集為 ,數據集中的樣本服從正態分布,即存在一個 和 ,使得 。這里的 和 可以通過計算求得。
計算公式如下:
求出上述的參數後,我們就可以根據概率密度函數計算每個數據點服從正態分布的概率,或者說離散數據點的概率。
概率計算公式為:
需要確定一個閾值,這個閾值一般是經驗值,可以選擇在驗證集上使得評估指標值最大的閾值取值作為最終閾值。如果計算出來的概率低於閾值,就可以認為該數據點為異常點。
例如常用的3sigma原則,如果數據點超過范圍 ,那麼這些點可能是異常點。
這個方法還可以用於可視化。參考箱型圖,以數據集的上下四分位數(Q1和Q3)、中點等參數,異常點常被定義為小於 和 。其中, 。
利用python畫一個箱型圖:
<span id="2.2"></span>
涉及兩個或多個屬性或變數的數據稱為多元數據。分為兩種情況,一種是特徵相互獨立,一種是特徵間不相互獨立。
<span id="2.2"></span>
當數據是多元數據的時候,核心思想是把多元異常點檢測任務轉換為一元異常點檢測問題。例如基於正態分布的一元異常點檢測擴充到多元情形時,可以求出每一維度的均值和標准差。對於第 維:
計算概率密度函數:
<span id="2.2.2"></span>
<span id="2.3"></span>
當實際數據很復雜時,可以考慮建立混合參數模型,假定數據集 包含來自兩個概率分布: 是大多數(正常)對象的分布,而 是異常對象的分布。數據的總概率分布可以記作
其中, 是一個數據對象; 是0和1之間的數,給出離群點的期望比例。
<span id="3"></span>
相比參數方法,非參數方法對數據做較少的假定,不做先驗概率分布,因而在更多情況下被使用。
直方圖是一種頻繁使用的非參數統計模型,可以用來檢測異常點。該過程包括如下兩步:
步驟1:構造直方圖。使用輸入數據(訓練數據)構造一個直方圖。該直方圖可以是一元的,或者多元的(如果輸入數據是多維的)。
盡管非參數方法並不假定任何先驗統計模型,但是通常確實要求用戶提供參數,以便由數據學習。例如,用戶必須指定直方圖的類型(等寬的或等深的)和其他參數(直方圖中的箱數或每個箱的大小等)。與參數方法不同,這些參數並不指定數據分布的類型。
步驟2:檢測異常點。為了確定一個對象是否是異常點,可以對照直方圖檢查它。在最簡單的方法中,如果該對象落入直方圖的一個箱中,則該對象被看作正常的,否則被認為是異常點。
對於更復雜的方法,可以使用直方圖賦予每個對象一個異常點得分。例如令對象的異常點得分為該對象落入的箱的容積的倒數。
使用直方圖作為異常點檢測的非參數模型的一個缺點是, 很難選擇一個合適的箱尺寸 。一方面,如果箱尺寸太小,則許多正常對象都會落入空的或稀疏的箱中,因而被誤識別為異常點。另一方面,如果箱尺寸太大,則異常點對象可能滲入某些頻繁的箱中,因而「假扮」成正常的。
<span id="4"></span>
HBOS全名為:Histogram-based Outlier Score。它是一種單變數方法的組合,不能對特徵之間的依賴關系進行建模,但是計算速度較快,對大數據集友好。其基本假設是數據集的每個維度 相互獨立 。然後對每個維度進行區間(bin)劃分,區間的密度越高,異常評分越低。
HBOS演算法流程:
推導過程如下:
<span id="5"></span>