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ù)樣本從窍仰,將樣本和特征的關(guān)系繪制成圖表如下:
這個(gè)圖表有什么用途呢萧福?大意上給定一個(gè)新的測(cè)試數(shù)據(jù)(上圖中的綠點(diǎn)),如果此樣本在紅色樣本的中間辈赋,則我們可以認(rèn)為其是正常的,否則我們認(rèn)為這個(gè)引擎室異常的(下面那個(gè)綠點(diǎn))膏燕。具體點(diǎn)說钥屈,這種方法叫做密度估計(jì),表達(dá)式如下:
其中p(x)為概率密度分布函數(shù)坝辫,為劃定的概率值篷就,且通常這個(gè)p(x)分布選用正態(tài)分布(高斯分布)。我們可以設(shè)定= 0.001近忙,則當(dāng)新的引擎樣本經(jīng)過時(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)分布,則其可以表示為:服從正態(tài)分布的函數(shù)顶考,其有兩個(gè)重要指標(biāo):,其中:
整個(gè)分布的概率密度函數(shù)為:
整個(gè)概率密度函數(shù)的累加和為1赁还,即表示100%。不同期望和方差的高斯分布圖像如下:
注:機(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ùn)練集有n個(gè)特征,我們將用這些數(shù)據(jù)利用正太分布翩伪,構(gòu)造出異常檢測(cè)算法微猖。其實(shí),很簡(jiǎn)單缘屹,無非是算出訓(xùn)練集所有樣本在每個(gè)特征上的的期望和方差凛剥,然后所有的概率相乘,即可得到總體概率密度函數(shù)轻姿。我們根據(jù)得到的p(x)和設(shè)定的判斷邊界即可對(duì)未知樣本經(jīng)行異常檢測(cè)当悔,這便是一個(gè)簡(jiǎn)單的異常檢測(cè)算法。具體如下:
這樣踢代,一個(gè)簡(jiǎn)單的異常檢測(cè)算法便開發(fā)完成了盲憎。下面看一個(gè)例子的概率分布例子,以及如何用它來進(jìn)行異常檢測(cè)的胳挎。
在這里饼疙,我們有兩個(gè)特征x1,x2,左上角是訓(xùn)練集中所有的樣本點(diǎn)(紅色)和特征關(guān)系圖;右上角是單個(gè)特征的概率密度分布圖窑眯,左下角是總體的分布圖屏积。
這時(shí),我們通過概率密度分布可以對(duì)新的樣本點(diǎn)經(jīng)行異常檢測(cè)了磅甩,此處設(shè)定的為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)集,我們嘗試使用不同的值作為閥值钞护,并預(yù)測(cè)數(shù)據(jù)是否異常盖喷,根據(jù) F1 值或者查準(zhǔn)率與查全率的比例來選擇
3.選出后,針對(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ù): 其中c為非負(fù)數(shù),范圍在0-1之間柱锹。在 python 中,通常用 np.log1p()函數(shù)丛晦。
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ò)誤。
這里舉個(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ò)流量
通常怜俐,這些特征能較好的滿足異常檢測(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ù)器集群的例子:
分別用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è)特征的概率密度公式累乘的柏肪,公式如下:
而多元高斯分布的概率密度公式姐刁,不需要分別計(jì)算各特征的概率密度再累乘,而是通過求協(xié)方差矩陣:
多元高斯分布的概率密度公式如下:
1.7.1 注意
- 1.此處的是一個(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è)用戶,我們要求用戶為電影打分捣鲸。
前三部電影是愛情片瑟匆,后兩部則是動(dòng)作片,我們可以看出 Alice 和 Bob 似乎更傾向與愛情片摄狱, 而 Carol 和 Dave 似乎更傾向與動(dòng)作片脓诡。并且沒有一個(gè)用戶給所有的電影都打過分。我們希望構(gòu)建一個(gè)算法來預(yù)測(cè)他們每個(gè)人可能會(huì)給他們沒看過的電影打多少分媒役,并以此作為推薦的依據(jù)祝谚。
下面引入一些標(biāo)記:
- 代表用戶數(shù)量
- 代表電影數(shù)量
- 如果用戶j給電影i評(píng)過分,則記為1
- 用戶j給電影i評(píng)分的數(shù)值酣衷,從0~5
- 代表用戶評(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è)電影的特征齐饮。
則每部電影都有一個(gè)特征向量捐寥,如表示第一部電影的特征向量,其愛情程度0.9祖驱,動(dòng)作程度0握恳,故其特征向量為:[0.9,0]
下面我們要基于以上特征構(gòu)建一個(gè)推薦算法,顧名思義推薦算法就是用于給觀眾推薦電影的捺僻,簡(jiǎn)單的推薦算法大意如下:給觀眾推薦電影之前乡洼,我們首先需要遍歷電影庫,用算法來評(píng)估觀眾可能打分的分值匕坯,最后取高打分的電影推薦給觀眾束昵。那么問題就轉(zhuǎn)化為了,我們需要一個(gè)模型葛峻,輸入用戶和電影妻怎,模型將輸出觀眾可能打分的分值。
假設(shè)我們采用線性回歸模型泞歉,我們需要對(duì)每個(gè)用戶建立線性回歸模型逼侦,參數(shù)說明如下:
- 表示用戶j的參數(shù)向量
- 表示電影i的特征向量
- 表示用戶j對(duì)電影i的預(yù)估評(píng)分
針對(duì)用戶j,模型的代價(jià)函數(shù):
Σ的下標(biāo)表示我們只計(jì)算那些用戶j評(píng)過分的電影腰耙。在一般的線性回歸模型中榛丢,誤差項(xiàng)和正則項(xiàng)應(yīng)該都是乘以1/2m,在這里我們將m去掉,并且我們不對(duì)方差項(xiàng)進(jìn)行正則化處理挺庞。上面的代價(jià)函數(shù)只是針對(duì)一個(gè)用戶的晰赞,為了學(xué)習(xí)所有用戶,我們將所有用戶的代價(jià)函數(shù)求和:
如果我們要用梯度下降法來求解最優(yōu)解选侨,我們計(jì)算代價(jià)函數(shù)的偏導(dǎo)數(shù)后得到梯度下降的更新公式為:
2.3 協(xié)同過濾
在之前的基于內(nèi)容的推薦系統(tǒng)中掖鱼,對(duì)于每一部電影,我們都掌握了可用的特征援制,使用這些特征訓(xùn)練出了每一個(gè)用戶的參數(shù)戏挡。相反地,如果我們擁有用戶的參數(shù)晨仑,我們可以學(xué)習(xí)得出電影的特征褐墅。
我們通過用戶對(duì)電影的評(píng)論(θ)可以同樣建立模型來評(píng)估電影的特征,模型的損失函數(shù)如下:
但是如果我們既沒有用戶的參數(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)化)
2.4 協(xié)同過濾算法
在2.3中介紹的概念,是方便理解的磷箕,實(shí)際應(yīng)用過程中,我們其實(shí)沒有必要先計(jì)算θ再計(jì)算x再計(jì)算θ....如此循環(huán)往復(fù)阵难,我們可以同時(shí)對(duì)二者進(jìn)行優(yōu)化岳枷,所以這也是協(xié)同過濾算法名字的意義所在。
那合在一起的代價(jià)函數(shù) =
此時(shí)呜叫,我們的優(yōu)化目標(biāo)空繁,變成了:
2.5 向量化:低秩矩陣分解
矩陣的秩r(A),r(A)<=min(m,n),A是m*n型矩陣朱庆,舉個(gè)例子:
r(A) = r(B) = 1,因?yàn)锽矩陣中兩列之間可以簡(jiǎn)化盛泡,故實(shí)際矩陣的秩為1。
低秩矩陣即表示r(A)較小的矩陣娱颊。在前面的協(xié)同過濾例子中傲诵,我們通過模型可以預(yù)測(cè)出一個(gè)用戶對(duì)所有電影的評(píng)分,這個(gè)評(píng)分矩陣即一個(gè)低秩矩陣箱硕。
如圖拴竹,給定所有用戶對(duì)電影的評(píng)分矩陣Y,我們可以算出用戶對(duì)電影的評(píng)分矩陣(上圖右)剧罩,這個(gè)矩陣中表示第1個(gè)用戶對(duì)第2部電影的評(píng)分栓拜。矩陣的size:(行列),但由于矩陣間行列存在關(guān)系惠昔,可以被分解幕与,故實(shí)際上矩陣的秩為,即此矩陣可以被看做是低秩矩陣。分解過程如下:
我們令:
則矩陣可以表示為镇防。這種將低秩矩陣分開表示的行為啦鸣,即可稱為低秩矩陣分解Low Rank Matrix Factorization*
相似推薦
如果一個(gè)用戶在看電影i,我們想要給他推薦和i相似的電影来氧,那么怎么辦赏陵?其實(shí),很簡(jiǎn)單饲漾,如果我遍歷電影庫蝙搔,找到了某部電影j,從而使電影i的特征和電影j的特征之間差異最小考传,那么j即是我需要推薦的電影吃型。
同理,如果根據(jù)電影i推薦5部電影僚楞,則同樣遍歷電影庫勤晚,找到Δ最小的前5部電影即可枉层。
2.6 均值歸一化
在協(xié)同過濾算法中,有時(shí)候均值歸一化會(huì)讓算法運(yùn)行的更好
還是使用之前電影推薦的例子赐写,這次多加了一個(gè)觀眾Eve鸟蜡,但是他對(duì)這5部電影都沒有看過,于是協(xié)同過濾算法預(yù)測(cè)他給這5部電影打分都為同樣的0分挺邀,這樣揉忘,就無法給其推薦電影了,顯然這樣是不太妥當(dāng)?shù)亩祟酢_@就是可以用均值歸一化來處理的典型例子泣矛。
我們可以計(jì)算出每部電影在每個(gè)用戶評(píng)分下的均值,記為矩陣 禾蚕,然后用戶評(píng)分矩陣Y = 原矩陣 - 您朽,得到歸一化的矩陣Y,這樣做的結(jié)果是:即使Eve沒有看過任何一部電影换淆,推薦算法任然可以根據(jù)每部電影平均得分來為其推薦哗总。