本周内容較多,故分為上下兩篇文章。
一、内容概要
1. Anomaly Detection
- Density Estimation
- Problem Motivation
- Gaussian Distribution
- Algorithm
- Building an Anomaly Detection System(建立異常檢測系統)
- Developing and Evaluating an Anomaly Detection System
- Anomaly Detection vs. Supervised Learning
- Choosing What Features to Use
- Multivariate Gaussion Distribution(多元高斯分布)
- Multivariate Gaussion Distribution
- Anomaly Detection using the Multivariate Gaussion Distribution
2. Recommender System
- Predicting Movie
- Problem Formulation
- Content Based Recommendations
- Collaborative Filtering(協同過濾)
- Collaborative Filtering
- Collaborative Filtering Algorithm
- Low Rank Matrix Factorization(低秩矩陣分解)
- Vectorization(向量化): Low Rank Matrix Factorization
- Implementational Detail:Mean Normalization
二、 重點&難點
Anomaly Detection
1. Density Estimation
1) Problem Motivation
假設我們生産了若幹産品,現在通過兩個特征來衡量産品是否合格,下面表示的是合格産品的分布圖。

現在有兩個新生産的産品,分布如下(綠色×)
上面我們建構的模型(即藍色同心圓)能根據測試資料告訴我們其屬于一組資料的可能性p(x).上圖中,在藍色圈内的資料屬于該組資料的可能性較高,而越是偏遠的資料,其屬于該組資料的可能性就越低。
這種方法稱為密度估計,表達如下:
\[if \quad p(x)≤ε,則為anomaly(異常)\]
\[if \quad p(x)>ε,則為normal(正常)\]
2) Gaussian Distribution
略
3) Algorithm
還是以上面産品檢測為例,我們先得到如下圖左邊的樣品特征分布,然後根據分布圖分别畫出x1和x2的高斯分布圖
下面的三維圖表表示的是密度估計函數,z 軸為根據兩個特征的值所估計 p(x)值:
我們選擇一個 ε,将 p(x)=ε 作為我們的判定邊界,當 p(x)>ε 時預測資料為正常資料,否則則為異常。
2. Building an Anomaly Detection System(建立異常檢測系統)
1) Developing and Evaluating an Anomaly Detection System
異常檢測算法是一個非監督學習算法,意味着我們無法根據結果變量 y 的值來告訴我
們資料是否真的是異常的。我們需要另一種方法來幫助檢驗算法是否有效。當我們開發一個
異常檢測系統時,我們從帶标記(異常或正常)的資料着手,我們從其中選擇一部分正常數
據用于建構訓練集,然後用剩下的正常資料和異常資料混合的資料構成交叉檢驗集和測試
集。
例如:我們有 10000 台正常引擎的資料,有 20 台異常引擎的資料。 我們這樣配置設定數
據:
6000 台正常引擎的資料作為訓練集
2000 台正常引擎和 10 台異常引擎的資料作為交叉檢驗集
2000 台正常引擎和 10 台異常引擎的資料作為測試集
具體的評價方法如下:
- 根據測試集資料,我們估計特征的平均值和方差并建構 p(x)函數
-
對交叉檢驗集,我們嘗試使用不同的 ε 值作為閥值,并預測資料是否異常,根據 F 1
值或者查準率與查全率的比例來選擇 ε
-
選出 ε 後,針對測試集進行預測,計算異常檢驗系統的 F 1 值,或者查準率與查全
率之比
2) Anomaly Detection vs. Supervised Learning
異常檢測和監督學習的确有幾分相似,但是還是有差別的,整理如下:
異常檢測 | 監督學習 |
---|---|
非常少量的正向類(異常資料 y=1),大量的負向類(y=0) | 同時有大量的正向類和負類 |
許多不同種類的異常,非常難。根據非常少量的正向類資料來訓練算法。 | 有足夠多的正向類執行個體,足夠用于訓練算法,未來遇到的正向類執行個體可能與訓練集中的非常近似。 |
未來遇到的異常可能與已掌握的異常、非常的不同。 | |
例如: 1. 欺詐行為檢測 2. 生産(例如飛機引擎) 3. 檢測資料中心的計算機運作狀況 | 1. 郵件過濾器 2. 天氣預報 3. 惡性良性腫瘤分類 |
3) Choosing What Features to Use
異常檢測假設特征符合高斯分布,如果資料的分布不是高斯分布,異常檢測算法也能夠
工作,但是最好還是将資料轉換成高斯分布,例如使用對數函數:x = log(x+c),其中 c 為非
負常數; 或者 x=xc ,c 為 0-1 之間的一個分數,等方法。
3. Multivariate Gaussion Distribution(多元高斯分布)
1) Multivariate Gaussion Distribution
假使我們有兩個相關的特征,而且這兩個特征的值域範圍比較寬,這種情況下,一般的
高斯分布模型可能不能很好地識别異常資料。其原因在于,一般的高斯分布模型嘗試的是去
同時抓住兩個特征的偏差,是以創造出一個比較大的判定邊界。
下圖中是兩個相關特征,洋紅色的線(根據 ε 的不同其範圍可大可小)是一般的高斯分
布模型獲得的判定邊界,很明顯綠色的 X 所代表的資料點很可能是異常值,但是其 p(x)值卻
仍然在正常範圍内。多元高斯分布将建立像圖中藍色曲線所示的判定邊界
-
一般的高斯分布模型
我們計算 p(x)的方法是: 通過分别計算每個特征對應的幾
率然後将其累乘起來,在多元高斯分布模型中,我們将建構特征的協方差矩陣,用所有的特
征一起來計算 p(x)。
\[p(x)=∏_{j=1}^{n}p(x_j;μ_j,σ^2_j)=∏_{j=1}^{n}\frac{1}{\sqrt{2π}σ_j}exp(-\frac{(x_j-μ_j)^2}{2σ_j^2})\]
\[μ=\frac{1}{m}\sum_{i=1}^{m}x^{(i)} \]
- 多元高斯分布
\[p(x)=\frac{1}{(2π)^{\frac{n}{2}} |Σ|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-μ)^TΣ^{-1}(x-μ))\]
\[Σ=\frac{1}{m}(X-μ)^T(X-μ)\]
μ和Σ對模型的影響
上圖是 5 個不同的模型,從左往右依次分析:
- 是一個一般的高斯分布模型
- 通過協方差矩陣,令特征 1 擁有較小的偏差,同時保持特征 2 的偏差
- 通過協方差矩陣,令特征 2 擁有較大的偏差,同時保持特征 1 的偏差
-
通過協方差矩陣,在不改變兩個特征的原有偏差的基礎上,增加兩者之間的正相關
性
- 通過協方差矩陣,在不改變兩個特征的原有偏差的基礎上,增加兩者之間的負相關
2) Anomaly Detection using the Multivariate Gaussion Distribution
通過使用多元高斯分布異常檢測,可以更好的拟合資料,不再是畫同心圓了,2333~~。