Ⅰ 異常檢測(二)——傳統統計學方法
統計學方法有效性高度依賴於給定數據所做的統計的模型假設是否成立。
異常檢測的統計學方法的一般思想是:學習一個擬合給定數據集的生成模型,然後識別該模型低概率區域中的對象,把他們作為異常點
例如:正態分布的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.鍧囧兼濇兂
鍧囧兼槸瀵規墍瑕佺爺絀跺硅薄鐨勭畝鏄庤岄噸瑕佺殑浠h〃銆傚畠鍛婅瘔鎴戜滑緇熻¤よ瘑闂棰樻槸浠庡叾鍙戝睍鐨勪竴鑸瑙勫緥鏉ョ湅,瑕佹眰瑙傚療鍏朵竴鑸鍙戝睍瓚嬪娍,閬垮厤涓鍒鍋剁劧鐜拌薄鐨勫共鎵,浣撶幇浜嗘諱綋瑙;鍚屾椂渚ч噸鐐逛笉鍦ㄦ昏勬ā鎴栦釜浣,浣撶幇浜嗘暟閲忚傚拰鎺ㄦ柇瑙傘傚洜姝ゅ潎鍊兼濇兂瑕佹眰浠庢諱綋涓婄湅闂棰,瑙傚療鍏朵竴鑸鍙戝睍瓚嬪娍,閬垮厤涓鍒鍋剁劧鐜拌薄鐨勫共鎵,浣撶幇浜嗘諱綋瑙傘佹暟閲忚傚拰鎺ㄦ柇瑙傘
2.鍙樺紓鎬濇兂
緇熻$爺絀跺悓綾葷幇璞$殑鎬諱綋鐗瑰緛錛屽畠鐨勫墠鎻愬垯鏄鎬諱綋鍚勫崟浣嶇殑鐗瑰緛瀛樺湪鐫宸寮傘傜粺璁℃柟娉曞氨鏄瑕佽よ瘑浜嬬墿鏁伴噺鏂歸潰鐨勫樊寮傘傜粺璁″﹀弽鏄犲彉寮傛儏鍐佃緝鍩烘湰鐨勬傚康鏄鏂瑰樊錛屾槸琛ㄧず鈥滃彉寮傗濈殑鈥滀竴鑸姘村鉤鈥濈殑姒傚康銆傚鉤鍧囦笌鍙樺紓閮芥槸瀵瑰悓綾諱簨鐗╃壒寰佺殑鎶借薄鍜屽畯瑙傚害閲忋
3.浼拌℃濇兂
浼拌℃濇兂閫氳繃鏍鋒湰鎴栬呮ā鏉挎潵瀵規湭鐭ヤ簨鐗╂垨鑰呮湭鍙戠敓浜嬬墿榪涜屼及璁℃帹嫻嬬殑鎬濇兂錛岃繖鏄鎴戜滑瀵瑰拰妯℃澘鎴栨牱鏈鐩哥被浼間簨鐗╃殑涓縐嶅墠鐬繪ф濇兂錛岀敱涓涓浜嬬墿鐨勭壒鐐瑰拰瑙勫緥鏉ユ帹嫻嬪叾浠栦簨鐗╋紝瀵硅繖浜涗簨鐗╄繘琛岃よ瘑銆備嬌鐢ㄤ及璁℃柟娉曟湁涓涓棰勮撅細鏍鋒湰涓庢諱綋鍏鋒湁鐩稿悓鐨勬ц川銆傛牱鏈鎵嶈兘浠h〃鎬諱綋銆備絾鏍鋒湰鐨勪唬琛ㄦу彈鍋剁劧鍥犵礌褰卞搷錛屽湪浼拌$悊璁哄圭疆淇$▼搴︾殑嫻嬮噺灝辨槸淇濇寔閫昏緫涓ヨ皚鐨勫繀瑕佹ラゃ
4.鐩稿叧鎬濇兂
浜嬬墿鏄鏅閬嶈仈緋葷殑錛屽湪鍙樺寲涓錛岀粡甯稿嚭鐜頒竴浜涗簨鐗╃浉闅忓叡鍙樻垨鐩擱殢鍏辯幇鐨勬儏鍐碉紝鎬諱綋鍙堟槸鐢辮稿氫釜鍒浜嬪姟鎵緇勬垚錛岃繖浜涗釜鍒浜嬬墿鏄鐩鎬簰鍏寵仈鐨勶紝鑰屾垜浠鎵鐮旂┒鐨勪簨鐗╂諱綋鍙堟槸鍦ㄥ悓璐ㄦх殑鍩虹涓婂艦鎴愩傚洜鑰岋紝鎬諱綋涓鐨勪釜浣撲箣闂淬佽繖涓鎬諱綋涓庡彟涓鎬諱綋涔嬮棿鎬繪槸鐩鎬簰鍏寵仈鐨勩
5.鎷熷悎鎬濇兂
鎷熷悎鏄瀵逛笉鍚岀被鍨嬩簨鐗╀箣闂村叧緋諱箣琛ㄨ薄鐨勬娊璞°備換浣曚竴涓鍗曚竴鐨勫叧緋誨繀欏諱緷璧栧叾浠栧叧緋昏屽瓨鍦錛屾墍鏈夊疄闄呬簨鐗╃殑鍏崇郴閮借〃鐜板緱闈炲父澶嶆潅錛岃繖縐嶆柟娉曞氨鏄瀵硅勫緥鎴栬秼鍔跨殑鎷熷悎銆傛嫙鍚堢殑鎴愭灉鏄妯″瀷錛屽弽鏄犱竴鑸瓚嬪娍銆傝秼鍔胯〃杈劇殑鏄鈥滀簨鐗╁拰鍏崇郴鐨勫彉鍖栬繃紼嬪湪鏁伴噺涓婃墍浣撶幇鐨勬ā寮忓拰鍩轟簬姝よ岄勭ず鐨勫彲鑳芥р濄
6.媯楠屾濇兂
緇熻℃柟娉曟繪槸褰掔撼鎬х殑錛屽叾緇撹烘案榪滃甫鏈変竴瀹氱殑鎴栫劧鎬э紝鍩轟簬灞閮ㄧ壒寰佸拰瑙勫緥鎵鎺ㄥ箍鍑烘潵鐨勫垽鏂涓嶅彲鑳藉畬鍏ㄥ彲淇★紝媯楠岃繃紼嬪氨鏄鍒╃敤鏍鋒湰鐨勫疄闄呰祫鏂欐潵媯楠屼簨鍏堝規諱綋鏌愪簺鏁伴噺鐗瑰緛鐨勫亣璁炬槸鍚﹀彲淇°
7. 褰掔撼鎬濇兂銆傚綊綰蟲硶鏄涓縐嶅甫鏈夌粨璁烘х殑鎬濇兂錛岄氳繃鍏朵粬緇撹鴻繘琛屾葷粨褰掔撼寰楀嚭椋熺墿鐨勭壒鎬ф垨瑙勫緥錛岃繖縐嶆濇兂鏈夋椂寰楀嚭鐨勭粨璁烘湭蹇呮槸鐪熷疄鐨勶紝瑕佺湅鎵閫夊彇鐨勭礌鏉愭槸鍚︽槸浜嬬墿鐨勫叏閮錛屼簨鐗╃殑閮ㄥ垎瑙勫緥鏈夊彲鑳藉緱鍑虹殑緇撹烘槸閿欒鐨勶紝鍥犳よ繕闇瑕佸疄闄呰祫鏂欐潵瀵圭粨璁鴻繘琛屾楠屻