機器學習——異常值檢測


機器學習——異常檢測


在生產生活中,由於設備的誤差或者人為操作失當,產品難免會出現錯誤。然后檢查錯誤對人來說又是一個十分瑣碎的事情。利用機器學習進行異常值檢測可以讓人類擺脫檢錯的煩惱。

檢測算法

  • 1.選定容易出錯的\(n\)個特征\(\{x_1^{(i)},x_2^{(i)},\ldots,x_n^{(i)}\}\)作為變量。
  • 2.計算m個樣本的平均值和方差。

\[{\mu_j} = {1 \over m}\sum\limits_{i = 1}^m {x_j^{(i)}} \]

\[{\sigma ^2} = {1 \over m}\sum\limits_{i = 1}^m {(x_j^{(i)}} - {\mu _j}{)^2} \]

  • 3.給定監測點\(x\).計算\(p(x)\)

\[p(x) = \prod \limits_{j = 1}^n {p({x_j};{\mu_j},\sigma_j^2)} \]

  • 4.如果\(p(x)< \epsilon\),則為異常值;反之,不是。

開發和評價一個異常檢測系統

異常檢測算法是一個非監督學習算法,意味着我們無法通過結果變量判斷我們的數據是否異常。所以我們需要另一種方法檢測算法是否有效。當我們開發一個系統時,我們從有標簽(知道是否異常)的數據入手,從中找出一部分正常數據作為訓練集,剩余的正常數據和異常數據作為交叉檢驗集和測試集。

具體評價方法如下:

  • 根據測試集數據,估計出特征的平均值和方差,構建\(p(x)\)函數
  • 對於交叉檢驗集,嘗試使用不同的\(\epsilon\)最為閾值,並預測數據是否異常,根據F1值或者查准率與查全率的比例來選擇\(\epsilon\)
  • 選出\(\epsilon\)后,針對測試集進行預測,計算異常檢驗系統的F1值或者查准率與查全率之比

異常檢測與監督學習對比

異常檢測 監督學習
大量的正常值(y=0)和少量的異常值(y=1) 大量的正向類(y=0)和少量的負向類(y=1)
異常數據太少,只能根據少量數據進行訓練 有足夠多的正向和負向數據以供訓練
舉例:1.欺詐行為檢測;2.生產廢品檢測;3.檢測機器運行狀態 舉例:1.郵箱過濾器;2.天氣預報;3.腫瘤分類

分布的處理

  • 對於高斯分布的數據,直接運用以上算法就好。
  • 但是對於非高斯分布的數據,雖然也可是使用上面的算法,但是效果不是很好,所以我們盡量將非高斯分布轉化成(近似)高斯分布,然后再進行處理。
  • 數據整體偏小,可以求\(ln(x)\)或者\(x^a,0<a<1\)
  • 數據整體偏大,可以求\(e^x\)或者\(x^a,a>1\)

誤差分析

在誤差分析中,如果我們可以發現我的選定的變量是否合適,進而進行相應的改正。如左圖所示,異常點\(x\)對應的概率很高,顯然這種分布方式不能很好地識別出異常值。所以我們嘗試增加變量或者改變變量的類型來識別異常值。如右圖所示,通過增加一個變量,我們能夠更好地識別異常點。所以,誤差分析對於一個問題來說還是很重要的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM