導航:首頁 > 解決方法 > 檢測異常值的方法

檢測異常值的方法

發布時間:2023-07-04 01:17:50

㈠ 異常值檢測演算法--箱線圖四分位檢測異常值

首先,給大家講下什麼叫四分位數。顧名思義,就是把一堆數據排序會分成四份,找出其中的那三個點。中間那個叫中位數,下面那個叫下四分位數據,上面那個叫上四孫隱分位數。如下圖:

中間的兩個數是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之差,其間包含了全部觀察值的一半。

㈡ spss 如何做異常點的檢驗

異常點。即:異常值
Spss中異常值檢查方法如下:
檢查異常值方法1:
最常用的方法就是對變數進行排序,這也是最簡單的方法。排序後對照最大值和最小值、全距等統計量可以看出數據的離群狀況。

檢查異常值方法2:
散點圖的優勢就在於直觀的呈現兩兩變數間的關系,尤其在兩變數間的線性關聯比較強的時候,如果有離群值,圖形偵察的結果會很明顯,不過(也包括矩陣散點等圖形)其局限在於,其本質還是變數間的兩兩間的關系,更多的多維信息的提供還是需要經驗去判斷。

檢查異常值方法3:
箱體圖為我們提供了數據百分位數的概念,例如四分位數(25%和75%)是將該變數分成約4個部分,分別提供了數據不同分位點附件的離散性,而且同時提供描述數據集中性的中位數,這樣在中間50%的數據上提供的信息將是異常豐富的。

檢查異常值方法4:
在主要統計建模過程中大多會提供異常值或極端值的診斷,例如距離的測算:cook距離、杠桿值等;影響統計量:DfBeta、協方差比率等。它們均有相應的經驗上的判斷標准,如果有些指標沒有相應的判斷異常值的標准,則可以通過排序的方式,找到其相對大小。

檢查異常值方法5:
標識異常個案,這里提供的是統計建模的方式偵查異常個案(注意它的結果有可能和我們其他方式偵查的結果有出處),這種方法主要通過兩步聚類的思想,找到不同個案間的相似性,通過對所在類別的評價計算出異常索引,然後找到對應的ID號,則該個案可能為異常值,至於對這些異常個案怎麼處理,分析人員作出何種決定,這個最好結合專業背景綜合判斷後續的處理方法。

檢查異常值方法6:
如果涉及的是時序數據,控制圖是不錯的選擇,在控制規則里提供了異常豐富的偵查異常個案的選項。
當然其他過程里也有一些細節的處理,例如,排列圖、誤差條形圖、可視離散化、缺失值診斷、數據驗證過程等。

㈢ 異常檢測(二)——傳統統計學方法

統計學方法有效性高度依賴於給定數據所做的統計的模型假設是否成立。

異常檢測的統計學方法的一般思想是:學習一個擬合給定數據集的生成模型,然後識別該模型低概率區域中的對象,把他們作為異常點
例如:正態分布的3個 之外的點為異常點,箱線圖中超過2個Q的點為異常點

根據如何指定和學習模型,異常檢測的統計學方法可以劃分為兩個主要的類型:參數方法和非參數方法

參數方法 假定正常的數據對象被一個以 為參數的參數分布產生。該參數分布的概率密度函數 給出對象 被該分布產生的概率。該值越小, 越可能成為異常點。

非參數方法 並不假定先驗統計模型,而是試圖從輸入數據確定模型。非參數方法通常假定參數的個數和性質都是靈活的,不預先確定(所以非參數方法並不是說模型是完全無參的,完全無參的情況下從數據學習模型是不可能的)。

僅涉及一個屬性或變數的數據稱為一元數據。我們假定數據由正態分布產生,然後可以由輸入數據學習正態分布的參數,並把低概率的點識別為異常點。

假定輸入數據集為 ,數據集中的樣本服從正態分布,即 ,我們可以根據樣本求出參數 和 。

求出參數之後,我們就可以根據概率密度函數計算數據點服從該分布的概率。正態分布的概率密度函數為

如果計算出來的概率低於閾值,就可以認為該數據點為異常點。

閾值是個經驗值,可以選擇在驗證集上使得評估指標值最大(也就是效果最好)的閾值取值作為最終閾值。

例如常用的3sigma原則中,如果數據點超過范圍 ,那麼這些點很有可能是異常點。

這個方法還可以用於可視化。箱線圖對數據分布做了一個簡單的統計可視化,利用數據集的上下四分位數(Q1和Q3)、中點等形成。異常點常被定義為小於Q1-1.5IQR或大於Q3+1.5IQR的那些數據。

用Python畫一個簡單的箱線圖:

涉及兩個或多個屬性或變數的數據稱為多元數據。許多一元異常點檢測方法都可以擴充,用來處理多元數據。其核心思想是把多元異常點檢測任務轉換成一元異常點檢測問題。例如基於正態分布的一元異常點檢測擴充到多元情形時,可以求出每一維度的均值和標准差。對於第 維:

計算概率時的概率密度函數為

這是在各個維度的特徵之間相互獨立的情況下。如果特徵之間有相關性,就要用到多元高斯分布了。

在許多情況下假定數據是由正態分布產生的。當實際數據很復雜時,這種假定過於簡單,可以假定數據是被混合參數分布產生的。

在異常檢測的非參數方法中,「正常數據」的模型從輸入數據學習,而不是假定一個先驗。通常,非參數方法對數據做較少假定,因而在更多情況下都可以使用。

例子:使用直方圖檢測異常點。

直方圖是一種頻繁使用的非參數統計模型,可以用來檢測異常點。該過程包括如下兩步:

步驟1:構造直方圖。使用輸入數據(訓練數據)構造一個直方圖。該直方圖可以是一元的,或者多元的(如果輸入數據是多維的)。

盡管非參數方法並不假定任何先驗統計模型,但是通常確實要求用戶提供參數,以便由數據學習。例如,用戶必須指定直方圖的類型(等寬的或等深的)和其他參數(直方圖中的箱數或每個箱的大小等)。與參數方法不同,這些參數並不指定數據分布的類型。

步驟2:檢測異常點。為了確定一個對象是否是異常點,可以對照直方圖檢查它。在最簡單的方法中,如果該對象落入直方圖的一個箱中,則該對象被看作正常的,否則被認為是異常點。

對於更復雜的方法,可以使用直方圖賦予每個對象一個異常點得分。例如令對象的異常點得分為該對象落入的箱的容積的倒數。

使用直方圖作為異常點檢測的非參數模型的一個缺點是,很難選擇一個合適的箱尺寸。一方面,如果箱尺寸太小,則許多正常對象都會落入空的或稀疏的箱中,因而被誤識別為異常點。另一方面,如果箱尺寸太大,則異常點對象可能滲入某些頻繁的箱中,因而「假扮」成正常的。

BOS全名為:Histogram-based Outlier Score。它是一種單變數方法的組合,不能對特徵之間的依賴關系進行建模,但是計算速度較快,對大數據集友好。其基本假設是數據集的每個維度相互獨立。然後對每個維度進行區間(bin)劃分,區間的密度越高,異常評分越低。

HBOS演算法流程:

1.為每個數據維度做出數據直方圖。對分類數據統計每個值的頻數並計算相對頻率。對數值數據根據分布的不同採用以下兩種方法:

靜態寬度直方圖:標準的直方圖構建方法,在值范圍內使用k個等寬箱。樣本落入每個桶的頻率(相對數量)作為密度(箱子高度)的估計。時間復雜度:

2.動態寬度直方圖:首先對所有值進行排序,然後固定數量的 個連續值裝進一個箱里,其 中N是總實例數,k是箱個數;直方圖中的箱面積表示實例數。因為箱的寬度是由箱中第一個值和最後一個值決定的,所有箱的面積都一樣,因此每一個箱的高度都是可計算的。這意味著跨度大的箱的高度低,即密度小,只有一種情況例外,超過k個數相等,此時允許在同一個箱里超過 值。

時間復雜度:

2.對每個維度都計算了一個獨立的直方圖,其中每個箱子的高度表示密度的估計。然後為了使得最大高度為1(確保了每個特徵與異常值得分的權重相等),對直方圖進行歸一化處理。最後,每一個實例的HBOS值由以下公式計算:

推導過程:

假設樣本p第 i 個特徵的概率密度為 ,則p的概率密度可以計算為: 兩邊取對數: 概率密度越大,異常評分越小,為了方便評分,兩邊乘以「-1」: 最後可得:

1.異常檢測的統計學方法由數據學習模型,以區別正常的數據對象和異常點。使用統計學方法的一個優點是,異常檢測可以是統計上無可非議的。當然,僅當對數據所做的統計假定滿足實際約束時才為真。

2.HBOS在全局異常檢測問題上表現良好,但不能檢測局部異常值。但是HBOS比標准演算法快得多,尤其是在大數據集上。

㈣ 如何判別測量數據中是否有異常值

一般異常值的檢測方法有基於統計的方法,基於聚類的方法,以及一些專門檢測異常值的方法等,下面對這些方法進行相關的介紹。

1. 簡單統計

如果使用pandas,我們可以直接使用describe()來觀察數據的統計性描述(只是粗略的觀察一些統計量),不過統計數據為連續型的,如下:

df.describe()紅色箭頭所指就是異常值。

以上是常用到的判斷異常值的簡單方法。下面來介紹一些較為復雜的檢測異常值演算法,由於涉及內容較多,僅介紹核心思想,感興趣的朋友可自行深入研究。

4. 基於模型檢測

這種方法一般會構建一個概率分布模型,並計算對象符合該模型的概率,把具有低概率的對象視為異常點。如果模型是簇的集合,則異常是不顯著屬於任何簇的對象;如果模型是回歸時,異常是相對遠離預測值的對象。

離群點的概率定義:離群點是一個對象,關於數據的概率分布模型,它具有低概率。這種情況的前提是必須知道數據集服從什麼分布,如果估計錯誤就造成了重尾分布。

比如特徵工程中的RobustScaler方法,在做數據特徵值縮放的時候,它會利用數據特徵的分位數分布,將數據根據分位數劃分為多段,只取中間段來做縮放,比如只取25%分位數到75%分位數的數據做縮放。這樣減小了異常數據的影響。

優缺點:(1)有堅實的統計學理論基礎,當存在充分的數據和所用的檢驗類型的知識時,這些檢驗可能非常有效;(2)對於多元數據,可用的選擇少一些,並且對於高維數據,這些檢測可能性很差。

5. 基於近鄰度的離群點檢測

統計方法是利用數據的分布來觀察異常值,一些方法甚至需要一些分布條件,而在實際中數據的分布很難達到一些假設條件,在使用上有一定的局限性。

確定數據集的有意義的鄰近性度量比確定它的統計分布更容易。這種方法比統計學方法更一般、更容易使用,因為一個對象的離群點得分由到它的k-最近鄰(KNN)的距離給定。

需要注意的是:離群點得分對k的取值高度敏感。如果k太小,則少量的鄰近離群點可能導致較低的離群點得分;如果K太大,則點數少於k的簇中所有的對象可能都成了離群點。為了使該方案對於k的選取更具有魯棒性,可以使用k個最近鄰的平均距離。

優缺點:(1)簡單;(2)缺點:基於鄰近度的方法需要O(m2)時間,大數據集不適用;(3)該方法對參數的選擇也是敏感的;(4)不能處理具有不同密度區域的數據集,因為它使用全局閾值,不能考慮這種密度的變化。

5. 基於密度的離群點檢測

從基於密度的觀點來說,離群點是在低密度區域中的對象。基於密度的離群點檢測與基於鄰近度的離群點檢測密切相關,因為密度通常用鄰近度定義。一種常用的定義密度的方法是,定義密度為到k個最近鄰的平均距離的倒數。如果該距離小,則密度高,反之亦然。另一種密度定義是使用DBSCAN聚類演算法使用的密度定義,即一個對象周圍的密度等於該對象指定距離d內對象的個數。

優缺點:(1)給出了對象是離群點的定量度量,並且即使數據具有不同的區域也能夠很好的處理;(2)與基於距離的方法一樣,這些方法必然具有O(m2)的時間復雜度。對於低維數據使用特定的數據結構可以達到O(mlogm);(3)參數選擇是困難的。雖然LOF演算法通過觀察不同的k值,然後取得最大離群點得分來處理該問題,但是,仍然需要選擇這些值的上下界。

6. 基於聚類的方法來做異常點檢測

基於聚類的離群點:一個對象是基於聚類的離群點,如果該對象不強屬於任何簇,那麼該對象屬於離群點。

離群點對初始聚類的影響:如果通過聚類檢測離群點,則由於離群點影響聚類,存在一個問題:結構是否有效。這也是k-means演算法的缺點,對離群點敏感。為了處理該問題,可以使用如下方法:對象聚類,刪除離群點,對象再次聚類(這個不能保證產生最優結果)。

優缺點:(1)基於線性和接近線性復雜度(k均值)的聚類技術來發現離群點可能是高度有效的;(2)簇的定義通常是離群點的補,因此可能同時發現簇和離群點;(3)產生的離群點集和它們的得分可能非常依賴所用的簇的個數和數據中離群點的存在性;(4)聚類演算法產生的簇的質量對該演算法產生的離群點的質量影響非常大。

7. 專門的離群點檢測

其實以上說到聚類方法的本意是是無監督分類,並不是為了尋找離群點的,只是恰好它的功能可以實現離群點的檢測,算是一個衍生的功能。

㈤ 大數據科學家需要掌握的幾種異常值檢測方法

引言

異常值檢測與告警一直是工業界非常關注的問題,自動准確地檢測出系統的異常值,不僅可以節約大量的人力物力,還能盡早發現系統的異常情況,挽回不必要的損失。個推也非常重視大數據中的異常值檢測,例如在運維部門的流量管理業務中,個推很早便展開了對異常值檢測的實踐,也因此積累了較為豐富的經驗。本文將從以下幾個方面介紹異常值檢測。

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)基於密度的技術:僅當一個點的局部密度顯著低於它的大部分近鄰時才將其分類為離群點。

二、異常點檢測的方法

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)比如一列數據你打開看全部是數字,當你把它當數值型處理,它會報錯;那就得仔細查找原因,遇到比較多的情況是一列數字中夾雜了幾個奇怪的字元串或者符號等元素,如果幾萬條數據中只有一兩個這種字元,即使認真從前到後仔細查看也很難發現還浪費大量時間,效率極低。


還有一種情況比較常見,就是看起來是數字,實際上都是字元串的形式,但是以表格查看的時候是看不到字元串的引號;這兩種情況可以通過查看特徵類型來提前發現,在python中用type()或者dtypes()函數,兩者使用對象有差別,可自行了解;


2)幾種常用異常值檢測方法:


閱讀全文

與檢測異常值的方法相關的資料

熱點內容
兔球蟲病有什麼土方法治療 瀏覽:837
腮腺腫瘤早期治療方法 瀏覽:164
中醫對中暑治療方法 瀏覽:211
pico方法研究問題舉例 瀏覽:304
有優力防水怎麼使用方法 瀏覽:36
成人快速止癢的方法 瀏覽:330
紅米note3自帶內存卡在哪裡設置方法 瀏覽:959
夢妝眼霜使用方法 瀏覽:674
教案裡面過程與方法目標怎麼寫 瀏覽:983
豬肉炒制的正確方法 瀏覽:242
超小變壓器的測量方法 瀏覽:403
木門測量方法和注意事項 瀏覽:927
姜力怎麼使用方法 瀏覽:438
恆冠15l釣箱天窗安裝方法 瀏覽:907
台式機電腦截圖方法 瀏覽:461
dj水果機如何破解方法 瀏覽:163
里美雞蛋面膜使用方法 瀏覽:782
怎麼變雙眼皮天然方法 瀏覽:395
黴菌性鼻竇炎的最好治療方法 瀏覽:906
油鋸鏈條連接的方法 瀏覽:331