機器學習筆記——異常檢測(anomaly detection)
異常檢測
當我們需要讓一個系統從許多未標註的資料中學習到某些正常的特徵,從而能夠診斷出非正常的資料,我們把這個過程叫做異常檢測
我們要做的就是對於給定的一組特徵值,我們輸出一個概率,如果這個概率值小於某個臨界值,代表資料異常
演算法
我們可以採用高斯函式來擬合這個概率值,對於某個特徵,我們計算出它的均值與方差,之後就可以得到一個高斯概率分佈,然後我們將所有特徵的高斯分佈函式相乘作為我們的最終概率
以下是一個二元特徵概率輸出分佈的例子
演算法評估
對於異常檢測,我們用類似監督學習的例子來對演算法進行評估,我們將資料進行異常與非異常的標準,然後將資料集分為訓練集、驗證集與測試集
我們用訓練集來擬合概率函式,再在驗證集上求出精準率與召回率,來選擇最佳的閾值,最後在測試集上進行演算法效能測試
與監督學習對比
那麼我們有了標定的資料,為什麼我們不採用監督學習來完成這項工作呢,我們下面有這兩種演算法的對比,其中最重要的原因就是異常的樣本太少,監督學習演算法無法從樣本中學習到異常的特徵,因此當異常樣本過少的時候我們往往會採用異常檢測演算法
特徵選擇
有的時候我們發現特徵不滿足高斯分佈,這個時候我們對特徵進行變換,使得特徵大致呈現高斯分佈的樣子會使演算法取得更好的效果
多變數高斯分佈
讓我們觀察這樣一組資料,我們會發現對於左圖左上角藍色×的資料也有很高的概率值,會被演算法判斷為正常資料,這個問題的原因就是我們在之前做了一個假設就是各個變數是獨立的,因此我們最後的概率是各個特徵的概率相乘得到的。因此當各個變數之間有相關關係時演算法就不能得到很好的結果
為此我們可以採用多元高斯分佈,其中∑為協方差矩陣
我們可以看到當不同特徵之間的協方差不為0時,高斯分佈可以朝向一個特定方向進行延展
一下是將高斯分佈運用到異常檢測的過程
獨立分佈是多元高斯分佈的一種特殊情況,也就是協方差矩陣除了主對角線上的元素都是0
當變數之間出現相關關係的時候我們可以人工創造新的變數來消除這種相關關係,而多元高斯分佈的好處就是能夠自動幫你捕捉這種相關關係。但是我們在實踐中仍然是原始模型使用的多,因為多元高斯分佈模型通常需要很大的計算量