隨著個(gè)性化推薦技術(shù)的發(fā)展,各種各樣的推薦算法也競(jìng)相參與到這片新興應(yīng)用領(lǐng)域中進(jìn)行開荒,一時(shí)間百花齊放,其中就有一些基于物理學(xué)背景的算法參與其 中,本文闡述的是這篇文章在推薦算法上的主要內(nèi)容,及其與傳統(tǒng)的協(xié)同過濾算法在形式上的對(duì)比。 文章原名為《Solving the apparent diversity-accuracy dilemma of recommender systems》,要解決的正是當(dāng)下推薦系統(tǒng)領(lǐng)域炙手可熱的問題:怎樣平衡推薦的精確度與多樣性。作者的專業(yè)背景是物理學(xué),曾經(jīng)做過復(fù)雜系統(tǒng)、復(fù)雜網(wǎng)絡(luò)方 面的研究,近年來在推薦領(lǐng)域發(fā)表過好幾篇文章,這一篇發(fā)表在著名雜志PNAS上,可以說是對(duì)之前工作的一個(gè)大匯總。 該文章大致的思路就是把推薦系統(tǒng)中用戶與待推薦對(duì)象的關(guān)系類比為二分圖,借用原來研究復(fù)雜網(wǎng)絡(luò)動(dòng)力系統(tǒng)的一些概念與方法來研究推薦領(lǐng)域中的問題。關(guān) 于這樣的解決思路,我一年多前曾經(jīng)就作者的另一篇文章作過一些闡述,欲了解細(xì)節(jié)的可以先看看,看完對(duì)主要思想能有比較清晰的理解,本文將側(cè)重于數(shù)學(xué)方面的推導(dǎo)與比較,不再就細(xì)節(jié)上過多闡述。 下圖是我在稿紙上的推導(dǎo)過程,后面我結(jié)合著每一步的推導(dǎo)過程進(jìn)行說明,每一步以標(biāo)號(hào)標(biāo)示。 0、這里總括一下最終的推薦方式,等式右邊的f是一個(gè)用戶的收藏向量,取值為0-1,W是一個(gè)轉(zhuǎn)移矩陣,等式左邊為最終獲得的推薦向量,刨除用戶已 經(jīng)收藏的對(duì)象,其余的按值排序取出前L個(gè),即可視為對(duì)該用戶的推薦。所以,現(xiàn)在的問題就是,怎么得到W這個(gè)矩陣。 1、這里定義用戶收藏矩陣為A,維度為u*o,行表示用戶,列表示對(duì)象,依據(jù)文中的說法,這里只考慮取值為0-1的情況,取值為1則表示對(duì)應(yīng)位置的 用戶收藏了相應(yīng)的對(duì)象,0則不然。 2、這里定義了用戶與對(duì)象的“度”向量,即對(duì)A矩陣的行與列求和。 3、對(duì)收藏矩陣作行歸一化,在本文,矩陣除以向量的統(tǒng)一意義為該矩陣每一列與該向量對(duì)位相除。 4、文章中提出了兩種算法,ProbS與HeatS,ProbS比較好理解,算法的詳細(xì)解釋見我之前的文章,這里僅列出其迭代公式。拉丁字母的下標(biāo)用以表示對(duì)象,英文字母的下標(biāo)用以表示用戶。這個(gè)迭代式 的涵義是兩對(duì)象之間的影響,或者說是貢獻(xiàn)度。 5、經(jīng)過一番變換之后,可以得到ProbS算法的轉(zhuǎn)移矩陣,這個(gè)正是我們?cè)?步里提到的要尋找的轉(zhuǎn)移矩陣。 6、HeatS算法的迭代式與ProbS的類似,只是最后要除的分母不同,從轉(zhuǎn)移矩陣來看,則僅僅只是轉(zhuǎn)置關(guān)系。 7、從第0步的對(duì)每個(gè)用戶的推薦過程,我們可以得到對(duì)所有用戶的推薦公式,其中W可為第5或第6步算出來的轉(zhuǎn)移矩陣。 8、再回顧一下我們熟悉item-based協(xié)同過濾(CF)的推薦過程,從矩陣的角度來描述,就是如8式所示,其中mod(A)表示A矩陣各列的 模所組成的向量。形式與上面的算法類似,但相乘的順序不一樣,而且這里的W表示的是對(duì)象相似度矩陣。 9、這一番變換可以生成跟CF類似的推薦形式,WH就可以看作是CF中的相似度矩陣了(但計(jì)算方法不一樣)。殊途同歸,兩種算法就統(tǒng)一到一種形式上 去了。但不要試圖用數(shù)學(xué)的方式來解釋這個(gè)式子,我嘗試過,無論如何解釋不通,只能從物理的角度來進(jìn)行描述。原文章中對(duì)此沒有作數(shù)學(xué)分析,只是從實(shí)驗(yàn)角度來 論證算法的有效性。 10、第10步是該文的最終算法,即混合之前的兩種算法,得到一個(gè)并不太會(huì)增加計(jì)算消耗的混合推薦算法。跟上面兩種算法的介紹類似,我在把迭代式列 出來后,又把它轉(zhuǎn)換成矢量運(yùn)算的形式,即最終結(jié)果是兩個(gè)矩陣的點(diǎn)乘。 除了上述我介紹的算法外,該文還有一部分重要的內(nèi)容是定義兩個(gè)精確度指標(biāo)、兩個(gè)多樣性指標(biāo),并在三個(gè)數(shù)據(jù)集上對(duì)幾種推薦算法的效果進(jìn)行了對(duì)比,結(jié)論 是:ProbS算法在精確度上表現(xiàn)更好,HeatS算法在多樣性上表現(xiàn)更好,而混合式的算法能得到精確度與多樣性兩全其美的效果,有興趣的讀者可以讀讀原 文。 對(duì)于這篇文章,我存留有幾點(diǎn)疑問: 1、初始資源(即用戶收藏矩陣A)除了0-1,是否可以是別的值,這樣rating數(shù)據(jù)集也可以引入進(jìn)來? 2、W矩陣為什么不可以多步迭代生成?原文中用資源分配來描述W矩陣的轉(zhuǎn)移作用,從動(dòng)力學(xué)的角度來說,這樣的迭代分配可以無限進(jìn)行下去直到達(dá)到一個(gè) 穩(wěn)態(tài),但為什么只迭代一次就用作推薦計(jì)算的轉(zhuǎn)換矩陣(即對(duì)用戶收藏矩陣的加權(quán)變換),這是何道理? 3、數(shù)學(xué)上的不可解釋性。正如第9步所得到的結(jié)果,該算法與CF有異曲同工之處,但CF算法可以從余弦距離的角度加以解釋,而你無法從推薦表達(dá)式上 解釋為什么ProbS算法在精確度上表現(xiàn)更好,而HeatS在多樣上表現(xiàn)更好。 對(duì)以上前兩點(diǎn)文中沒有作過多的解釋,而從第三點(diǎn)來說由于整個(gè)推薦算法的有效性并不能從數(shù)學(xué)上得到解釋,而只是通過實(shí)驗(yàn)對(duì)比結(jié)果進(jìn)行說明,所以對(duì)于這 兩點(diǎn)疑慮,我也只能從實(shí)驗(yàn)結(jié)果上進(jìn)行猜測(cè):即以上兩步的嘗試會(huì)導(dǎo)致實(shí)驗(yàn)結(jié)果變壞。 更新:我實(shí)現(xiàn)了兩個(gè)算法,并做了實(shí)驗(yàn),從簡(jiǎn)單的觀測(cè)結(jié)果來看,兩種算法的TopK推薦結(jié)果都差不多,accuracy還可以,diversity沒 有體現(xiàn)出來。可以到此為止了。 |
|