1. 程式人生 > >吳恩達機器學習:異常檢測與協同過濾

吳恩達機器學習:異常檢測與協同過濾

這是吳恩達機器學習的最後一課,這次學習的內容是機器學習的常見應用,異常檢測與協同過濾。課程中介紹的異常檢測主要基於 正態分佈,用於檢測出偏離正常值的資料。而協同過濾是 推薦系統 的一部分,利用已有使用者的評分來給你推薦商品、視訊等。

點選 課程視訊 你就能不間斷地學習 Ng 的課程,關於課程作業的 Python 程式碼已經放到了 Github 上,點選 課程程式碼 就能去 Github 檢視( 無法訪問 Github 的話可以點選 Coding 檢視 ),程式碼中的錯誤和改進歡迎大家指出。

以下是 Ng 機器學習課程第八週的筆記。

異常檢測

通常使用異常檢測的情況是在一個含有正常和異常的資料集中,異常樣本數目遠小於正常樣本數目,使得無法從異常資料中提取有效的特徵。於是只能通過學習正常資料的分佈來識別異常資料。具體來說,我們通過資料學習一個概率模型

p(x),並通過一個閾值 ϵ 來判斷資料是否異常。從直觀上來理解正常資料雖然由於誤差等原因有所偏離,但基本都還在一個區域範圍內,而異常資料則會離這個區域比較遠( 如下圖,紅圈裡的可以看做異常值 )。
異常檢測

演算法

在異常檢測中,假設特徵是相互獨立的而且服從正態分佈 xjN(μj,δj2),所以:

p(x)=j=1np(xj;μj,δj2)=j=1n12πδje(xjμj)22δj2
然後我們只要通過資料計算 μiδi 就可以得到
p(x)
了,於是有如下演算法:
  1. 選擇有助於區分異常資料的特徵 xi
  2. 分別計算 μ1,...,μn,δ12,...,δn2
    μj=1mi=1mxj(i)δj2=1mi=1m(xj(i)μj)2
  3. 對於需要檢測異常的資料 x 計算 p(x),如果 p(x)<ϵ 則判斷為異常。

演算法在特徵比較多時計算效率比較高,而且在通常情況下即使特徵不獨立也能夠得到比較好的結果。如果特徵比較少並且特徵之間又相互關聯的情況,這時候我們可以使用 多元正態分佈

來作為模型,此時 p(x) 為:

p(x)=1(2π)k|Σ|e12(xμ)TΣ1(xμ)
式中的