異常檢測 anomaly detection

異常檢測的應用

  • 欺詐檢測
  • 工業質量監測
  • 計算機集羣監測
  • 等等

定義

給定一些數據集D={x1,x2,,xm}D=\{x_1,x_2,\dots,x_m\},注意這些樣本是unlabel的,構建一個模型p(x)p(x),對於一個新的樣本xtestx_{test},判斷該樣本是否異常。當p(xtest)ϵp(x_{test})\le \epsilon時爲異常,p(xtest)>ϵp(x_{test})> \epsilon爲正常的。

高斯分佈

高斯分佈又稱正態分佈

如果一個實數服從高斯分佈,表示爲XN(μ,σ)X \sim N(\mu,\sigma),μ\mu是均值,控制函數的中心,σ\sigma是方差,控制函數的寬度。

公式

N(μ,σ)=12πσ2e(xμ)22σ2 N(\mu,\sigma)=\frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}

異常檢測算法

  • 數據集X={x1,x2,,xm},xRnX=\{x^1,x^2,\dots,x^m\},x\in \mathbb{R}^n

  • 計算每個特徵jj的高斯分佈參數μj,σj\mu_j,\sigma_j:
    μj=1mi=1mxji \mu_j=\frac{1}{m}\sum_{i=1}^{m}x_j^i
    σj2=1mi=1m(xjiμj)2 \sigma_j^2=\frac{1}{m}\sum_{i=1}^{m}(x_j^i-\mu_j)^2

  • 對於每一個待測試樣本,計算
    p(x)=j=1np(xj;μj;σj2)=j=1n12πσj2e(xjμj)22σj2 p(x)=\prod_{j=1}^{n}p(x_j;\mu_j;\sigma_j^2)=\prod_{j=1}^{n}\frac{1}{\sqrt{2\pi\sigma_j^2}} e^{-\frac{(x_j-\mu_j)^2}{2\sigma_j^2}}

  • 將結果跟閾值ϵ\epsilon比較,p(x)<ϵp(x) < \epsilon則爲異常

建立一個異常檢測系統的一般步驟

  • 將帶有label的數據集劃分爲訓練集、驗證集和測試集

    注意將異常數據大致平均分配到每個集合中

    通常情況下,驗證集和測試集的數據都應該是互不相同的,即兩個集合沒有交集
  • 使用訓練集訓練算法P(x)

    爲了避免正負樣本分佈不均,使用F1-score來評價算法性能
  • 使用驗證集來選擇閾值ϵ\epsilon

異常檢測和監督學習的區別

異常檢測

  • 正例(異常樣本)通常都非常少,通常是10這個數量級。
  • 反例(正常樣本)數量非常多。
  • 異常的種類非常多,無法通過特徵一一確定。未來的異常種類不能預見。

監督學習

  • 正例和反例都非常多,並且分佈差異不大
  • 可以用特徵來確定分類

數據預處理

當特徵的樣本分佈爲正態分佈時,可以直接將樣本fit到算法中

當數據爲長尾分佈時

使用
x=log(x+c)orx=xc,c<1 x=log(x+c) \\ or\\ x=x^c,\quad c<1
來將數據轉換爲正態分佈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章