《轉(zhuǎn)自》http://www./cn/articles/recommendation-algorithm-overview-part02?spm=5176.100239.blogcont54403.28.e2cULL
本文是推薦算法綜述的第二部分。在第一篇文章中,我們簡要介紹了推薦算法主要種類及其特點。在本文中,我們將會詳細介紹協(xié)同過濾推薦算法以及其優(yōu)點和缺點,這樣大家就能深入理解其運行原理。 協(xié)同過濾(CF)推薦算法通過在用戶活動中尋找特定模式來為用戶產(chǎn)生有效推薦。它依賴于系統(tǒng)中用戶的慣用數(shù)據(jù),例如通過用戶對其閱讀過書籍的評價可以推斷出用戶的閱讀偏好。這種算法的核心思想就是:如果兩個用戶對于一些項的評分相似程度較高,那么一個用戶對于一個新項的評分很有可能類似于另一個用戶。值得注意的是,他們推薦的時候不依賴于項的任何附加信息(例如描述、元數(shù)據(jù)等等)或者用戶的任何附加信息(例如喜好、人口統(tǒng)計相關(guān)數(shù)據(jù)等等)。CF的方法大體可分為兩類:分別為鄰域和基于模型的方法。鄰域方法(即基于內(nèi)存的CF)是使用用戶對已有項的評分直接預(yù)測該用戶對新項的評分。與之相反,基于模型的方法是使用歷史評分數(shù)據(jù),基于學(xué)習(xí)出的預(yù)測模型,預(yù)測對新項的評分。通常的方式是使用機器學(xué)習(xí)算法,找出用戶與項的相互作用模型,從而找出數(shù)據(jù)中的特定模式。 基于鄰域的CF方法意在找出項與項之間的聯(lián)系(基于項的CF),或者用戶與用戶之間的聯(lián)系(基于用戶的CF)。
首先,在做基于項的協(xié)同過濾之前,我們先通過例子來看一下基于用戶的協(xié)同過濾。 假設(shè)我們有一組用戶,他們表現(xiàn)出了對一組圖書的喜好。用戶對一本圖書的喜好程度越高,就會給其更高的評分,范圍是從1到5。我們來通過一個矩陣來展示它,行代表用戶,列代表圖書(圖1)。 圖1:用戶對圖書的評分。所有的評分范圍從1到5,5代表喜歡程度最高。第一個用戶(行1)對第一個圖書(列1)的評分是4??盏膯卧翊碛脩粑唇o圖書評價。 使用基于用戶的協(xié)同過濾方法,我們首先要做的是基于用戶給圖書作出的評價計算出用戶之間的相似度。讓我們從一個單一用戶的角度考慮這個問題,看圖1中的第一行。要做到這一點,常見的做法是將使用包含了用戶喜好項的向量(或數(shù)組)代表每一個用戶。相較于使用多樣化的相似度量這種做法非常直接。在這個例子中,我們將使用余弦相似性。當我們把第一個用戶和其他五個用戶進行比較時,就能直觀地看到他和其他用戶的相似程度(圖2)。對于大多數(shù)相似度量,向量之間相似度越高,代表彼此更相似。本例中,第一個用戶與兩位其他用戶非常相似,有兩本共同書籍,與另兩位用戶的相似度低一些,只有一本共同書籍,而與最后一名用戶完全不相似,沒有一本共同書籍。 圖2:第一個用于與其他用戶的相似度??梢允褂糜嘞蚁嗨菩栽谝粋€單一維度繪制用戶之間的相似度。 更一般地,我們可以計算出每個用戶的相似性,并且在相似矩陣中表示它們(圖3)。這是一個對稱矩陣,這意味著對它進行數(shù)學(xué)計算會有一些有用的特性。單元格的背景顏色表明用戶相似度的高低,更深的紅色表示他們之間更相似。 圖3:用戶間的相似矩陣。用戶之間的相似度基于用戶對所讀圖書的評價數(shù)據(jù)的相似度 現(xiàn)在我們使用基于用戶的協(xié)同過濾方法準備好了為用戶生成推薦。在一般情況下,對于一個給定的用戶,這意味著找到最相似的用戶,并推薦這些類似的用戶欣賞的項,并根據(jù)用戶相似度對其進行加權(quán)。我們先來看第一個用戶,為他們生成一些推薦。首先,我們找到了與第一個用戶最相似的另一用戶,刪除用戶已經(jīng)評價過的書籍,給最相似用戶正在閱讀的書籍加權(quán),然后計算出總和。在這種情況下,我們計算出n=2,表示為了產(chǎn)生推薦,需要找出與目標用戶最相似的兩個用戶。這兩個用戶分別是2和3(圖4)。然后,第一個用戶已經(jīng)評價了5和1,所產(chǎn)生的推薦書是3(4.5分)和4(3分)。 圖4:為一個用戶進行推薦。我們將選取最相似的兩個用戶所評價的書,進行加權(quán),然后推薦加權(quán)分數(shù)最高且目標用戶未評價過的圖書。 通過基于用戶的協(xié)同過濾讓我們對協(xié)同過濾有了一定的理解。接著讓我們再看一個例子,基于項的協(xié)同過濾。同樣地,我們以評價過一些書籍的一組用戶為基礎(chǔ)(圖1)。 圖5:第一個圖書和其它圖書的對比。圖書用評價過它們的用戶表示。使用相似值(0-1)表示相似度。兩本書越相似則相似值越高 為了更充分地顯示結(jié)果,我們可以顯示表示所有圖書之間相似度的相似矩陣(圖6)。同樣地,單元格背景顏色的深淺表示相似度的高低,顏色越深表明相似度越高。 圖6:書的相似矩陣 現(xiàn)在,我們已經(jīng)知道了圖書之間的相似度,我們可以為用戶進行推薦。在基于項的方法中,我們采用被用戶評價過的項,推薦和被采取項最相似的項。在我們的例子中,第一個用戶首先將被推薦第三本書,其次是第六本書(圖7)。另外,我們只推薦和用戶已經(jīng)評價過圖書最相似的前兩本書。 圖7:為用戶進行推薦。我們選取他們評價過的圖書,找出與他們最相似的前兩本書,進行加權(quán),然后推薦給用戶加權(quán)分最高且他沒有讀過的書。 鑒于基于用戶和基于項的協(xié)同過濾的描述聽起來非常相似,有趣的是它們可以產(chǎn)生不同的推薦結(jié)果。即使在我們這里給出的簡易的例子中,即使使用的數(shù)據(jù)相同,這兩種方法產(chǎn)生對于同一用戶產(chǎn)生的推薦結(jié)果也不相同。當你構(gòu)建推薦系統(tǒng)的時候,這兩種協(xié)同過濾方式都是值得考慮的。即使將這兩種方式描述給非專家聽,它們聽起來也非常相似,在實踐中,他們可以產(chǎn)生不同的結(jié)果,為用戶提供了不同的體驗。 鄰域方法由于其簡單性和效率具有相當?shù)闹?,同時也是由于它們有產(chǎn)生準確的和個性化的推薦的能力。然而,它們也有一些可擴展性的限制,因為在用戶數(shù)量和項的數(shù)量增長的情況下,它們需要一個相似度的計算(基于用戶或項)。在最壞的情況下,這種計算的時間復(fù)雜度可能是O(m*n),但在實踐中的情況稍微好一點O(m+n),部分原因是由于利用了數(shù)據(jù)的稀疏度。雖然稀疏有助于可擴展性,它也對基于鄰域的方法提出了一個挑戰(zhàn),因為我們的用戶僅僅對龐大數(shù)量項中的很少一部分進行了評分。例如,在Mendeley,我們有數(shù)以百萬計的文章而一個用戶可能只讀了其中幾百篇文章。兩個讀過100篇文章的用戶有一篇相同文章的概率(共5000萬篇文章)是0.0002。 基于模型的方法可以幫助克服一些基于鄰域的方法的局限性。它不像基于鄰域的方法,使用用戶項評分直接預(yù)測新的項?;谀P偷姆椒〞谑褂迷u分去學(xué)習(xí)預(yù)測模型的基礎(chǔ)上,去預(yù)測新項。一般的想法是使用機器學(xué)習(xí)算法建立用戶和項的相互作用模型,從而找出數(shù)據(jù)中的模式。在一般情況下,基于模型的CF被認為是建立CF推薦系統(tǒng)的更先進的算法。有許多不同的算法可用于構(gòu)建模型并基于這些模型進行預(yù)測,例如,貝葉斯網(wǎng)絡(luò)、聚類、分類、回歸、矩陣分解、受限玻爾茲曼機等等。這些技術(shù)在為了最終贏得Netflix獎的解決方案中扮演了關(guān)鍵角色。Netflix發(fā)起了一個競賽,從2006年到2009年提供一百萬美元獎金,頒發(fā)給產(chǎn)生的推薦比他們自己的推薦系統(tǒng)精確10%以上的推薦系統(tǒng)團隊。成功獲獎的解決方案是Netflix研發(fā)的一個集成(即混合)了超過100種算法模型,這些算法模型都采用了矩陣分解和受限玻爾茲曼機。 矩陣因子分解(如奇異值分解,奇異值分解+ +)將項和用戶都轉(zhuǎn)化成了相同的潛在空間,它所代表了用戶和項之間的潛相互作用(圖8)。矩陣分解背后的原理是潛在特征代表了用戶如何給項進行評分。給定用戶和項的潛在描述,我們可以預(yù)測用戶將會給還未評價的項多少評分。 圖8:矩陣分解表示。用戶偏好矩陣可以被分解成一個用戶主題矩陣乘以一個主題項矩陣。 在表1中,我們概述了基于鄰域和基于模型的協(xié)同過濾方法的主要優(yōu)點和缺點。由于它們僅依賴于用戶的慣用數(shù)據(jù),協(xié)同過濾方法需要最低限度專業(yè)工程的努力,以產(chǎn)生足夠好的結(jié)果,但是,他們也有局限性。例如,CF傾向于推薦流行的項,很難推薦給有獨特口味的人(即感興趣的項并沒有產(chǎn)生足夠多的慣用數(shù)據(jù))。這被稱為流行性偏見,它通常是用基于內(nèi)容的過濾方法。CF方法的一個更重要的限制是我們所稱的“冷啟動問題”,系統(tǒng)是不能夠給沒有(或非常少)慣用活動的用戶進行推薦,又名曰新用戶問題,或推薦新項問題。新用戶的“冷啟動問題”可以通過流行性和混合方法進行解決,而新項問題可以通過使用基于內(nèi)容的過濾或multi-armed bandits(即探索利用)進行解決。我們將在下一篇文章中討論上述方法中的一些方法。 在這篇文章中,我們討論了三種基本的協(xié)同過濾的實現(xiàn)方法?;陧?、基于用戶和基于矩陣分解之間的差異是很微妙的,很難簡單明了地解釋它們。了解它們之間的差異將有助于你選擇最適合你的推薦算法。在接下來的文章中,我們會繼續(xù)更加深入地介紹一些流行的推薦算法。 查看英文原文:Overview of Recommender Algorithms – Part 2
|
|