異常點檢測


異常點檢測算法(一)

1.基於正態分布的一元離群點檢測方法

在正態分布的假設下,區域  包含了99.7% 的數據,如果某個值距離分布的均值  超過了 ,那么這個值就可以被簡單的標記為一個異常點(outlier)。

2. 多元離群點的檢測方法

(1)基於一元正態分布的離群點檢測方法

在正態分布的假設下,如果有一個新的數據 ,可以計算概率 如下:

根據概率值的大小就可以判斷 x 是否屬於異常值。

(2)多元高斯分布的異常點檢測

(3)使用 Mahalanobis 距離檢測多元離群點

(4)使用  統計量檢測多元離群點

 

異常值檢測算法(二)

(一)主成分分析(Principle Component Analysis)

  在主成分分析(PCA)這種降維方法中,數據從原來的坐標系轉換到新的坐標系,新坐標系的選擇是由數據集本身所決定的。第一個新坐標軸的方向選擇的是原始數據集中方差最大的方向,第二個新坐標軸的選擇是和第一個坐標軸正交並且具有最大方差的方向。該過程一直重復,重復的次數就是原始數據中特征的數目。如此操作下去,將會發現,大部分方差都包含在最前面的幾個新坐標軸之中。因此,我們可以忽略余下的坐標軸,也就是對數據進行了降維的處理。

(二)基於矩陣分解的異常點檢測方法

  基於矩陣分解的異常點檢測方法的關鍵思想是利用主成分分析去尋找那些違背了數據之間相關性的異常點。為了發現這些異常點,基於主成分分析(PCA)的算法會把原始數據從原始的空間投影到主成分空間,然后再把投影拉回到原始的空間。如果只使用第一主成分來進行投影和重構,對於大多數的數據而言,重構之后的誤差是小的;但是對於異常點而言,重構之后的誤差依然相對大。這是因為第一主成分反映了正常值的方差,最后一個主成分反映了異常點的方差。

 

異常點檢測算法(三)

RNN 算法( Replicator Neural Networks)

 又叫自編碼器,是一個多層前饋的神經網絡 (multi-layer feed-forward neural networks)。在 Replicator Neural Networks 中,輸入的變量也是輸出的變量,模型中間層節點的個數少於輸入層和輸出層節點的個數。這樣的話,模型就起到了壓縮數據和恢復數據的作用。

 訓練的目標就是使得整體的輸出誤差足夠小,整體的誤差是由所有的樣本誤差之和除以樣本的個數得到的。

 如果使用已經訓練好的 RNN 模型,異常值的分數就可以定義為重構誤差(reconstruction error)。

BP 算法的目的是最小化訓練集上的累計誤差  其中 m 是訓練集合中樣本的個數。不過,標准的 BP 算法每次僅針對一個訓練樣例更新連接權重和閾值,也就是說,標准 BP 算法的更新規則是基於單個的  推導而得到的。通過類似的計算方法可以推導出累計誤差的最小化更新規則,那就得到了累計誤差逆傳播(accumulate error backpropagation)算法。標准 BP 算法需要進行更多次的迭代,並且參數的更新速度快,累積 BP 算法必須掃描一次訓練集合才會進行一次參數的更新,而且累計誤差下降到一定的程度以后 ,進一步下降就會明顯變慢,此時標准 BP 算法往往會更快的得到較好的解,尤其是訓練集合大的時候。

訓練方法:

(1)把數據集合的每一列都進行歸一化;

(2)選擇 70% 的數據集合作為訓練集合,30% 的數據集合作為驗證集合。或者 訓練集合 : 驗證集合 = 8 : 2,這個需要根據情況而定。

(3)隨機生成一個三層的神經網絡結構,里面的權重都是隨機生成,范圍在 [0,1] 內。輸入層的數據和輸出層的數據保持一致,並且神經網絡中間層的節點個數是輸入層的一半。

(4)使用后向傳播算法(back-propagation)來訓練模型。為了防止神經網絡的過擬合,通常有兩種策略來防止這個問題。(i)第一種策略是“早停”(early stopping):當訓練集合的誤差降低,但是驗證集合的誤差增加時,則停止訓練,同時返回具有最小驗證集合誤差的神經網絡;(ii)第二種策略是“正則化”(regularization):基本思想是在誤差目標函數中增加一個用於描述網絡復雜度的部分,例如鏈接權和閥值的平方和。

參考文獻:

[1] Anomaly Detection Using Replicator Neural Networks Trained on Examples of One Class, Hoang Anh Dau, Vic Ciesielski, Andy Song

[2] Replicator Neural Networks for Outlier Modeling in Segmental Speech Recognition, Laszlo Toth and Gabor Gosztolya

[3] Outlier Detection Using Replicator Neural Networks, Simon Hawkins, Honxing He, Graham Williams and Rohan Baxter

異常點檢測算法綜述

 

常用的激活函數:

 

每個激活函數(或非線性函數)的輸入都是一個數字,然后對其進行某種固定的數學操作。下面是在實踐中可能遇到的幾種激活函數:左邊是Sigmoid非線性函數,將實數壓縮到[0,1]之間。右邊是tanh函數,將實數壓縮到[-1,1]。

Sigmoid非線性函數 的公式為: 

tanh函數的輸出是零中心的。因此,在實際操作中,tanh非線性函數比sigmoid非線性函數更受歡迎。注意tanh神經元是一個簡單放大的sigmoid神經元,具體說來就是:tanh(x)=2\sigma(2x)-1

 

左邊是ReLU(校正線性單元:Rectified Linear Unit)激活函數,當x=0時函數值為0。當x>0函數的斜率為1。右邊是從 Krizhevsky等的論文中截取的圖表,指明使用ReLU比使用tanh的收斂快6倍。

ReLU。在近些年ReLU變得非常流行。它的函數公式是f(x)=max(0,x)。換句話說,這個激活函數就是一個關於0的閾值(如上圖左側)。使用ReLU有以下一些優缺點:

  • 優點:相較於sigmoid和tanh函數,ReLU對於隨機梯度下降的收斂有巨大的加速作用(Krizhevsky 等的論文指出有6倍之多)。據稱這是由它的線性,非飽和的公式導致的。
  • 優點:sigmoid和tanh神經元含有指數運算等耗費計算資源的操作,而ReLU可以簡單地通過對一個矩陣進行閾值計算得到。
  • 缺點:在訓練的時候,ReLU單元比較脆弱並且可能“死掉”。舉例來說,當一個很大的梯度流過ReLU的神經元的時候,可能會導致梯度更新到一種特別的狀態,在這種狀態下神經元將無法被其他任何數據點再次激活。如果這種情況發生,那么從此所以流過這個神經元的梯度將都變成0。也就是說,這個ReLU單元在訓練中將不可逆轉的死亡,因為這導致了數據多樣化的丟失。例如,如果學習率設置得太高,可能會發現網絡中40%的神經元都會死掉(在整個訓練集中這些神經元都不會被激活)。通過合理設置學習率,這種情況的發生概率會降低。

用ReLU非線性函數。注意設置好學習率,或許可以監控你的網絡中死亡的神經元占的比例。如果單元死亡問題困擾你,就試試Leaky ReLU或者Maxout,不要再用sigmoid了。也可以試試tanh,但是其效果應該不如ReLU或者Maxout


免責聲明!

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



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