異常檢測的應用
定義
給定一些數據集D={x1,x2,…,xm},注意這些樣本是unlabel的,構建一個模型p(x),對於一個新的樣本xtest,判斷該樣本是否異常。當p(xtest)≤ϵ時爲異常,p(xtest)>ϵ爲正常的。
高斯分佈
高斯分佈又稱正態分佈
如果一個實數服從高斯分佈,表示爲X∼N(μ,σ),μ是均值,控制函數的中心,σ是方差,控制函數的寬度。
公式
N(μ,σ)=2πσ21e−2σ2(x−μ)2
異常檢測算法
-
數據集X={x1,x2,…,xm},x∈Rn
-
計算每個特徵j的高斯分佈參數μj,σj:
μj=m1i=1∑mxji
σj2=m1i=1∑m(xji−μj)2
-
對於每一個待測試樣本,計算
p(x)=j=1∏np(xj;μj;σj2)=j=1∏n2πσj21e−2σj2(xj−μj)2
-
將結果跟閾值ϵ比較,p(x)<ϵ則爲異常
建立一個異常檢測系統的一般步驟
- 將帶有label的數據集劃分爲訓練集、驗證集和測試集
注意將異常數據大致平均分配到每個集合中
通常情況下,驗證集和測試集的數據都應該是互不相同的,即兩個集合沒有交集
- 使用訓練集訓練算法P(x)
爲了避免正負樣本分佈不均,使用F1-score來評價算法性能
- 使用驗證集來選擇閾值ϵ
異常檢測和監督學習的區別
異常檢測
- 正例(異常樣本)通常都非常少,通常是10這個數量級。
- 反例(正常樣本)數量非常多。
- 異常的種類非常多,無法通過特徵一一確定。未來的異常種類不能預見。
監督學習
- 正例和反例都非常多,並且分佈差異不大
- 可以用特徵來確定分類
數據預處理
當特徵的樣本分佈爲正態分佈時,可以直接將樣本fit到算法中
當數據爲長尾分佈時
使用
x=log(x+c)orx=xc,c<1
來將數據轉換爲正態分佈