統計學方法有效性高度依賴於給定數據所做的統計的模型假設是否成立。
異常檢測的統計學方法的壹般思想是:學習壹個擬合給定數據集的生成模型,然後識別該模型低概率區域中的對象,把他們作為異常點
例如:正態分布的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比標準算法快得多,尤其是在大數據集上。