吳恩達公開課心得——異常檢測算法

異常檢測的問題

異常檢測問題一般是這樣的。

吳恩達公開課心得——異常檢測算法

也就是說通過給定的無標籤數據的統計特徵,建立概率模型。然後用該概率模型來預測那些數據是異常的,即這些數據的出現概率很低。

比如網站需要檢測異常用戶,它就需要記錄用戶的登陸頻率,訪問某個頁面的次數,論壇發帖的次數,用戶的打字速度等等,然後用這幾個維度建立一個統一的概率模型,然後就可以判斷新的用戶是否存在異常。

異常檢測算法

對於每個特徵都構建一個正態分佈的概率函數,然後總的概率就取這些概率的乘積。即便存在非獨立的情況,這個算法也大體上能正常工作。

吳恩達公開課心得——異常檢測算法

評估異常檢測算法

要評估這個算法,就需要有帶標籤的數據用作交叉驗證集和測試集。這一點和有監督的學習算法又有點像。

假設又10000個正常的樣本和20個異常的樣本。

那麼,可以設置6000個正常的樣本用作訓練集,然後取2000個正常樣本和10個異常樣本用作交叉驗證集,剩下的2000個正常樣本和另10個異常樣本用作測試集。

可用的評價指標包括

測準率和召回率或者F1-score等。

何時使用異常檢測算法

當你的樣本中有大量的正常樣本和極少數的異常樣本時,使用異常檢測算法的效果比使用有監督學習算法更有效。

假如將來出現的異常樣本的原因可能與當前的異常原因不同,那麼對於這種新異常,用異常檢測算法效果更好。

如何選擇特徵

假如某個特徵的直方圖呈高斯分佈,那麼這個特徵比較適合用於異常檢測。假如某些特徵分佈的兩邊不對稱,可以採用log(x+C)處理。或者指數處理。

吳恩達公開課心得——異常檢測算法

假如使用異常檢測算法,某個異常樣本獲得了一個較高的概率,那麼就需要檢視特徵是否足夠合理,或者是否需要增加新的特徵,用來區分出這個異常樣本。例如兩個特徵的商或者乘積等等。

多維高斯分佈

有時候兩個特徵之間具有一定的相關性,用之前的建模方法可能需要多次嘗試不同的新特徵,才能建立合理的模型。如果採用多維高斯分佈模型,可以直接把相關性考慮到模型中去。建立的模型更加精確。以下是兩維高斯分佈的協方差矩陣對最終概率分佈的影響。非常直觀,建議收藏。

吳恩達公開課心得——異常檢測算法

吳恩達公開課心得——異常檢測算法

吳恩達公開課心得——異常檢測算法

吳恩達公開課心得——異常檢測算法

吳恩達公開課心得——異常檢測算法

吳恩達公開課心得——異常檢測算法

應用場景

那麼是否可以用多維高斯分佈取代之前的異常檢測算法(不考慮相關性)呢?顯然不行。

當特徵較少(m>10n)時,可以考慮多維高斯分佈。當特徵非常多時,可以考慮不考慮相關性的異常檢測算法,通過構建新的特徵來處理相關性。因為特徵多的時候,協方差矩陣求逆將是一個非常好運算量的事情,另外協方差矩陣還存在不可求逆的可能。


分享到:


相關文章: