什麼是異常檢測?
假想你是乙個飛機引擎製造商,當你生產的飛機引擎從生產線上流出時,你需要進行 qa(質量控制測試),而作為這個測試的一部分,你測量了飛機引擎的一些特徵變數,比如引 擎運轉時產生的熱量,或者引擎的振動等等。
這樣一來你就有了乙個資料集,從
假如有一天,你生產了乙個新的飛機,那麼你想檢測這個飛機是否正常,這個飛機的的特徵變數是
在圖中,藍色圓圈內部表示屬於該組資料的可能性較高,越是偏遠的地方,可能性就越低。
這種方法稱為密度估計,表達如下:
再乙個例子是檢測乙個資料中心,特徵可能包含:記憶體使用情況,被訪問的磁碟數量, cpu 的負載,網路的通訊量等。根據這些特徵可以構建乙個模型,用來判斷某些計算機是不 是有可能出錯了。
高斯分布也叫作正態分佈。
這一節,我們應用高斯分布開發異常檢測演算法。
當p(x)<
異常檢測演算法是乙個非監督學習演算法,意味著我們無法根據結果變數 ? 的值來告訴我 們資料是否真的是異常的。我們需要另一種方法來幫助檢驗演算法是否有效。當我們開發乙個 異常檢測系統時,我們從帶標記(異常或正常)的資料著手,我們從其中選擇一部分正常數 據用於構建訓練集,然後用剩下的正常資料和異常資料混合的資料構成交叉檢驗集和測試 集。
例如:我們有 10000 臺正常引擎的資料,有 20 臺異常引擎的資料。
我們這樣分配數 據:
6000 臺正常引擎的資料作為訓練集
2000 臺正常引擎和 10 臺異常引擎的資料作為交叉檢驗集
2000 臺正常引擎和 10 臺異常引擎的資料作為測試集
具體的評價方法如下:
1. 根據測試集資料,我們估計特徵的平均值和方差並構建?(?)函式
2. 對交叉檢驗集,我們嘗試使用不同的?值作為閥值,並**資料是否異常,根據 f1 值 或者查準率與查全率的比例來選擇 ?
3. 選出 ? 後,針對測試集進行**,計算異常檢驗系統的?1值,或者查準率與查全率 之比。
之前我們構建的異常檢測系統也使用了帶標記的資料,與監督學習有些相似,下面的對 比有助於選擇採用監督學習還是異常檢測:
另外,對於很多技術公司可能會遇到的一些問題,通 常來說,正樣本(異常資料)的數量很少,甚至有時候是 0,也就是說,出現了太多沒見過的不同的異常 型別,那麼對於這些問題,通常應該使用的演算法就是異常檢測演算法。
異常檢測假設特徵符合高斯分布,如果資料的分布不是高斯分布,異常檢測演算法也能夠 工作,但是最好還是將資料轉換成高斯分布,例如使用對數函式:? = ???(? + ?),其中 ? 為非負常數;或者 ? =
編者注:在 python 中,通常用 np.log1p()函式,???1?就是 ???(? + 1),可以避免 出現負數結果,反向函式就是 np.expm1()
乙個常見的問題是一些異常的資料可能也會有較高的?(?)值,因而被演算法認為是正常的。 這種情況下誤差分析能夠幫助我們,我們可以分析那些被演算法錯誤**為正常的資料,觀察 能否找出一些問題。我們可能能從問題中發現我們需要增加一些新的特徵,增加這些新特徵 後獲得的新演算法能夠幫助我們更好地進行異常檢測。
《吳恩達機器學習》15 異常檢測
二 異常檢測方法應用 三 多變數的高斯分布 總結異常檢測首先不是檢測機器學習演算法中的異常,也不是乙個演算法,它指的是一種應用場景 剛開始時我也陷入這兩種猜測。比如在工廠內生產一批零件,我們用高斯分布的方法來 新生產的零件的異常狀況。這就是本章學習的內容 異常檢測 正態分佈 normal distr...
吳恩達機器學習系列1 2
指通過讓機器學習大量帶有標籤的樣本資料,訓練出乙個模型,並使該模型可以根據輸入得到相應輸出的過程。通過已有的一部分輸入資料與輸出資料之間的對應關係,生成乙個函式,將輸入對映到合適的輸出,例如分類。或者回歸。常見應用 垃圾郵件問題 判斷乳腺癌良性惡性等。詳細內容見 一文看懂監督學習 從無標註的資料中學...
吳恩達機器學習筆記
為了解決實際生活中的問題,我們通常需要乙個數學模型。比如,小明有乙個房子 他想賣掉房子 為了知道房子的 小明收集了該地區近兩年的房屋交易 他發現房屋 與房屋大小呈正相關,所以他畫了了一幅圖 小明的房屋大小用紅色的 代替。可見和小明房屋一樣大小的房子並不存在,而類似的房屋 又有很大差別,如此小明決定用...