公開課地址:https://class.coursera.org/ml-003/class/index
授課老師:Andrew Ng
1、problem motivation(問題的產生)
先來看一個例子,假設我們要對飛機引擎進行檢測,我們知道飛機引擎的效能和很多因素相關,這裡我只選擇熱量和震動強度兩個因素,在擷取大量正常的資料以後,我們能在二維座標系中繪製出這兩個因素之間的關係,如紅色點所示:
現在有一個新的引擎送到我們這裡檢測,我們檢測了該引擎的熱量和震動強度,現在為了確定該引擎是否正常,可以通過判斷其對應點是否在正常地區內,如果在就可以認為該引擎正常,否則認為該引擎異常,中標註為anomaly的點就是異常點。
同樣,我們也可以根據點的密度來判斷異常情況,點越密表明越正常,否則就是異常,為了更好的衡量,我們可以設定一個閾值,當估計值小於閾值,證明密度過低,為異常情況:
異常檢測在製造業和資訊業的用處很大,除了上面提到的飛機引擎檢測,在資料中心中加入異常檢測可以判斷電腦是否運行正常。
2、gaussian distribution(高斯分布)
學過機率的同學肯定都知道高斯分布,它還有一個名字叫常態分佈,其分布形狀和運算式如下:
通過調整均值和方差,映像的形狀會發生變化,學過機率的直接無視:
假設我們已知樣本點服從高斯分布,我們就需要求出均值和方差,通過公式不難求得:
注意在計算方差時我們是除以m而不是常見的除以m-1,Adrew解釋稱這是為了計算方便,儘管期望不準確了,但這點誤差可以忽略。
3、algorithm(演算法)
現在我們已經知道了高斯分布的情況,那麼如何來計算一個樣本點的密度呢?我們首先假設樣本點中的每個特徵都滿足高斯分布,如果有n維特徵,那麼就有n個高斯分布:
某個樣本的密度就是該樣本點在n維高斯分布上的密度的乘積。下面是整個演算法過程:
可以看到,在給定新的樣本後,我們可以計算出密度值與閾值進行比較,如果小於閾值就認為是異常。下面是一個具體的例子:
4、developing and evaluating an anomaly detection system(開發評估一個異常檢測系統)
在開發一個系統之前我們首先要有資料:
比如針對前面提到的引擎問題,我們可以獲得下面資料:
注意在訓練集中不存在異常值,在驗證集和測試集中才包含異常值。然後就是訓練,驗證,測試,在評估模型好壞的時候可以採用前面提到的F1-score值來評價,至於閾值,也可以通過驗證的情況進行選擇:
5、anomaly detection vs. Supervised learning(異常檢測vs監督學習)
異常檢測是把異常區分出來,這一點類似於監督學習中的分類,不過這兩者還是存在較大區別的,例如異常檢測中異常值較少(positive),而監督學習中不存在這種情況,同時如果異常的種類太多或者未來異常難以預測也應該採用異常檢測而不是監督學習:
下面是這兩者的應用,從應用中也能看出上面提到的區別:
6、choosing what feature to use(選擇要使用的特徵)
前面我們都是假設樣本的特徵都是服從高斯分布的,實際情況並不如此,為此我們需要做一番變換:
可以看到,通過求log值,可以把左下方看起來不像高斯分布的情況變成高斯分布。同時我們希望p(x)在正常情況下儘可能大,在異常時儘可能小,但是經常會發現在這兩種情況下p(x)的值區別不大。考慮前面提到的資料中心監控問題,可以從當前的特徵中提取出新的特徵來滿足要求:
7、multivariate Gaussian distribution(多元高斯分布)
還是前面提到的資料中心的監控問題,這裡我們不再像之前那樣按照特徵分成多個高斯分布進行相乘,而是直接用一個高斯分布進行表示,這就是多元高斯分布,機率論中也提到過:
這裡方差是一個矩陣的形式體現的,也就是我們經常聽到的共變數矩陣,同時均值也是以矩陣形式體現的。多元意味著高斯分布不再是二維平面上的分布,而是在更高維的面上分布。下面是二維的情況,通過改變均值和共變數我們能看到分布的變化:
8、anomaly detection using the multivariate gaussian distribution(使用多元高斯分布異常檢測)
首先我們需要根據樣本點計算出多元高斯分布的均值和共變數:
然後計算新加入的樣本點的密度:
其實,多元高斯分布和前面的高斯分布是存在一定聯絡的,通過計算就會看到多元高斯分布中共變數矩陣的主對角元素也是由單個特徵的方差構成的:
最後是比較這兩種模型的特點:
可以看到,原始模型必須人工指定特徵,而多元模型會自動計算出特徵之間關係。不過原始模型沒有引入矩陣,計算簡單,同時針對樣本很少時也能正確執行。而多元模型在引入矩陣後計算複雜,由於要計算矩陣的逆,必須在樣本值大於特徵值的情況下執行。
------------------------------------------弱弱的分割線----------------------------------------------
這一講雖然是講的異常檢測,但其實是為了介紹高斯分布,可以說高斯分布在機器學習裡面用處也比較廣泛,經常使用的EM演算法的核心就是高斯分布,遺憾的是這裡並沒有提到。至於異常檢測,之前不知道這到底屬於有監督學習、無監督學習還是半監督學習,上維基看了一下明白了,同樣有這個疑惑的童鞋看這裡:
http://en.wikipedia.org/wiki/Anomaly_detection