【吳恩達(dá)機(jī)器學(xué)習(xí)】第九周—異常檢測(cè)和推薦系統(tǒng)

31.jpg

1. 異常檢測(cè)

1.1 問題的動(dòng)機(jī)

異常檢測(cè)歪架,Anomaly detection,常用于非監(jiān)督學(xué)習(xí)翅阵,讓我們用一個(gè)飛機(jī)引擎的異常檢測(cè)例子來說明赎败。

假想你是一個(gè)飛機(jī)引擎制造商秕衙,當(dāng)你生產(chǎn)的飛機(jī)引擎從生產(chǎn)線上流出時(shí),你需要進(jìn)行QA(質(zhì)量控制測(cè)試)僵刮,而作為這個(gè)測(cè)試的一部分据忘,你測(cè)量了飛機(jī)引擎的一些特征變量,比如引擎運(yùn)轉(zhuǎn)時(shí)產(chǎn)生的熱量搞糕,或者引擎的振動(dòng)等等勇吊。假設(shè)此處有2個(gè)特征x1,x2。m個(gè)數(shù)據(jù)樣本從x^{(1)},x^{(2)},..,x^{(m)}窍仰,將樣本和特征的關(guān)系繪制成圖表如下:

1.png

這個(gè)圖表有什么用途呢萧福?大意上給定一個(gè)新的測(cè)試數(shù)據(jù)x_{test}(上圖中的綠點(diǎn)),如果此樣本在紅色樣本的中間辈赋,則我們可以認(rèn)為其是正常的,否則我們認(rèn)為這個(gè)引擎室異常的(下面那個(gè)綠點(diǎn))膏燕。具體點(diǎn)說钥屈,這種方法叫做密度估計(jì),表達(dá)式如下:

2.png

其中p(x)為概率密度分布函數(shù)坝辫,\varepsilon為劃定的概率值篷就,且通常這個(gè)p(x)分布選用正態(tài)分布(高斯分布)。我們可以設(shè)定\varepsilon= 0.001近忙,則當(dāng)新的引擎樣本經(jīng)過p(x_{test})<\varepsilon時(shí)竭业,我們就可以判定此引擎為不合格。

其他應(yīng)用:

異常檢測(cè)主要用來識(shí)別欺騙及舍。例如在線采集而來的有關(guān)用戶的數(shù)據(jù)未辆,一個(gè)特征向量中可能會(huì)包含如:用戶多久登錄一次,訪問過的頁面锯玛,在論壇發(fā)布的帖子數(shù)量咐柜,甚至是打字速度等。嘗試根據(jù)這些特征構(gòu)建一個(gè)模型攘残,可以用這個(gè)模型來識(shí)別那些不符合該模式的用戶拙友。
再一個(gè)例子是檢測(cè)一個(gè)數(shù)據(jù)中心,特征可能包含:內(nèi)存使用情況歼郭,被訪問的磁盤數(shù)量遗契,CPU 的負(fù)載,網(wǎng)絡(luò)的通信量等病曾。根據(jù)這些特征可以構(gòu)建一個(gè)模型牍蜂,用來判斷某些計(jì)算機(jī)是不是有可能出錯(cuò)了漾根。

1.2 正態(tài)分布/高斯分布

異常檢測(cè)假設(shè)特征符合正太分布/高斯分布,如果數(shù)據(jù)的分布不是高斯分布捷兰,異常檢測(cè)算法也能夠工作立叛,但是最好還是將數(shù)據(jù)轉(zhuǎn)換成高斯分布,所以我們需要掌握正太分布的知識(shí)贡茅。

正態(tài)分布(Normal Distribution)也叫高斯分布(Gaussian Distribution),我們先回歸一下正太分布的基本知識(shí):

如果秘蛇,我們認(rèn)為變量x服從正態(tài)分布,則其可以表示為:x \sim N(\mu,\sigma^2)服從正態(tài)分布的函數(shù)顶考,其有兩個(gè)重要指標(biāo):期望:\mu,方差:\sigma^2,其中:

\mu = \frac{1}{m}\Sigma^m_{i=1} x^{(i)}, \sigma^2 = \frac{1}{m}\Sigma^m_{i=1} (x^{(i)}-\mu)^2

整個(gè)分布的概率密度函數(shù)為:

p(x,\mu,\sigma^2) = \frac{1}{\sqrt{2\pi}\sigma} exp(-\frac{(x-\mu)^2}{2\sigma^2})

整個(gè)概率密度函數(shù)的累加和為1赁还,即表示100%。不同期望和方差的高斯分布圖像如下:

3.png

注:機(jī)器學(xué)習(xí)中對(duì)于方差我們通常只除以m而非統(tǒng)計(jì)學(xué)中的(m ? 1)驹沿。這里順便提一下艘策,在實(shí)際使用中,到底是選擇使用1/m還是1/(m ? 1)其實(shí)區(qū)別很小渊季,只要你有一個(gè)還算大的訓(xùn)練集朋蔫,在機(jī)器學(xué)習(xí)領(lǐng)域大部分人更習(xí)慣使用1/m這個(gè)版本的公式。這兩個(gè)版本的公式在理論特性和數(shù)學(xué)特性上稍有不同却汉,但是在實(shí)際使用中驯妄,他們的區(qū)別甚小,幾乎可以忽略不計(jì)

1.3 異常檢測(cè)算法

假設(shè)合砂,我們有一組無標(biāo)簽(沒有y)的訓(xùn)練集x^{(1)},x^{(2)},..,x^{(m)}青扔,這些訓(xùn)練集有n個(gè)特征,我們將用這些數(shù)據(jù)利用正太分布翩伪,構(gòu)造出異常檢測(cè)算法微猖。其實(shí),很簡(jiǎn)單缘屹,無非是算出訓(xùn)練集所有樣本在每個(gè)特征上的的期望和方差凛剥,然后所有的概率相乘,即可得到總體概率密度函數(shù)轻姿。我們根據(jù)得到的p(x)和設(shè)定的判斷邊界\varepsilon即可對(duì)未知樣本經(jīng)行異常檢測(cè)当悔,這便是一個(gè)簡(jiǎn)單的異常檢測(cè)算法。具體如下:

4.png

這樣踢代,一個(gè)簡(jiǎn)單的異常檢測(cè)算法便開發(fā)完成了盲憎。下面看一個(gè)例子的概率分布例子,以及如何用它來進(jìn)行異常檢測(cè)的胳挎。

5.png

在這里饼疙,我們有兩個(gè)特征x1,x2,左上角是訓(xùn)練集中所有的樣本點(diǎn)(紅色)和特征關(guān)系圖;右上角是單個(gè)特征的概率密度分布圖窑眯,左下角是總體的分布圖屏积。

這時(shí),我們通過概率密度分布可以對(duì)新的樣本點(diǎn)經(jīng)行異常檢測(cè)了磅甩,此處設(shè)定的\varepsilon為0.02(判定邊界)炊林。經(jīng)過計(jì)算,可以發(fā)現(xiàn)x_test1樣本點(diǎn)的概率 > 0.02,正常卷要;x_test1概率 < 0.02,故被判斷為異常渣聚。

1.4 異常檢測(cè)系統(tǒng)

異常檢測(cè)系統(tǒng)是基于異常檢測(cè)算法開發(fā)的,其不僅包含異常檢測(cè)算法僧叉,還增加了開發(fā)和評(píng)價(jià)過程奕枝,主要是在真實(shí)環(huán)境下,對(duì)樣本的劃分(訓(xùn)練集瓶堕、交叉驗(yàn)證集隘道、測(cè)試集)、對(duì)系統(tǒng)的評(píng)價(jià)等郎笆。

異常檢測(cè)算法是一個(gè)非監(jiān)督學(xué)習(xí)算法谭梗,意味著我們無法根據(jù)結(jié)果變量y的值來告訴我們數(shù)據(jù)是否真的是異常的。我們需要另一種方法來幫助檢驗(yàn)算法是否有效宛蚓。當(dāng)我們開發(fā)一個(gè)異常檢測(cè)系統(tǒng)時(shí)默辨,我們從帶標(biāo)記(異常或正常)的數(shù)據(jù)著手苍息,我們從其中選擇一部分正常數(shù)據(jù)用于構(gòu)建訓(xùn)練集,然后用剩下的正常數(shù)據(jù)和異常數(shù)據(jù)混合的數(shù)據(jù)構(gòu)成交叉檢驗(yàn)集和測(cè)試集

例如:我們有 10000 臺(tái)正常引擎的數(shù)據(jù),有20 臺(tái)異常引擎的數(shù)據(jù)壹置。 我們這樣分配數(shù)據(jù):

6000 臺(tái)正常引擎的數(shù)據(jù)作為訓(xùn)練集

2000 臺(tái)正常引擎和 10 臺(tái)異常引擎的數(shù)據(jù)作為交叉檢驗(yàn)集

2000 臺(tái)正常引擎和 10 臺(tái)異常引擎的數(shù)據(jù)作為測(cè)試集

具體的評(píng)價(jià)方法如下:

1.根據(jù)測(cè)試集數(shù)據(jù)竞思,我們估計(jì)特征的平均值和方差并構(gòu)建p(x)函數(shù)

2.對(duì)交叉檢驗(yàn)集,我們嘗試使用不同的\varepsilon值作為閥值钞护,并預(yù)測(cè)數(shù)據(jù)是否異常盖喷,根據(jù) F1 值或者查準(zhǔn)率與查全率的比例來選擇\varepsilon

3.選出\varepsilon后,針對(duì)測(cè)試集進(jìn)行預(yù)測(cè)难咕,計(jì)算異常檢驗(yàn)系統(tǒng)的F1值课梳,或者查準(zhǔn)率與查全率之比。

1.5 異常檢測(cè)和監(jiān)督學(xué)習(xí)對(duì)比

之前我們構(gòu)建的異常檢測(cè)系統(tǒng)也使用了帶標(biāo)記的數(shù)據(jù)余佃,與監(jiān)督學(xué)習(xí)有些相似暮刃,下面的對(duì)比有助于選擇采用監(jiān)督學(xué)習(xí)還是異常檢測(cè):

異常檢測(cè) 監(jiān)督學(xué)習(xí)
非常少量的正向類(異常數(shù)據(jù)y=1),大量的負(fù)向類(y=0) 同時(shí)有大量的正向類和負(fù)向類
許多不同種類的異常,非常難爆土。根據(jù)非常少量的正向類數(shù)據(jù)來訓(xùn)練算法椭懊。 有足夠多的正向類實(shí)例,足夠用于訓(xùn)練 算法步势,未來遇到的正向類實(shí)例可能與訓(xùn)練集中的非常近似氧猬。
未來遇到的異潮撤福可能與已掌握的異常、非常的不同盅抚。
例如: 欺詐行為檢測(cè) 生產(chǎn)(例如飛機(jī)引擎)檢測(cè)數(shù)據(jù)中心的計(jì)算機(jī)運(yùn)行狀況 例如:郵件過濾器 天氣預(yù)報(bào) 腫瘤分類

1.6 特征選擇

1.6.1 數(shù)據(jù)轉(zhuǎn)換

在選擇特征之前漠魏,我們要盡量確保數(shù)據(jù)是基本符號(hào)高斯分布的,否則我們需要將其轉(zhuǎn)化成近似高斯分布的形態(tài)妄均。例如使用對(duì)數(shù)函數(shù):x = log(x+c) 其中c為非負(fù)數(shù),范圍在0-1之間柱锹。在 python 中,通常用 np.log1p()函數(shù)丛晦。

6.png

1.6.1 誤差分析

誤差分析的目的在于:

從已有的模型和特征中開始跑樣本奕纫,通過對(duì)預(yù)測(cè)結(jié)果中判斷錯(cuò)誤的數(shù)據(jù)(誤差)經(jīng)行分析,從而發(fā)現(xiàn)和挑選更適合的特征烫沙,從而改進(jìn)模型匹层。

我們通過p(x)來判斷一個(gè)樣本是正常還是異常,且通常情況下锌蓄,我們希望正常樣本的p(x)盡量大升筏,異常樣本的p(x)足夠小,但瘸爽,這往往就是通常會(huì)出問題的地方您访,即當(dāng)一個(gè)實(shí)際上是異常的樣本點(diǎn),經(jīng)過異常檢測(cè)系統(tǒng)判斷后p(x)確足夠大剪决,即異常檢測(cè)系統(tǒng)判斷失效灵汪,導(dǎo)致判斷錯(cuò)誤。

7.png

這里舉個(gè)例子:原模型有一個(gè)特征x1,經(jīng)過異常檢測(cè)算法擬合出來的曲線如上左圖柑潦,這時(shí)候有一個(gè)異常樣本享言,用該模型檢測(cè)時(shí),確發(fā)現(xiàn)其x值在正常區(qū)間渗鬼,如上左圖中綠點(diǎn)所示览露,所以我們得到一個(gè)信息:該異常檢測(cè)模型不夠完善,可能是由于特征x1不夠譬胎,不能覆蓋樣本的總體特征情況差牛。

此時(shí),我們即可構(gòu)造出新特征堰乔,即采用x1和x2兩個(gè)特征偏化,再重新應(yīng)用異常檢測(cè)算法訓(xùn)練模型,新訓(xùn)練的樣本特征分布圖如上右圖镐侯,通過這個(gè)新的異常檢測(cè)系統(tǒng)夹孔,我們可以成功預(yù)測(cè)出異常點(diǎn)。

例2:

一個(gè)數(shù)據(jù)中心的例子,數(shù)據(jù)中心通常是由n臺(tái)服務(wù)器組成的集群搭伤,對(duì)這n臺(tái)服務(wù)器的運(yùn)行狀態(tài)經(jīng)行監(jiān)控就顯得非常重要只怎。通常情況下,我們可以選出4個(gè)特征:

  • x1 = 內(nèi)存占用
  • x2 = 磁盤每秒訪問次數(shù)
  • x3 = CPU負(fù)載
  • x4 = 網(wǎng)絡(luò)流量
8.png

通常怜俐,這些特征能較好的滿足異常檢測(cè)的需求身堡,但實(shí)際情況發(fā)現(xiàn),這個(gè)模型不能捕獲到一類的異常情況拍鲤,譬如:

當(dāng)x3和x4都很低時(shí)贴谎,我們認(rèn)為某臺(tái)服務(wù)器在經(jīng)歷較大規(guī)模的用戶訪問,計(jì)算和網(wǎng)絡(luò)吞吐都很高季稳,模型將其判為異常擅这,但是當(dāng)其中只有一個(gè)較高時(shí),譬如x3較低景鼠,x4較高仲翎,模型可能判斷為正常,那么就會(huì)忽略一種情況:

程序死鎖铛漓,CPU飆升至很高溯香,但是對(duì)外提供服務(wù)的網(wǎng)絡(luò)流量幾乎為0,那么為了捕捉這種異常浓恶,我們需要建立新的特征玫坛,譬如可以用x5,x6包晰。

1.7 多元高斯分布

在1.3小節(jié)中湿镀,我們發(fā)現(xiàn)正常的高斯分布可以同時(shí)應(yīng)對(duì)n個(gè)特征,那么多元高斯分布存在的意義在哪伐憾?正常情況下勉痴,普通的高斯分布,要求的n個(gè)特征必須特征明確塞耕,且互相獨(dú)立,無相關(guān)性嘴瓤,這樣才能較好地構(gòu)建模型扫外,如果特征間可能存在關(guān)系,則可能導(dǎo)致模型的不準(zhǔn)確廓脆,此時(shí)我們可以考慮用多元高斯分布筛谚。

還是以1.6中數(shù)據(jù)中心,服務(wù)器集群的例子:

9.png

分別用x1 = CPU負(fù)載停忿、x2 = 內(nèi)存使用量作為兩個(gè)特征驾讲,構(gòu)建出的特征-樣本分布圖、特征密度函數(shù)圖如上。根據(jù)這兩個(gè)特征構(gòu)建的異常檢測(cè)模型吮铭,會(huì)認(rèn)為所有在左圖粉色圓圈中的樣本都是正常的时迫,但是實(shí)際情況下,我們可能會(huì)發(fā)現(xiàn)其實(shí)在左圖藍(lán)色小圈中的樣本是正常的谓晌,而籃圈以外的樣本都應(yīng)該是異常的(如左圖中的綠色點(diǎn))掠拳。于是,這個(gè)模型便不夠好纸肉。我們可以用多元高斯分布改造它溺欧。
普通高斯分布的概率密度,是各個(gè)特征的概率密度公式累乘的柏肪,公式如下:

10.png

而多元高斯分布的概率密度公式姐刁,不需要分別計(jì)算各特征的概率密度再累乘,而是通過求協(xié)方差矩陣:

11.png

多元高斯分布的概率密度公式如下:

12.png

1.7.1 注意

  • 1.此處的\mu是一個(gè)n維向量烦味,其維度n = 特征總數(shù)聂使。其中每個(gè)值代表了每個(gè)特征的期望。
  • 2.訓(xùn)練樣本數(shù)m必須 > 特征維度n拐叉,不然的話協(xié)方差矩陣不可逆的岩遗,通常需要m>10n 另外特征冗余也會(huì)導(dǎo)致協(xié)方差矩陣不可逆

1.7.2 和原高斯分布的比較

原高斯分布模型被廣泛使用著,如果特征之間在某種程度上存在相互關(guān)聯(lián)的情況凤瘦,我們可以通過構(gòu)造新新特征的方法來捕捉這些相關(guān)性宿礁。如果訓(xùn)練集不是太大,并且沒有太多的特征蔬芥,我們可以使用多元高斯分布模型梆靖。

原高斯分布模型 多元高斯分布模型
不能捕捉特征之間的相關(guān)性 但可以通過將
特征進(jìn)行組合的方法來解決 自動(dòng)捕捉特征之間的相關(guān)性
計(jì)算代價(jià)低,能適應(yīng)大規(guī)模的特征 計(jì)算代價(jià)較高 訓(xùn)練集較小時(shí)也同樣適用

2. 推薦系統(tǒng)

2.1 問題規(guī)劃

在接下來的視頻中笔诵,我想講一下推薦系統(tǒng)返吻。我想講推薦系統(tǒng)有兩個(gè)原因:
第一、僅僅因?yàn)?strong>它是機(jī)器學(xué)習(xí)中的一個(gè)重要的應(yīng)用乎婿。在過去幾年测僵,我偶爾訪問硅谷不同的技術(shù)公司,我常和工作在這兒致力于機(jī)器學(xué)習(xí)應(yīng)用的人們聊天谢翎,我常問他們捍靠,最重要的機(jī)器學(xué)習(xí)的應(yīng)用是什么,或者森逮,你最想改進(jìn)的機(jī)器學(xué)習(xí)應(yīng)用有哪些榨婆。我最常聽到的答案是推薦系統(tǒng)。現(xiàn)在褒侧,在硅谷有很多團(tuán)體試圖建立很好的推薦系統(tǒng)良风。因此谊迄,如果你考慮網(wǎng)站像亞馬遜,或網(wǎng)飛公司或易趣烟央,或 iTunes Genius统诺,有很多的網(wǎng)站或系統(tǒng)試圖推薦新產(chǎn)品給用戶。如吊档,亞馬遜推薦新書給你篙议,網(wǎng)飛公司試圖推薦新電影給你,等等怠硼。這些推薦系統(tǒng)鬼贱,根據(jù)瀏覽你過去買過什么書,或過去評(píng)價(jià)過什么電影來判斷香璃。這些系統(tǒng)會(huì)帶來很大一部分收入这难,比如為亞馬遜和像網(wǎng)飛這樣的公司。因此葡秒,對(duì)推薦系統(tǒng)性能的改善姻乓,將對(duì)這些企業(yè)的有實(shí)質(zhì)性和直接的影響。
推薦系統(tǒng)是個(gè)有趣的問題眯牧,在學(xué)術(shù)機(jī)器學(xué)習(xí)中因此蹋岩,我們可以去參加一個(gè)學(xué)術(shù)機(jī)器學(xué)習(xí)會(huì)議,推薦系統(tǒng)問題實(shí)際上受到很少的關(guān)注学少,或者剪个,至少在學(xué)術(shù)界它占了很小的份額。但是版确,如果你看正在發(fā)生的事情扣囊,許多有能力構(gòu)建這些系統(tǒng)的科技企業(yè),他們似乎在很多企業(yè)中占據(jù)很高的優(yōu)先級(jí)绒疗。這是我為什么在這節(jié)課討論它的原因之一侵歇。

我想討論推薦系統(tǒng)地第二個(gè)原因是:這個(gè)班視頻的最后幾集我想討論機(jī)器學(xué)習(xí)中的一些大思想,并和大家分享吓蘑。這節(jié)課我們也看到了惕虑,對(duì)機(jī)器學(xué)習(xí)來說,特征是很重要的磨镶,你所選擇的特征溃蔫,將對(duì)你學(xué)習(xí)算法的性能有很大的影響。因此棋嘲,在機(jī)器學(xué)習(xí)中有一種大思想酒唉,它針對(duì)一些問題矩桂,可能并不是所有的問題沸移,而是一些問題痪伦,有算法可以為你自動(dòng)學(xué)習(xí)一套好的特征。因此雹锣,不要試圖手動(dòng)設(shè)計(jì)网沾,而手寫代碼這是目前為止我們常干的。有一些設(shè)置蕊爵,你可以有一個(gè)算法辉哥,僅僅學(xué)習(xí)其使用的特征,推薦系統(tǒng)就是此類的一個(gè)例子攒射。還有很多其它的醋旦,但是通過推薦系統(tǒng),我們將領(lǐng)略一小部分特征學(xué)習(xí)的思想会放,至少饲齐,你將能夠了解到這方面的一個(gè)例子,我認(rèn)為咧最,機(jī)器學(xué)習(xí)中的大思想也是這樣捂人。因此,讓我們開始討論推薦系統(tǒng)問題形式化

我們從一個(gè)例子開始定義推薦系統(tǒng)的問題矢沿。

假使我們是一個(gè)電影供應(yīng)商滥搭,我們有 5 部電影和 4 個(gè)用戶,我們要求用戶為電影打分捣鲸。

1.png

前三部電影是愛情片瑟匆,后兩部則是動(dòng)作片,我們可以看出 Alice 和 Bob 似乎更傾向與愛情片摄狱, 而 Carol 和 Dave 似乎更傾向與動(dòng)作片脓诡。并且沒有一個(gè)用戶給所有的電影都打過分。我們希望構(gòu)建一個(gè)算法來預(yù)測(cè)他們每個(gè)人可能會(huì)給他們沒看過的電影打多少分媒役,并以此作為推薦的依據(jù)祝谚。

下面引入一些標(biāo)記:

  • n_u 代表用戶數(shù)量
  • n_m 代表電影數(shù)量
  • r(i,j) 如果用戶j給電影i評(píng)過分,則記為1
  • y^{(i,j)} 用戶j給電影i評(píng)分的數(shù)值酣衷,從0~5
  • m^j 代表用戶評(píng)過分的電影總數(shù)

2.2 基于內(nèi)容的推薦系統(tǒng)

在一個(gè)基于內(nèi)容的推薦系統(tǒng)算法中交惯,我們假設(shè)對(duì)于我們希望推薦的東西有一些數(shù)據(jù),這些數(shù)據(jù)是有關(guān)這些東西的特征穿仪。

在我們的例子中餐塘,我們可以假設(shè)每部電影都有兩個(gè)特征,如x1代表電影的浪漫程度,x2代表電影的動(dòng)作程度烟馅。這樣刘绣,對(duì)于每部電影,我們都可以給這兩個(gè)特征打分(0~1)紫谷,用于表現(xiàn)每個(gè)電影的特征齐饮。

2.png

則每部電影都有一個(gè)特征向量捐寥,如x^{(1)}表示第一部電影的特征向量,其愛情程度0.9祖驱,動(dòng)作程度0握恳,故其特征向量為:[0.9,0]

下面我們要基于以上特征構(gòu)建一個(gè)推薦算法,顧名思義推薦算法就是用于給觀眾推薦電影的捺僻,簡(jiǎn)單的推薦算法大意如下:給觀眾推薦電影之前乡洼,我們首先需要遍歷電影庫,用算法來評(píng)估觀眾可能打分的分值匕坯,最后取高打分的電影推薦給觀眾束昵。那么問題就轉(zhuǎn)化為了,我們需要一個(gè)模型葛峻,輸入用戶和電影妻怎,模型將輸出觀眾可能打分的分值。

假設(shè)我們采用線性回歸模型泞歉,我們需要對(duì)每個(gè)用戶建立線性回歸模型逼侦,參數(shù)說明如下:

  1. \theta^{(j)}表示用戶j的參數(shù)向量
  2. x^{(i)}表示電影i的特征向量
  3. (\theta^{(j)})^T x^{(i)} 表示用戶j對(duì)電影i的預(yù)估評(píng)分

針對(duì)用戶j,模型的代價(jià)函數(shù):

3.png

Σ的下標(biāo)表示我們只計(jì)算那些用戶j評(píng)過分的電影腰耙。在一般的線性回歸模型中榛丢,誤差項(xiàng)和正則項(xiàng)應(yīng)該都是乘以1/2m,在這里我們將m去掉,并且我們不對(duì)方差項(xiàng)\theta_0進(jìn)行正則化處理挺庞。上面的代價(jià)函數(shù)只是針對(duì)一個(gè)用戶的晰赞,為了學(xué)習(xí)所有用戶,我們將所有用戶的代價(jià)函數(shù)求和:

4.png

如果我們要用梯度下降法來求解最優(yōu)解选侨,我們計(jì)算代價(jià)函數(shù)的偏導(dǎo)數(shù)后得到梯度下降的更新公式為:

5.png

2.3 協(xié)同過濾

在之前的基于內(nèi)容的推薦系統(tǒng)中掖鱼,對(duì)于每一部電影,我們都掌握了可用的特征援制,使用這些特征訓(xùn)練出了每一個(gè)用戶的參數(shù)戏挡。相反地,如果我們擁有用戶的參數(shù)晨仑,我們可以學(xué)習(xí)得出電影的特征褐墅。

我們通過用戶對(duì)電影的評(píng)論(θ)可以同樣建立模型來評(píng)估電影的特征,模型的損失函數(shù)如下:

6.png

但是如果我們既沒有用戶的參數(shù)洪己,也沒有電影的特征妥凳,這兩種方法都不可行了。協(xié)同過濾算法可以同時(shí)學(xué)習(xí)這兩者答捕。

簡(jiǎn)單來說我們可以隨機(jī)初始化一些θ然后學(xué)習(xí)出特征x逝钥,再由x學(xué)習(xí)改進(jìn)新的θ,從而不斷地學(xué)習(xí)和收斂,協(xié)同過濾算法有點(diǎn)像練武拱镐,左右手互博艘款,從而學(xué)會(huì)一招一式.....(但實(shí)際應(yīng)用時(shí)齐莲,其實(shí)可以二者同時(shí)學(xué)習(xí)和優(yōu)化)

7.png

2.4 協(xié)同過濾算法

在2.3中介紹的概念,是方便理解的磷箕,實(shí)際應(yīng)用過程中,我們其實(shí)沒有必要先計(jì)算θ再計(jì)算x再計(jì)算θ....如此循環(huán)往復(fù)阵难,我們可以同時(shí)對(duì)二者進(jìn)行優(yōu)化岳枷,所以這也是協(xié)同過濾算法名字的意義所在。

8.png

那合在一起的代價(jià)函數(shù)J(x^{(1)},x^{(2)},..,x^{(n_m)},\theta^{(1)},\theta^{(2)},..,\theta^{(n_u)}) =

9.png

此時(shí)呜叫,我們的優(yōu)化目標(biāo)空繁,變成了:

10.png

2.5 向量化:低秩矩陣分解

矩陣的秩r(A),r(A)<=min(m,n),A是m*n型矩陣朱庆,舉個(gè)例子:

A = \left[ \begin{matrix} 1 \\ 2 \\ 3 \end{matrix} \right] B = \left[ \begin{matrix} 1 &1 \\ 2 &2 \\ 3 &3 \end{matrix} \right]
r(A) = r(B) = 1,因?yàn)锽矩陣中兩列之間可以簡(jiǎn)化盛泡,故實(shí)際矩陣的秩為1。

低秩矩陣即表示r(A)較小的矩陣娱颊。在前面的協(xié)同過濾例子中傲诵,我們通過模型可以預(yù)測(cè)出一個(gè)用戶對(duì)所有電影的評(píng)分,這個(gè)評(píng)分矩陣即一個(gè)低秩矩陣箱硕。

11.png

如圖拴竹,給定所有用戶對(duì)電影的評(píng)分矩陣Y,我們可以算出用戶對(duì)電影的評(píng)分矩陣(上圖右)剧罩,這個(gè)矩陣中(\theta^{(1)})^T(x^{(2)})表示第1個(gè)用戶對(duì)第2部電影的評(píng)分栓拜。矩陣的size:n_m*n_u(行列),但由于矩陣間行列存在關(guān)系惠昔,可以被分解幕与,故實(shí)際上矩陣的秩為min(n_m,n_u),即此矩陣可以被看做是低秩矩陣。分解過程如下:
我們令:
X = \left[\begin{matrix} -(x^{(1)})^T- \\ -(x^{(2)})^T- \\ ..\\ -(x^{(n_m)})^T- \end{matrix} \right] \Theta = \left[\begin{matrix} -(\theta^{(1)})^T- \\ -(\theta^{(2)})^T- \\ ..\\ -(\theta^{(n_u)})^T- \end{matrix} \right]
則矩陣可以表示為X\Theta^T镇防。這種將低秩矩陣分開表示的行為啦鸣,即可稱為
低秩矩陣分解Low Rank Matrix Factorization*

相似推薦
如果一個(gè)用戶在看電影i,我們想要給他推薦和i相似的電影来氧,那么怎么辦赏陵?其實(shí),很簡(jiǎn)單饲漾,如果我遍歷電影庫蝙搔,找到了某部電影j,從而使電影i的特征和電影j的特征之間差異最小考传,那么j即是我需要推薦的電影吃型。
\Delta =min(||x^{(i)}-x^{(j)}||)同理,如果根據(jù)電影i推薦5部電影僚楞,則同樣遍歷電影庫勤晚,找到Δ最小的前5部電影即可枉层。

12.png

2.6 均值歸一化

在協(xié)同過濾算法中,有時(shí)候均值歸一化會(huì)讓算法運(yùn)行的更好

13.png

還是使用之前電影推薦的例子赐写,這次多加了一個(gè)觀眾Eve鸟蜡,但是他對(duì)這5部電影都沒有看過,于是協(xié)同過濾算法預(yù)測(cè)他給這5部電影打分都為同樣的0分挺邀,這樣揉忘,就無法給其推薦電影了,顯然這樣是不太妥當(dāng)?shù)亩祟酢_@就是可以用均值歸一化來處理的典型例子泣矛。

我們可以計(jì)算出每部電影在每個(gè)用戶評(píng)分下的均值,記為矩陣\mu 禾蚕,然后用戶評(píng)分矩陣Y = 原矩陣 - \mu 您朽,得到歸一化的矩陣Y,這樣做的結(jié)果是:即使Eve沒有看過任何一部電影换淆,推薦算法任然可以根據(jù)每部電影平均得分來為其推薦哗总。

14.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市倍试,隨后出現(xiàn)的幾起案子魂奥,更是在濱河造成了極大的恐慌,老刑警劉巖易猫,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耻煤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡准颓,警方通過查閱死者的電腦和手機(jī)哈蝇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攘已,“玉大人炮赦,你說我怎么就攤上這事⊙” “怎么了吠勘?”我有些...
    開封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)峡眶。 經(jīng)常有香客問我剧防,道長(zhǎng),這世上最難降的妖魔是什么辫樱? 我笑而不...
    開封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任峭拘,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸡挠。我一直安慰自己辉饱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開白布拣展。 她就那樣靜靜地躺著彭沼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪备埃。 梳的紋絲不亂的頭發(fā)上姓惑,一...
    開封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音瓜喇,去河邊找鬼。 笑死歉糜,一個(gè)胖子當(dāng)著我的面吹牛乘寒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匪补,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼伞辛,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了夯缺?” 一聲冷哼從身側(cè)響起蚤氏,我...
    開封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎踊兜,沒想到半個(gè)月后竿滨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捏境,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年于游,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垫言。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贰剥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筷频,到底是詐尸還是另有隱情蚌成,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布凛捏,位于F島的核電站担忧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏坯癣。R本人自食惡果不足惜涵妥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蓬网,春花似錦窒所、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锯厢,卻和暖如春皮官,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背实辑。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工捺氢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人剪撬。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓摄乒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親残黑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子馍佑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容