1. 程式人生 > 其它 >異常檢測二:基於統計學的方法

異常檢測二:基於統計學的方法

技術標籤:人工智慧

異常檢測二:基於統計學的方法


本文為學習筆記~

概述

統計學⽅法對資料的正常性做出假定。**它們假定正常的資料物件由⼀個統計模型產⽣,而不遵守該模型 的資料是異常點。**統計學⽅法的有效性⾼度依賴於對給定資料所做的統計模型假定是否成⽴。
異常檢測的統計學⽅法的⼀般思想是:學習⼀個擬合給定資料集的⽣成模型,然後識別該模型低概率區域中的物件,把它們作為異常點。
即利⽤統計學⽅法建⽴⼀個模型,然後考慮物件有多⼤可能符合該模型。
根據如何指定和學習模型,異常檢測的統計學⽅法可以劃分為兩個主要型別:引數⽅法和⾮引數⽅法。

引數⽅法假定正常的資料物件被⼀個以 θ \theta θ 為引數的引數分佈產⽣。該引數分佈的概率密度函式 f ( x , θ ) f(x, \theta) f(x,θ)給出物件 x x x被該分佈產⽣的概率。該值越小, 越可能是異常點。
⾮引數⽅法並不假定先驗統計模型,而是試圖從輸⼊資料確定模型。⾮引數⽅法通常假定引數的個數和性質都是靈活的,不預先確定(所以⾮引數⽅法並不是說模型是完全⽆參的,完全⽆參的情況下從資料 學習模型是不可能的)。

引數方法

基於正態分佈的一元異常點檢測

僅涉及⼀個屬性或變數的資料稱為⼀元資料。我們假定資料由正態分佈產⽣,然後可以由輸⼊資料學習 正態分佈的引數,並把低概率的點識別為異常點。

假定輸⼊資料集為 { x ( 1 ) , x ( 2 ) , … , x ( m ) } \{x^{(1)}, x^{(2)},\ldots, x^{(m)}\} {x(1),x(2),,x(m)},資料集中的樣本服從正態分佈,即 x ( i ) ∽ N ( μ , σ 2 ) x^{(i)} \backsim N(\mu,\sigma^2) x(i)N(μ,σ2),我們可以根據樣本求出引數 μ \mu μ σ \sigma σ

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

如果計算出來的概率低於閾值,就可以認為該資料點為異常點。 閾值是個經驗值,可以選擇在驗證集上使得評估指標值最⼤(也就是效果最好)的閾值取值作為最終閾值。
例如常⽤的3sigma原則中,如果資料點超過範圍 ( μ − 3 σ , μ + 3 σ ) (\mu-3\sigma, \mu+3\sigma) (μ3σ,μ+3σ),那麼這些點很有可能是異常點。 這個⽅法還可以⽤於視覺化。箱線圖對資料分佈做了⼀個簡單的統計視覺化,利⽤資料集的上下四分位 數(Q1和Q3)、中點等形成。異常點常被定義為小於Q1-1.5IQR或⼤於Q3+1.5IQR的那些資料。
⽤Python畫⼀個簡單的箱線圖:

import numpy as np
import seaborn as sns 
import matplotlib.pyplot as plt 
data = np.random.randn(50000) * 20 + 20 sns.boxplot(data=data)

多元異常點檢測

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

計算概率時的概率密度函式為:

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

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

使用混合引數分佈

在許多情況下假定資料是由正態分佈產⽣的。當實際資料很複雜時,這種假定過於簡單,可以假定資料 是被混合引數分佈產⽣的。

非引數方法

在異常檢測的⾮引數⽅法中,“正常資料”的模型從輸⼊資料學習,而不是假定⼀個先驗。通常,⾮引數 ⽅法對資料做較少假定,因而在更多情況下都可以使⽤。
例⼦:使⽤直⽅圖檢測異常點。
直⽅圖是⼀種頻繁使⽤的⾮引數統計模型,可以⽤來檢測異常點。該過程包括如下兩步:
步驟1:構造直⽅圖。使⽤輸⼊資料(訓練資料)構造⼀個直⽅圖。該直⽅圖可以是⼀元的,或者多元的 (如果輸⼊資料是多維的)。
儘管⾮引數⽅法並不假定任何先驗統計模型,但是通常確實要求⽤⼾提供引數,以便由資料學習。例 如,⽤⼾必須指定直⽅圖的型別(等寬的或等深的)和其他引數(直⽅圖中的箱數或每個箱的⼤小 等)。與引數⽅法不同,這些引數並不指定資料分佈的型別。
步驟2:檢測異常點。為了確定⼀個物件是否是異常點,可以對照直⽅圖檢查它。在最簡單的⽅法中,如 果該物件落⼊直⽅圖的⼀個箱中,則該物件被看作正常的,否則被認為是異常點。
對於更復雜的⽅法,可以使⽤直⽅圖賦予每個物件⼀個異常點得分。例如令物件的異常點得分為該物件 落⼊的箱的容積的倒數。
使⽤直⽅圖作為異常點檢測的⾮引數模型的⼀個缺點是,很難選擇⼀個合適的箱尺⼨。⼀⽅⾯,如果箱 尺⼨太小,則許多正常物件都會落⼊空的或稀疏的箱中,因而被誤識別為異常點。另⼀⽅⾯,如果箱尺 ⼨太⼤,則異常點物件可能滲⼊某些頻繁的箱中,因而“假扮”成正常的。

HBOS

HBOS全名為:Histogram-based Outlier Score。它是⼀種單變數⽅法的組合,不能對特徵之間的依賴 關係進⾏建模,但是計算速度較快,對⼤資料集友好。其基本假設是資料集的每個維度相互獨⽴。然後 對每個維度進⾏區間(bin)劃分,區間的密度越⾼,異常評分越低。
HBOS演算法流程:
1.為每個資料維度做出資料直⽅圖。對分類資料統計每個值的頻數並計算相對頻率。對數值資料根據分 布的不同採⽤以下兩種⽅法:

  • 靜態寬度直⽅圖:標準的直⽅圖構建⽅法,在值範圍內使⽤k個等寬箱。樣本落⼊每個桶的頻率 (相對數量)作為密度(箱⼦⾼度)的估計。
    時間複雜度: O ( n ) O(n) O(n)
  • 動態寬度直⽅圖:⾸先對所有值進⾏排序,然後固定數量的N/K個連續值裝進⼀個箱⾥,其 中N是總例項數,k是箱個數;直⽅圖中的箱⾯積表⽰例項數。因為箱的寬度是由箱中第⼀個值和最後 ⼀個值決定的,所有箱的⾯積都⼀樣,因此每⼀個箱的⾼度都是可計算的。這意味著跨度⼤的箱的 ⾼度低,即密度小,只有⼀種情況例外,超過k個數相等,此時允許在同⼀個箱⾥超過N/K值。
    時間複雜度: O ( n × l o g ( n ) ) O(n \times log(n)) O(n×log(n))
    2.對每個維度都計算了⼀個獨⽴的直⽅圖,其中每個箱⼦的⾼度表⽰密度的估計。然後為了使得最⼤⾼ 度為1(確保了每個特徵與異常值得分的權重相等),對直⽅圖進⾏歸⼀化處理。最後,每⼀個例項的
    HBOS值由以下公式計算:

總結

1.異常檢測的統計學⽅法由資料學習模型,以區別正常的資料物件和異常點。使⽤統計學⽅法的⼀個優 點是,異常檢測可以是統計上⽆可⾮議的。當然,僅當對資料所做的統計假定滿⾜實際約束時才為真。
2.HBOS在全域性異常檢測問題上表現良好,但不能檢測區域性異常值。但是HBOS⽐標準演算法快得多,尤其 是在⼤資料集上。