推薦系統的常用算法概述


  前一陣子准備畢業論文的開題,一直在看推薦系統相關的論文。對推薦系統有了一個更加清晰和理性的認識,也對推薦算法有了深入了解。借此機會總結分享一下,大家多多拍磚。

推薦系統的出現

  隨着互聯網的發展,人們正處於一個信息爆炸的時代。相比於過去的信息匱乏,面對現階段海量的信息數據,對信息的篩選和過濾成為了衡量一個系統好壞的重要指標。一個具有良好用戶體驗的系統,會將海量信息進行篩選、過濾,將用戶最關注最感興趣的信息展現在用戶面前。這大大增加了系統工作的效率,也節省了用戶篩選信息的時間。

  搜索引擎的出現在一定程度上解決了信息篩選問題,但還遠遠不夠。搜索引擎需要用戶主動提供關鍵詞來對海量信息進行篩選。當用戶無法准確描述自己的需求時,搜索引擎的篩選效果將大打折扣,而用戶將自己的需求和意圖轉化成關鍵詞的過程本身就是一個並不輕松的過程。

  在此背景下,推薦系統出現了,推薦系統的任務就是解決上述的問題,聯系用戶和信息,一方面幫助用戶發現對自己有價值的信息,另一方面讓信息能夠展現在對他感興趣的人群中,從而實現信息提供商與用戶的雙贏。

 

推薦算法介紹

  1 基於人口統計學的推薦

  這是最為簡單的一種推薦算法,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,然后將相似用戶喜愛的其他物品推薦給當前用戶。

  

  系統首先會根據用戶的屬性建模,比如用戶的年齡,性別,興趣等信息。根據這些特征計算用戶間的相似度。比如系統通過計算發現用戶A和C比較相似。就會把A喜歡的物品推薦給C。

  優勢:

  a 不需要歷史數據,沒有冷啟動問題

  b 不依賴於物品的屬性,因此其他領域的問題都可無縫接入。

  不足:

  算法比較粗糙,效果很難令人滿意,只適合簡單的推薦

 

  2 基於內容的推薦

  與上面的方法相類似,只不過這次的中心轉到了物品本身。使用物品本身的相似度而不是用戶的相似度。

  

  系統首先對物品(圖中舉電影的例子)的屬性進行建模,圖中用類型作為屬性。在實際應用中,只根據類型顯然過於粗糙,還需要考慮演員,導演等更多信息。通過相似度計算,發現電影A和C相似度較高,因為他們都屬於愛情類。系統還會發現用戶A喜歡電影A,由此得出結論,用戶A很可能對電影C也感興趣。於是將電影C推薦給A。

  優勢:

  對用戶興趣可以很好的建模,並通過對物品屬性維度的增加,獲得更好的推薦精度

  不足:

  a 物品的屬性有限,很難有效的得到更多數據

  b 物品相似度的衡量標准只考慮到了物品本身,有一定的片面性

  c 需要用戶的物品的歷史數據,有冷啟動的問題

 

  3 協同過濾

  協同過濾是推薦算法中最經典最常用的,具體的思路我已經在之前的一篇文章中提到過,大家可以去看一下。

  這里只想介紹一下協同過濾中的方法和剛才提到方法的區別。

  大家都知道協同過濾分為基於用戶的協同過濾和基於物品的協同過濾。那么他們和基於人口學統計的推薦和基於內容的推薦有什么區別和聯系呢?下面簡單介紹一下。

  基於用戶的協同過濾——基於人口統計學的推薦

  基於用戶的協同過濾推薦機制和基於人口統計學的推薦機制都是計算用戶的相似度,並基於“鄰居”用戶群計算推薦,但它們所不同的是如何計算用戶的相似度,基 於人口統計學的機制只考慮用戶本身的特征,而基於用戶的協同過濾機制可是在用戶的歷史偏好的數據上計算用戶的相似度,它的基本假設是,喜歡類似物品的用戶 可能有相同或者相似的口味和偏好。

  基於物品的協同過濾——基於內容的推薦

  基於項目的協同過濾推薦和基於內容的推薦其實都是基於物品相似度預測推薦,只是相似度計算的方法不一樣,前者是從用戶歷史的偏好推斷,而后者是基於物品本身的屬性特征信息。

  協同過濾的優勢:

  a 它不需要對物品或者用戶進行嚴格的建模,而且不要求物品的描述是機器可理解的,所以這種方法也是領域無關的。

  b 這種方法計算出來的推薦是開放的,可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好

  不足:

  a 方法的核心是基於歷史數據,所以對新物品和新用戶都有“冷啟動”的問題。

  b 推薦的效果依賴於用戶歷史偏好數據的多少和准確性。

  c 在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的准確度有很大的影響等等。

  d 對於一些特殊品味的用戶不能給予很好的推薦。

  e 由於以歷史數據為基礎,抓取和建模用戶的偏好后,很難修改或者根據用戶的使用演變,從而導致這個方法不夠靈活。

 

  4 混合推薦算法

  以上介紹的方法是推薦領域最常見的幾種方法。但是可以看出,每個方法都不是完美的。因此實際應用中,向Amazon這樣的系統都是混合使用各種推薦算法,各取所長。因此我們在使用時,也可以多考慮一下什么情況下更適合使用哪種算法,來提高我們系統的效率。

 

推薦系統的發展方向

  1 需要考慮在保證推薦准確性的同時增加推薦的多樣性,使特殊喜好的用戶得到推薦

  2 需要考慮用戶對系統的實時反饋,更好的利用反饋數據強化推薦算法

  3 考慮時間,空間,任務等因素,來更好的完成推薦

  

歡迎大家拍磚~ 更多資料請看 http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM