Density Estimation
這個(gè)章節(jié)主要講述了非監(jiān)督機(jī)器學(xué)習(xí)中的異常檢測(cè)算法(anomaly algorithm)菱魔,其原理實(shí)際是利用了在工程、產(chǎn)品的檢測(cè)中减牺,大部分正常產(chǎn)品的各個(gè)feature是服從正態(tài)分布(高斯分布)的豌习,所以給定一個(gè)樣本存谎,我們可以計(jì)算其各個(gè)feature為正常值的概率拔疚,并設(shè)定一個(gè)閾值?,當(dāng)樣本為正常值的概率P大于?時(shí)既荚,我們就認(rèn)為是正常的稚失,當(dāng)這個(gè)P小于?時(shí)我們就認(rèn)為其是異常的。
關(guān)于density estimation的解釋可以參考wiki - density estimation
Problem Motivation
作者在這一小節(jié)主要講了一些實(shí)際應(yīng)用的例子恰聘。
- 飛機(jī)引擎檢測(cè)
- 欺詐用戶
- 數(shù)據(jù)中心的異常檢測(cè)
Gaussian Distribution
這一小節(jié)主要講高斯分布句各,重點(diǎn)就是下圖中的公式和高斯分布圖:
高斯密度函數(shù)中有兩個(gè)需要計(jì)算的值吸占,一個(gè)是均值μ,另一個(gè)是平方差??2凿宾,其計(jì)算公式如下:
Algorithm
前面我們已經(jīng)說了矾屯,重點(diǎn)是計(jì)算樣本為正常值的概率P,其計(jì)算就需要如下公式:
- 針對(duì)每一個(gè)feature的維度都需要進(jìn)行高斯計(jì)算初厚,從而算出μ和??2件蚕,然后針對(duì)不同的樣本x來計(jì)算出P
- 這里引入了一個(gè)新的數(shù)學(xué)符號(hào)Π,這是意味著相乘的關(guān)系
那么产禾,整個(gè)異常檢測(cè)算法的流程如下:
Building an Anomaly Detection System
這個(gè)章節(jié)重點(diǎn)講了工程實(shí)踐中具體是怎么訓(xùn)練我們的模型排作。
Developing and evaluating an anomaly detection system
首先,作者將了如何將我們的樣本分為training set, cross validation set和testing set亚情,舉例如下:
- 要將異常樣本放到CV和test集中
那么最終這個(gè)?如何選擇呢妄痪?重點(diǎn)就是要根據(jù)我們的precision/recall rate, F-score來選擇這個(gè)?值,而不能使用error rate楞件,這是由于我們的樣本集是數(shù)據(jù)傾斜的(skewed)衫生,即負(fù)樣本數(shù)遠(yuǎn)大于正樣本數(shù),所以需要使用precision/recall rate, F-score, 如下圖:
Anomaly Detection vs. Supervised Learning
本小節(jié)重點(diǎn)講了在哪些情況下使用anomaly detection履因,哪些情況下使用supervised learning障簿。其主要區(qū)別如下:
- 當(dāng)y=1(即異常樣本)的樣本非常少的時(shí)候我們很難通過訓(xùn)練讓supervised learning算法“學(xué)習(xí)”到什么時(shí)候?yàn)?;相比較而言如果有大量y=0的樣本我們就可以計(jì)算其高斯分布情況栅迄,從而識(shí)別其為正常值的概率站故,通過閾值?我們就可以知道何為異常,何為正常
- 當(dāng)異常有很多種類的時(shí)候毅舆,甚至于有些異澄髀ǎ可能之前都沒有發(fā)生過,這種情況下很難通過supervised learning來“學(xué)習(xí)”到這種異常情況憋活,所以這種情況更適合anomaly detection
Choosing Features
此小節(jié)主要講了如何針對(duì)anomaly detection來選擇feature岂津。我個(gè)人的理解如下:
想象一下我們自己如何去識(shí)別這個(gè)異常,可以使用哪些“指標(biāo)”來發(fā)現(xiàn)異常悦即,那么這些“指標(biāo)”就可以作為feature吮成。
另外,在我們異常檢測(cè)時(shí)辜梳,如果發(fā)現(xiàn)某個(gè)異常的樣本在我們的模型中P值很高(即檢測(cè)為正常)粱甫,那么很有可能是其某個(gè)檢測(cè)指標(biāo)沒有在我們的檢測(cè)模型當(dāng)中,我們可以看看這個(gè)異常值究竟哪里異常作瞄,用什么指標(biāo)可以檢測(cè)到這個(gè)異常茶宵,這樣我們就可以為我們的異常檢測(cè)系統(tǒng)發(fā)現(xiàn)新的feature,如下圖所示:
另外, 我們還可以通過一些原始“指標(biāo)”的組合來形成新的feature宗挥,如下圖所示:
最后乌庶,我們需要看下我們這些feature的數(shù)值分布是否符合高斯分布种蝶,如果不符合,就需要將這些數(shù)據(jù)進(jìn)行轉(zhuǎn)換瞒大,讓“新的feature”的數(shù)值分布符合高斯分布螃征。如下圖所示:
總結(jié)選擇feature的過程如下:
- 根據(jù)我們?nèi)祟惤?jīng)驗(yàn),選擇可能檢測(cè)到異常的指標(biāo)作為feature
- 通過CV和測(cè)試集發(fā)現(xiàn)模型中存在異常的樣本但是P值卻很高透敌,分析可能遺漏的feature
- 還可通過原始指標(biāo)的組合形成新的feature
- 將不符合高斯分布的指標(biāo)進(jìn)行轉(zhuǎn)換
Multivariate Gaussian Distribution
本章主要講了多元高斯分布模型(multivariate gaussian distribution)
multivariate gaussian distribution
在現(xiàn)實(shí)使用高斯分布的時(shí)候会傲,我們會(huì)發(fā)現(xiàn)有些情況下兩個(gè)feature是有相關(guān)性的,Andrew舉了一個(gè)數(shù)據(jù)中心異常檢測(cè)的例子拙泽,我們會(huì)發(fā)現(xiàn)計(jì)算機(jī)的cpu使用率和memory使用率是有一定相關(guān)性的淌山,通常cpu使用率越高,memory使用率也就越高顾瞻,如果一臺(tái)機(jī)器CPU使用率很低泼疑,但是memory很高,那么異常的可能性就較大荷荤,這種情況下用我們之前的高斯分布模型就無法檢測(cè)到退渗,如下圖所示:
- 圖中可以看出雖然在同一個(gè)等高線上(紅色圓圈)概率P是相同的,但是實(shí)際上在橢圓圈(藍(lán)色橢圓)中的概率P顯然應(yīng)該更加高一些(由于cpu和memory的正相關(guān))
- 這就是為什么我們需要引入多元高斯模型蕴纳,從而可以讓我們的高斯模型有更多調(diào)整和控制
多元高斯分布的計(jì)算公式如下圖所示:
- 這里涉及到協(xié)方差矩陣和行列式的概念会油,具體可以參考wiki-協(xié)方差矩陣 和wiki - 行列式
- 行列式計(jì)算可以直接使用octave中的函數(shù)det來進(jìn)行計(jì)算
接下來,我們看下協(xié)方差矩陣∑和均值μ是如何影響我們的分布模型的古毛。
首先翻翩,協(xié)方差矩陣對(duì)角線上的數(shù)值會(huì)影響不同維度的高斯分布的寬度,如下圖所示:
- 這里可以看到協(xié)方差矩陣對(duì)角線上的值會(huì)影響高斯分布的寬窄稻薇,而且對(duì)角線的第一個(gè)值(位置[1, 1])影響的是x1嫂冻,其越大那么x1維度上高斯分布越寬,下降也越慢塞椎;對(duì)角線上第二個(gè)值([2,2])影響x2方向上的高斯分布桨仿。
再看第二個(gè)例子
- 這里看到另一個(gè)方向上的對(duì)角線的值影響的是x1, x2的相關(guān)性,值越大案狠,x1和x2越相關(guān)
- 相關(guān)性的含義就是服傍,當(dāng)x1越大,正常情況下x2也越大(cpu和memory的例子), 這種情況下我們用這個(gè)模型就可以很好的契合本章剛開始的例子(高斯分布圖已經(jīng)變成了橢圓形)
也可以是負(fù)相關(guān)骂铁,即x1越大吹零,相應(yīng)的x2應(yīng)當(dāng)越小,可以通過設(shè)為負(fù)值讓其負(fù)相關(guān)从铲,如下圖:
最后瘪校,均值會(huì)影響到高斯分布的中心點(diǎn)位置澄暮,如下圖所示:
本節(jié)疑問是名段,中心點(diǎn)的概率應(yīng)當(dāng)是接近于1的阱扬,但是看到課程的示例其高點(diǎn)都沒有到1,甚至遠(yuǎn)低于1伸辟,這個(gè)不明白為什么是這種情況麻惶?
Anomaly Detection Using Multivariate Gaussian Distribution
本小節(jié)主要講如何使用多元高斯分布,首先我們要計(jì)算均值μ和協(xié)方差矩陣∑信夫,如下圖:
- 通過上圖的公式計(jì)算好μ和∑之后窃蹋,我們就可以將新的樣本x一起代入公式當(dāng)中,從而計(jì)算出概率P
實(shí)際上静稻,原來的高斯模型是多元高斯模型的一個(gè)特殊形式而已警没,如下圖所示:
這兩種高斯模型各有利弊,反而original高斯模型使用更加頻繁一些振湾。其利弊比較如下圖所示:
- 針對(duì)相關(guān)性問題杀迹,我們可以生成一個(gè)新的feature(如圖x3),從而讓original model也可以檢測(cè)到這種相關(guān)性。相比較而言多元高斯模型是自動(dòng)捕獲這種相關(guān)性的押搪。
- original模型計(jì)算相對(duì)簡(jiǎn)單树酪,因此當(dāng)n非常大的時(shí)候,就非常適合這i種模型大州。相較而言续语,多元高斯模型的計(jì)算量相當(dāng)大。
- 最后由于數(shù)學(xué)上限制厦画,當(dāng)m<n時(shí)我們是無法使用多元高斯模型的疮茄。
Recommendation System
Rating Movie
此小節(jié)主要講了我們是如何在推薦系統(tǒng)中給電影進(jìn)行預(yù)測(cè)打分的,重點(diǎn)是講了一些notation根暑,如下圖:
Content Based Recommendations
此小節(jié)主要講了如何基于內(nèi)容進(jìn)行推薦娃豹,本質(zhì)上是將電影的一些特征組成一個(gè)特征向量,然后根據(jù)每個(gè)用戶已經(jīng)評(píng)分的電影樣本進(jìn)行訓(xùn)練(Linear Regression)购裙,從而為每一個(gè)用戶都訓(xùn)練出一個(gè)單獨(dú)的模型(即每個(gè)用戶都會(huì)有一個(gè)不同的θ)這樣的話懂版,就可以針對(duì)沒有評(píng)分的電影進(jìn)行預(yù)測(cè)。過程如下圖所示:
所以躏率,我們的優(yōu)化目標(biāo)跟Linear Regression類似躯畴,只是我們需要針對(duì)每個(gè)用戶都要計(jì)算其cost function的最小值,所以最終的公式如下圖所示:
- 圖4.3上邊的公式是計(jì)算當(dāng)個(gè)用戶的優(yōu)化目標(biāo)薇芝,注意這里省略了m蓬抄,因?yàn)椴挥绊懽詈蟮摩戎?/li>
-
圖4.3下方的公式是針對(duì)所有用戶的優(yōu)化目標(biāo),實(shí)際就是把針對(duì)單個(gè)用戶的優(yōu)化目標(biāo)相加
- 根據(jù)我們的優(yōu)化目標(biāo)的公式夯到,我們可以針對(duì)其進(jìn)行梯度下降計(jì)算
- 注意這里是要針對(duì)每一個(gè)用戶(θ(j))的每一個(gè)θk(k 從0到n)都要進(jìn)行梯度計(jì)算嚷缭。舉個(gè)例子,假設(shè)我們的movie使用了兩個(gè)特征值,那么我們的特征向量就是2+1個(gè)維度阅爽,所以我們要為每個(gè)用戶都計(jì)算其相應(yīng)的θ0路幸,θ1,θ2付翁。假設(shè)我們有5個(gè)用戶需要計(jì)算(即j從1到5)简肴,那么總共要計(jì)算3x5=15個(gè)θ。
個(gè)人認(rèn)為百侧,實(shí)際項(xiàng)目中很難使用此種方法砰识,因?yàn)榇蟛糠钟脩艨赡芨揪筒粫?huì)去給電影評(píng)分,也就沒有樣本可以訓(xùn)練佣渴,因此也就無法訓(xùn)練出相應(yīng)的模型
Collaborative Filtering
Collaborative Filtering
此章節(jié)重點(diǎn)講協(xié)同過濾算法辫狼,為什么要使用協(xié)同過濾呢,主要原因在于如果電影數(shù)量龐大辛润,我們手工去標(biāo)注電影的feature x1予借, x2會(huì)非常麻煩,因此我們就會(huì)想频蛔,如果我們已知各個(gè)用戶的θ值灵迫,是否也能推測(cè)出其feature值呢,如下圖所示晦溪,顯然是可以的:
然后瀑粥,問題就轉(zhuǎn)化為求如下最優(yōu)解的問題:
- 這里的regularization item變成了針對(duì)x,而不是θ
- 當(dāng)針對(duì)所有的movie的時(shí)候三圆,我們要需要將x(1)到x(no of moview)的所有誤差項(xiàng)都加總起來狞换,如此就有了下方的公式。最終我們只需要針對(duì)下方的公式來求解最小值舟肉,從而得到x的最優(yōu)解
那么修噪,問題來了,我們又如何得到θ路媚,從而去求解x呢黄琼?這成了一個(gè)先有雞還是先有蛋的問題。解決此類問題的一種辦法是整慎,先隨機(jī)取一組θ值脏款,然后去優(yōu)化x,用得到的x再去優(yōu)化θ裤园,循環(huán)往復(fù)撤师,如下圖所示:
下一節(jié),我們會(huì)看到一種更好的辦法拧揽。
Collaborative Filtering Algorithm
首先剃盾,我們可以將兩組優(yōu)化公式(一個(gè)是針對(duì)θ腺占,另一個(gè)是針對(duì)x)整合在一起,如下圖所示:
- 無論針對(duì)x還是針對(duì)θ痒谴,其本質(zhì)都是找尋某個(gè)x和θ使得預(yù)測(cè)值(即某個(gè)用戶針對(duì)某個(gè)電影的評(píng)分)和真實(shí)值(真實(shí)評(píng)分)之間的差值最小衰伯。而這個(gè)差值對(duì)于兩個(gè)公式來說,本質(zhì)是一樣的闰歪,都是找尋有用戶評(píng)分的電影( 即r(i, j)=1 ),和預(yù)測(cè)值蓖墅,然后計(jì)算其差值的平方库倘。
- 正則部分,由于我們是同時(shí)針對(duì)θ和x進(jìn)行求解论矾,因此就需要有同時(shí)針對(duì)θ和x的正則項(xiàng)教翩。
- 另外,我們也不需要設(shè)定x0贪壳, θ0饱亿,這些都會(huì)交給算法自動(dòng)訓(xùn)練出來。
最后闰靴,整個(gè)算法的訓(xùn)練和預(yù)測(cè)過程如下:
Low Rank Matrix Factorization
Vectorize: Low Rank Matrix Factorization
此小節(jié)主要是講在計(jì)算預(yù)測(cè)值的時(shí)候彪笼,我們不需要一個(gè)用戶一個(gè)電影的計(jì)算,而可以通過vectorization的方式進(jìn)行計(jì)算蚂且,如下圖所示:
由于這種計(jì)算方式在線性代數(shù)中叫做low rank matrix factorization配猫,因此我們這種協(xié)同過濾算法有時(shí)也被稱為low rank matrix factorization算法
隨后Andrew又提出了一個(gè)問題,就是我們?cè)趺礃涌梢耘袛嘁粋€(gè)電影是相關(guān)的呢杏死?針對(duì)一個(gè)電影泵肄,我們可能有很多的features,那么這時(shí)候如何判斷兩個(gè)電影的相關(guān)性呢淑翼?本質(zhì)上我們可以用這些feature的vector來表示一部電影腐巢,這樣電影就都可以用vector來表示了,那么問題就轉(zhuǎn)化為如何判斷兩個(gè)vector的相關(guān)性了玄括,通過前面的學(xué)習(xí)我們知道冯丙,其中一種方法就是看兩個(gè)vector的歐幾里得距離,具體如下圖所示:
Implementation Detail: Mean Normalization
我們之所學(xué)所思皆來源于問題遭京,那么此小節(jié)所講正是來源于之前我提到的一個(gè)問題银还,即當(dāng)用戶評(píng)分很少或者干脆沒有評(píng)分的時(shí)候怎么辦?如下當(dāng)用戶沒有任何評(píng)分的時(shí)候洁墙,最后我們通過優(yōu)化公式優(yōu)化的結(jié)果就是所有的θ均為0蛹疯,那么預(yù)測(cè)值也就全是0,這樣就沒有預(yù)測(cè)效果了热监。
那么捺弦,我們?cè)撊绾谓鉀Q這個(gè)問題呢?一個(gè)最直觀的辦法就是將每部電影的平均評(píng)分賦給這個(gè)沒有評(píng)分的用戶。那么列吼,我們不可能去找哪個(gè)用戶沒有評(píng)分幽崩,哪個(gè)用戶評(píng)分?jǐn)?shù)量不夠,我們可以通過算法來解決這個(gè)問題寞钥,如下圖所示:
- 通過mean normalization(即讓原先的x慌申,記作xori減去均值μ從而轉(zhuǎn)化為新的features,記作xnew)理郑,我們可以得到一個(gè)新的feature matrix吩坝,然后再通過這個(gè)新的feature matrix來訓(xùn)練θ和xnew
- 最終預(yù)測(cè)的時(shí)候我們需要將均值加回來怨酝,因此就有(θ(j))T(x(i)new) + μ
- 針對(duì)沒有評(píng)分的用戶Eve况脆,最終由于加了μ友扰,所以其預(yù)測(cè)值就是均值。
其它疑問
- 視頻中Andrew沒有講針對(duì)一個(gè)item赚爵,我們?cè)撊绾芜x擇其features棉胀?實(shí)際上,我們可能也無需關(guān)心某個(gè)feature的含義冀膝,但是feature的數(shù)量是需要我們?nèi)ミx擇的唁奢。那么該如何解決呢?
答案是:做實(shí)驗(yàn)窝剖。比如我們可以先選擇兩個(gè)feature驮瞧,訓(xùn)練之后,讓其在CV集上預(yù)測(cè)枯芬,計(jì)算error rate论笔,然后再選擇5個(gè)feature嘗試,再選擇更多的feature嘗試千所,最終我們可以繪制一個(gè)feature數(shù)量和error rate的關(guān)系圖狂魔,從而判斷feature數(shù)量n為幾的時(shí)候,error rate最低淫痰。
- Andrew講的協(xié)同過濾算法和網(wǎng)上搜索查到的協(xié)同過濾算法感覺并不是相同的算法最楷,這是怎么回事?