系列文章: 吳恩達《Machine Learning》精煉筆記 1:監督學習與非監督學習 吳恩達《Machine Learning》精煉筆記 2:梯度下降與正規方程 吳恩達《Machine Learning》精煉筆記 3:回歸問題和正則化 吳恩達《Machine Learning》精煉筆記 4:神經網絡基礎 吳恩達《Machine Learning》精煉筆記 5:神經網絡 吳恩達《Machine Learning》精煉筆記 6:關于機器學習的建議 吳恩達《Machine Learning》精煉筆記 7:支援向量機 SVM 吳恩達《Machine Learning》精煉筆記 8:聚類 KMeans 及其 Python實作 吳恩達《Machine Learning》精煉筆記 9:PCA 及其 Python 實作 在本文中主要講解了機器學習中的異常檢測問題,主要包含:
- 問題産生
- 高斯分布
- 算法使用場景
- 八種無監督異常檢測技術
- 異常檢測和監督學習對比
- 特征選擇
異常檢測Novelty Detection
異常是相對于其他觀測資料而言有明顯偏離的,以至于懷疑它與正常點不屬于同一個資料分布。
異常檢測是一種用于識别不符合預期行為的異常模式的技術,又稱之為異常值檢測。
在商業中也有許多應用,如網絡入侵檢測(識别可能發出黑客攻擊的網絡流量中的特殊模式)、系統健康性監測、信用卡交易欺詐檢測、裝置故障檢測、風險識别等
問題動機
異常檢測主要是運用于非監督學習的算法。問題的引出:通過飛機的檢測開始。
檢測飛機的引擎制造商生産了一批飛機引擎,測試了其中的一些特征變量,比如引擎運轉時産生的熱量,或者引擎的振動等。
假設有m個引擎,資料如下:

我們繪制出如下圖表:
對于給定的資料集,需要檢測xtestxtest是不是異常的,即這個測試資料不屬于這組資料的幾率是多少。
從上圖看出,在藍色圈内屬于該組的機率高,越是偏遠的機率,屬于該組的可能性就越低。
另外兩個異常檢測的應用例子是
- 識别欺騙行為,通過使用者多久登陸一次、通路過的頁面、釋出文章的數量等建立模型,通過模型來識别那些不符合該模型的使用者。
- 檢測資料中心的使用情況:記憶體使用、被通路的磁盤數量、CPU負載等
高斯分布也叫正态分布。分布滿足:
機率密度函數為:
均值μ為:
方差σ2為 :
高斯分布的樣例為
當均值μ相同的時候
- 方差的平方越大,圖形是矮胖的
- 方差的平方越小,圖形是瘦高型的
使用場景
異常檢測算法的使用場景一般是三種:
- 在做特征工程的時候需要對異常的資料做過濾,防止對歸一化等處理的結果産生影響
- 對沒有标記輸出的特征資料做篩選,找出異常的資料
- 對有标記輸出的特征資料做二分類時,由于某些類别的訓練樣本非常少,類别嚴重不平衡,此時也可以考慮用非監督的異常點檢測算法來做
算法
算法的具體過程是
- 對于給定的資料集:
- 計算每個特征的μ;σ2 的估計值
- 兩個參數的估計值為:
利用高斯分布進行計算p(x)
兩個特征的訓練集及特征非部分情況
三維圖表示的是密度函數,z軸為根據兩個特征的值估計的p(x)的值
當 p(x)>ε時候,預測是正常資料, 否則為異常
異常算法的設計
當我們開發一個異常檢測系統時,從帶标記(異常或正常)的資料着手
- 從其中選擇一部分正常資料用于建構訓練集
- 然後用剩下的正常資料和異常資料混合的資料構成交叉檢驗集和測試集。
- 基于統計的異常檢測技術
-
- MA滑動平均法
- 3—Sigma(拉依達準則)
- 基于密度的異常檢測
- 基于聚類的異常檢測
- 基于``K-Means`聚類的異常檢測
- One Class SVM的異常檢測
- Isolation Forest的異常檢測
- PCA+MD的異常檢測
- AutoEncoder異常檢測
異常檢測中采用的也是帶标記的資料,和監督學習類似。二者對比為:
當正樣本的數量很少,甚至有時候是0,即出現了太多沒見過的不同的異常類型,對于這些問題,通常應該使用的算法就是異常檢測算法。
異常檢測算法是基于高斯分布的。當然不滿足高斯分布也能處理,但是最好轉成高斯分布。誤差分析是特征選擇中很重要的點。
有些異常資料可能出現較高的p(x)的值,被算法當做是正常資料。通過誤差分析,增加新的特征得到新的算法,幫助我們更好地進行異常檢測。
新特征擷取:通過原有特征進行組合,得到新的特征