SVD在推薦系統(tǒng)中的應(yīng)用

<center>SVD在推薦系統(tǒng)中的應(yīng)用</center>

摘要

隨著網(wǎng)絡(luò)信息爆炸性增長(zhǎng),用戶(hù)很難在海量的信息中找到自己需要的產(chǎn)品勾缭;商家也難以通過(guò)人工的方式向用戶(hù)推薦其喜愛(ài)的產(chǎn)品,錯(cuò)失商機(jī)。基于SVD的協(xié)同過(guò)濾算法能夠通過(guò)分析用戶(hù)——產(chǎn)品的評(píng)分矩陣将谊,來(lái)對(duì)空白評(píng)分進(jìn)行預(yù)測(cè),根據(jù)預(yù)測(cè)結(jié)果來(lái)對(duì)用戶(hù)進(jìn)行產(chǎn)品推薦渐白。但是傳統(tǒng)的SVD方法不支持對(duì)稀疏矩陣進(jìn)行分解,因此需要對(duì)稀疏評(píng)分矩陣進(jìn)行填充逞频。利用總體平均值進(jìn)行填充纯衍,效率太低,很難應(yīng)用于實(shí)際生產(chǎn)苗胀,通過(guò)Funk-SVD方法可以既能夠填充稀疏矩陣襟诸,也能夠兼顧效率。

??關(guān)鍵字:SVD ?Funk—SVD ?推薦系統(tǒng) ?協(xié)同過(guò)濾

??協(xié)同過(guò)濾(Collaborative Filtering基协,簡(jiǎn)稱(chēng)CF)是利用集體智慧的一個(gè)典型方法歌亲,算法的核心思想類(lèi)似于我們?cè)谶x擇看一本書(shū)時(shí),往往會(huì)參考與自己口味相近的朋友的意見(jiàn)澜驮∠菥荆基于CF算法的主要有兩種,一種是基于領(lǐng)域的方法杂穷,另一種是基于隱語(yǔ)義的方法悍缠。

??基于領(lǐng)域的方法主要是通過(guò)收集用戶(hù)行為,得到用戶(hù)和物品的特征向量耐量,進(jìn)一步計(jì)算相似度飞蚓,找到物品或用戶(hù)的相似鄰居±妊眩基于隱語(yǔ)義的方法不依賴(lài)與共同評(píng)分趴拧,其基本思想是將用戶(hù)和物品分別映射到兩個(gè)真實(shí)含義未知的特征向量上去溅漾。這兩個(gè)特征向量的含義并不能通過(guò)人為給定,只能通過(guò)SVD模型自己來(lái)確定著榴。模型讀取用戶(hù)和物品組成的評(píng)分矩陣添履,通過(guò)最小化損失來(lái)學(xué)習(xí)這兩個(gè)向量。

??SVD又稱(chēng)奇異值分解兄渺,是線(xiàn)性代數(shù)中一種矩陣分解的技術(shù)缝龄,它能夠?qū)⑷我庖粋€(gè)m*n的矩陣A分解成為U、S挂谍、V叔壤,U是m*m的正交矩陣,V是n*n的正交矩陣口叙,S是m*n的矩陣炼绘,且A=U*S*V。通過(guò)SVD方式將矩陣A分解后妄田,如果只保留前k個(gè)最大的奇異值俺亮,就實(shí)現(xiàn)了對(duì)矩陣降維的目的。我們之所以能夠通過(guò)保留前k個(gè)最大的奇異值來(lái)實(shí)現(xiàn)降維疟呐,是因?yàn)樵诤芏嗲闆r下脚曾,前10%甚至1%的奇異值的和就占了全部的奇異值之和的99%以上的比例。盡管我們能夠通過(guò)降維來(lái)減少運(yùn)算量启具,但是k值的選取是我們需要面對(duì)的重要問(wèn)題本讥。如果k值選的過(guò)大,那么降維的意義就不大鲁冯;如果k值選的過(guò)小拷沸,那么降維之后就有可能丟失重要信息。下面通過(guò)一個(gè)例子來(lái)具體說(shuō)明SVD算法在推薦系統(tǒng)中的應(yīng)用薯演。

??假設(shè)存在以下行為user和列為item的數(shù)據(jù)矩陣A撞芍,0表示沒(méi)有看過(guò)該電影:
A= \left[ \begin{matrix} 5 & 5 & 0 & 5\\ 5 & 0 & 3 & 4\\ 3 & 4 & 0 & 3\\ 0 & 0 & 5 & 3\\ 5 & 4 & 4 & 5\\ 5 & 4 & 5 & 5 \end{matrix} \right]

??通過(guò)SVD分解之后產(chǎn)生U、S跨扮、V三個(gè)矩陣:

U= \left[ \begin{matrix} -0.4472 & -0.5373 & -0.0064 & -0.5037 & -0.3857 & -0.3298\\ -0.3586 & 0.2461 & 0.8622 & -0.1458 & 0.0780 & 0.2002\\ -0.2925 & -0.4033 & -0.2275 & -0.1038 & 0.4360 & 0.7065\\ -0.2078 & 0.6700 & -0.3951 & -0.5888 & 0.0260 & 0.0667\\ -0.5099 & 0.0597 & -0.1097 & 0.2869 & 0.5946 & -0.5371\\ -0.5316 & 0.1887 & -0.19145 & 0.5341 & -0.5485 & 0.2429 \end{matrix} \right]
S= \left[ \begin{matrix} 17.7139 & 0 & 0 & 0\\ 0 & 6.3917 & 0 & 0\\ 0 & 4 & 3.0980 & 0\\ 0 & 0 & 0 & 1.3290\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 \end{matrix} \right]
V= \left[ \begin{matrix} -0.5710 & -0.2228 & 0.6749 & 0.4109\\ -0.4275 & -0.5172 & -0.6929 & 0.2637\\ -0.3846 & 0.8246 & -0.2532 & 0.3286\\ -0.5859 & 0.0532 & 0.0140 & -0.8085 \end{matrix} \right]

??此時(shí)序无,我們選取k=2來(lái)對(duì)U,S好港,V進(jìn)行降維愉镰,k=2即表示我們默認(rèn)該數(shù)據(jù)集含有兩個(gè)隱形因子:

U'= \left[ \begin{matrix} -0.4472 & -0.53738\\ -0.3586 & 0.2461\\ -0.2925 & -0.4033\\ -0.2078 & 0.6700\\ -0.5099 & 0.0597\\ -0.5316 & 0.1887 \end{matrix} \right]
S'= \left[ \begin{matrix} 17.7139 & 0\\ 0 & 6.3917 \end{matrix} \right]
'= \left[ \begin{matrix} -0.5710 & -0.2228\\ -0.4275 & -0.5172\\ -0.3846 & 0.8246\\ -0.5859 & 0.0532 \end{matrix} \right]

??此時(shí)我們通過(guò)降維后的U、S钧汹、V相乘來(lái)得到A':

A'= \left[ \begin{matrix} 5.2885 & 5.1627 & 0.2149 & 4.4591\\ 3.2768 & 1.9021 & 3.7400 & 3.8058\\ 3.5324 & 3.5479 & -0.1332 & 2.8984\\ 1.1475 & -0.6417 & 4.9472 & 2.3846\\ 5.0727 & 3.6640 & 3.7887 & 5.3130\\ 5.1086 & 3.4019 & 4.6166 & 5.5822 \end{matrix} \right]

??通過(guò)矩陣A和A'的比較丈探,我們可以很直觀的看出這兩個(gè)矩陣十分相似,可以看做是一種數(shù)據(jù)有損的壓縮拔莱。此時(shí)我們可以開(kāi)始對(duì)一個(gè)新用戶(hù)進(jìn)行初步的推薦碗降。假設(shè)該用戶(hù)的評(píng)分向量p=[5,5,0,0,0,5]隘竭,首先我們通過(guò)公式p'=p*U'*S'l來(lái)得出用戶(hù)的二維向量,接著通過(guò)余弦相似度計(jì)算來(lái)找出與新用戶(hù)最相似的用戶(hù)評(píng)分向量q=[5,5,3,0,5,5]讼渊,這樣我們可以根據(jù)向量q來(lái)對(duì)向量p進(jìn)行填充动看,也就是預(yù)測(cè)。但是爪幻,這種預(yù)測(cè)存在非常大的誤差菱皆。因?yàn)槠娈惙纸庖缶仃囀浅砻艿模簿褪钦f(shuō)奇異分解不允許待分解矩陣中存在空白的部分挨稿,這與現(xiàn)實(shí)生活是沖突的仇轻。在現(xiàn)實(shí)生活中,評(píng)分矩陣一定是稀疏的奶甘,因?yàn)橛脩?hù)沒(méi)有評(píng)分的物品一定是占大多數(shù)篷店。為了解決這一問(wèn)題,我們可以預(yù)先對(duì)缺失值進(jìn)行填充臭家,例如使用全局平均值疲陕。但是這一方法也有一個(gè)缺點(diǎn)——時(shí)間復(fù)雜度非常高。顯示生活中钉赁,用戶(hù)和物品的數(shù)目成千上萬(wàn)蹄殃,計(jì)算總體平均值的效率非常低。

??為了解決矩陣稀疏性你踩,同時(shí)提高運(yùn)算效率窃爷,我們引入了Funk—SVD算法。該算法又稱(chēng)為隱語(yǔ)義模型姓蜂,主要思路是,將原始評(píng)分矩陣A(m*n)分解成兩個(gè)矩陣P(m*k)和Q(k*n)医吊,同時(shí)僅考察原始評(píng)分矩陣中有評(píng)分的項(xiàng)分解結(jié)果是否準(zhǔn)確钱慢,而判別標(biāo)準(zhǔn)則是均方差。即對(duì)于矩陣A(m*n)卿堂,我們想辦法將其分解為P(m*k)束莫、Q(k*n),此時(shí)對(duì)于原始矩陣中有評(píng)分的位置M'ui來(lái)說(shuō)草描,其在分解后矩陣中對(duì)應(yīng)的值就是:


p1.png

那么對(duì)于整個(gè)評(píng)分矩陣而言览绿,總的損失就是:


p2.png

SSE越小,說(shuō)明總體的損失越小穗慕,預(yù)測(cè)結(jié)果越精確饿敲。我們可以通過(guò)隨機(jī)梯度下降法來(lái)求SSE的最小值,隨機(jī)梯度下降法在此就不展開(kāi)敘述逛绵。得出最小SSE后怀各,我們通過(guò)公式(1)來(lái)對(duì)原評(píng)分矩陣進(jìn)行填充倔韭,也就是對(duì)用戶(hù)的空白評(píng)分進(jìn)行預(yù)測(cè)。

??將SVD用于推薦系統(tǒng)瓢对,推薦結(jié)果比較準(zhǔn)確寿酌,模型的拓展性也很強(qiáng),能夠應(yīng)用于各種場(chǎng)景硕蛹。但是SVD模型的可解釋性很差醇疼,其中的隱性因子無(wú)法對(duì)應(yīng)與現(xiàn)實(shí)生活中的具體概念,模型的訓(xùn)練速度仍然有待提高法焰⊙砭#總體來(lái)說(shuō),SVD在推薦系統(tǒng)的應(yīng)用方面擁有良好的前景壶栋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辰如,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贵试,更是在濱河造成了極大的恐慌琉兜,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毙玻,死亡現(xiàn)場(chǎng)離奇詭異豌蟋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)桑滩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)梧疲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人运准,你說(shuō)我怎么就攤上這事幌氮。” “怎么了胁澳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵该互,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我韭畸,道長(zhǎng)宇智,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任胰丁,我火速辦了婚禮随橘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锦庸。我一直安慰自己机蔗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蜒车,像睡著了一般讳嘱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酿愧,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天沥潭,我揣著相機(jī)與錄音,去河邊找鬼嬉挡。 笑死钝鸽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庞钢。 我是一名探鬼主播拔恰,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼基括!你這毒婦竟也來(lái)了颜懊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤风皿,失蹤者是張志新(化名)和其女友劉穎河爹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體桐款,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咸这,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了魔眨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媳维。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遏暴,靈堂內(nèi)的尸體忽然破棺而出侄刽,到底是詐尸還是另有隱情,我是刑警寧澤朋凉,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布唠梨,位于F島的核電站,受9級(jí)特大地震影響侥啤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茬故,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一盖灸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧磺芭,春花似錦赁炎、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)讥裤。三九已至,卻和暖如春姻报,著一層夾襖步出監(jiān)牢的瞬間己英,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工吴旋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留损肛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓荣瑟,卻偏偏與公主長(zhǎng)得像治拿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笆焰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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