給定數據集,先假設它們都是正常的,若是有一新的數據,想知道是否是異常,即這個測試數據不屬於該組數據的概率如何。算法
在上圖中,在藍色圈內的數據屬於該組數據的可能性較高,而越是偏遠的數據,其屬於該組數據的可能性就越低。函數
這種方法稱爲密度估計學習
用高數函數來檢測是否異常,通常正常的數據都會集中在某個範圍,若是一個數據出如今密度很疏密的地方,那麼就有很大的概率是異常的。測試
相似與高中學的正態分佈,但又有所不一樣。高數分佈圖:優化
它的實現首先須要算出平均值和方差,一旦得到了這兩個參數,那麼就能夠判斷新的數據是不是異常的機率了。lua
例如:spa
異常檢測算法是一個非監督學習算法,意味着咱們沒法根據結果變量 y 的值來告訴咱們數據是否真的是異常的。orm
咱們須要另外一種方法來幫助檢驗算法是否有效。當咱們開發一個異常檢測系 統時,咱們從帶標記(異常或正常)的數據着手,咱們從其中選擇一部分正常數據用於構建訓 練集,而後用剩下的正常數據和異常數據混合的數據構成交叉檢驗集和測試集。開發
例如:咱們有 10000 臺正常引擎的數據,有 20 臺異常引擎的數據。 咱們這樣分配數據:
6000 臺正常引擎的數據做爲訓練集
2000 臺正常引擎和 10 臺異常引擎的數據做爲交叉檢驗集
2000 臺正常引擎和 10 臺異常引擎的數據做爲測試集
it
具體的評價方法以下:
一、根據測試集數據,咱們估計特徵的平均值和方差並構建 p(x)函數
二、對交叉檢驗集,咱們嘗試使用不一樣的 ε 值做爲閥值,並預測數據是否異常,根據 F1值或者查準率與查全率的比例來選擇 ε
三、選出 ε 後,針對測試集進行預測,計算異常檢驗系統的 F1 值,或者查準率與查全率之比
對於異常檢測算法,咱們使用的特徵是相當重要的,下面談談如何選擇特徵:
異常檢測假設特徵符合高斯分佈,若是數據的分佈不是高斯分佈,異常檢測算法也可以工做,可是最好仍是將數據轉換成高斯分佈,例如使用對數函數:x = log(x+c),其中 c 爲非
負常數; 或者 x=xc,c 爲 0-1 之間的一個分數,等方法。
偏差分析:
一個常見的問題是一些異常的數據可能也會有較高的 p(x)值,於是被算法認爲是正常的。這種狀況下偏差分析可以幫助咱們,咱們能夠分析那些被算法錯誤預測爲正常的數據,觀察
可否找出一些問題。咱們可能能從問題中發現咱們須要增長一些新的特徵,增長這些新特徵後得到的新算法可以幫助咱們更好地進行異常檢測。
假使咱們有兩個相關的特徵,並且這兩個特徵的值域範圍比較寬,這種狀況下,通常的高斯分佈模型可能不能很好地識別異常數據。其緣由在於,通常的高斯分佈模型嘗試的是去
同時抓住兩個特徵的誤差,所以創造出一個比較大的斷定邊界。
咱們首先計算全部特徵的平均值,而後再計算協方差矩陣:
注:其中 μ 是一個向量,其每個單元都是原特徵矩陣中一行數據的均值。最後咱們計算多元高斯分佈的 p(x):
其中: |Σ|是定矩陣,在 Octave 中用 det(sigma)計算
例如:
多元高斯分佈和多元正態分佈:
我有一組樣本{x(1),x(2),...,x(m)}是一個 n 維向量,我想個人樣原本自一個多元高斯分佈。我如未嘗試估計個人參數μ和Σ以及標準公式?
估計他們是你設置μ是你的訓練樣本的平均值。
並設置Σ:
這其實只是當咱們使用 PCA 算法時候,有Σ時寫出來。
好比電影推薦系統,根據人的不一樣喜好而推薦不一樣的電影
符號定義:
nu 表明用戶的數量
nm 表明電影的數量
r(i,j)若是用戶 i 給電影 j 評過度則 r(i,j)=1
y(i,j)表明用戶 i 給電影 j 的評分
mj 表明用戶 j 評過度的電影的總數
在咱們的例子中,咱們能夠假設每部電影都有兩個特徵,如 x1表明電影的浪漫程度,x2 表明電影的動做程度。
下面咱們要基於這些特徵來構建一個推薦系統算法。 假設咱們採用線性迴歸模型,咱們能夠針對每個用戶都訓練一個線性迴歸模型,如 θ(1)是第一個用戶的模型的參數。 於
是,咱們有:
θ(j)用戶 j 的參數向量
x(i)電影 i 的特徵向量
對於用戶 j 和電影 i,咱們預測評分爲:(θ(j))Tx(i)
代價函數以下:
上面的代價函數只是針對一個用戶的,爲了學習全部用戶,咱們將全部用戶的代價函數求和:
若是咱們要用梯度降低法來求解最優解,咱們計算代價函數的偏導數後獲得梯度降低的更新公式爲:
在以前的基於內容的推薦系統中,對於每一部電影,咱們都掌握了可用的特徵,使用這些特徵訓練出了每個用戶的參數。相反地,若是咱們擁有用戶的參數,咱們能夠學習得出
電影的特徵。
可是若是咱們既沒有用戶的參數,也沒有電影的特徵,這兩種方法都不可行了。協同過濾算法能夠同時學習這二者。
咱們的優化目標便改成同時針對 x 和 θ 進行。
對代價函數求偏導數的結果以下:
注:在協同過濾從算法中,咱們一般不使用方差項,若是須要的話,算法會自動學得。協同過濾算法使用步驟以下:
一、初始 x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu)爲一些隨機小值
二、使用梯度降低算法最小化代價函數
三、在訓練完算法後,咱們預測(θ(j))Tx(i)爲用戶 j 給電影 i 的評分
協同過濾