推薦算法入門
1. 推薦算法知識架構
推薦算法有很多種,大體上可以將推薦算法分為以下幾種:
- 協同過濾推薦算法(Collaborative Filter)
- 基於內容的推薦算法(Content-based Filter)
- 基於人口統計信息的推薦算法(Demographic-based)
- 混合推薦算法(Hybrid Recommender)
2. 協同過濾推薦算法(Collaborative Filter,CF)
因為這種推薦算法可以通過基於統計的機器學習算法來得到較好的推薦效果,在工程上容易實現,所以目前絕大多數應用的推薦算法都是CF。CF實現的方式有以下幾種:
- 基於用戶的推薦(Collaborative Filter of base on User )(user-base)
- 基於內容的推薦(Collaborative Filter of base on Item) (item-base)
- 基於模型的推薦(Collaborative Filter of base on model)(model-base)(目前最主流協同過濾類型,一大堆機器學習算法可以在這里找到用武之地)
Demo:CF算法入門demo Java版(建議先實現一下這個demo,可以幫助樹立對於CF的信心)
user-base和item-base使用時的選擇問題
一般來說,如果item數目不多,比如不超過十萬,而且不顯著增長的話,就用item-base好了。因為當item的數目不多並且不顯著增長,說明item之間的關系在一段時間內相對穩定(對比user之間的關系),對於實時更新item-similarity的需求就降低了很多推薦系統效率提高很多,所以用item-base更優。反之,當item數目很多,建議用user-base。
CF小結
協同過濾作為一種經典的推薦算法種類,在工業界應用廣泛,它的優點很多,模型通用性強,不需要太多對應數據領域的專業知識,工程實現簡單,效果也不錯。這些都是它流行的原因。
當然,協同過濾也有些難以避免的難題,比如令人頭疼的“冷啟動”問題,我們沒有新用戶任何數據的時候,無法較好的為新用戶推薦物品。同時也沒有考慮情景的差異,比如根據用戶所在的場景和用戶當前的情緒。當然,也無法得到一些小眾的獨特喜好,這塊是基於內容的推薦比較擅長的。
3. 基於內容的推薦算法(Content-based Filter,CB)
CB的思想是這樣的:根據用戶在過去喜歡的內容,為用戶推薦與其過去喜歡內容相似的內容。CB的關鍵在於內容相似性的度量,這是CB在運用過程中的核心。CB的過程一般包括以下三步:
- 內容表征(Item Representation):為每個item抽取出一些特征來表示此item。
- 特征學習(Profile Learning):你用一個用戶過去喜歡(不喜歡)的item的特征數據,來學習出用戶的喜好特征(profile),構建出模型。
- 生成推薦列表(Recommendation):通過比較上一步得到的用戶特征(profile)與候選item的特征,為此用戶推薦一組相關性最大的item。
CB的缺點
- 無法挖掘出用戶的潛在興趣(假設用於以前只留下了看歷史文章的記錄,那么CB就會一直給用戶推薦歷史文章,而無法發現用戶可能更加喜歡看娛樂文章)
- 無法為新用戶產生推薦(即“冷啟動”問題)。
CB小結
不論是CF還是CB都有自己的局限性,目前的大部分推薦系統都是以CB以外的算法為主(比如CF),以CB為輔來組成一個混合推薦的系統。
4.基於人口統計信息的推薦算法(Demographic-based,DB)
基於人口統計學的推薦算法應該是最容易實現的推薦算法。因其僅使用用戶的基本信息,比如年齡、性別等來衡量用戶的相似性,然后便將和用戶相似的其余用戶偏好的物品推薦給當前用戶了。
DB的優點
- 因為DB使用用戶的基本信息數據,不涉及用戶對物品的歷史喜好,所以對於新用戶來說,能夠根據基本信息馬上進行推薦,不存在CF和CB中的“冷啟動”問題。
- 因為DB不依賴於任何物品信息,所以可以“領域獨立”,意味着DB在不同物品領域均可使用。
DB的缺點
- DB僅僅基於用戶的基本信息,推薦准確性不足,對於音樂、電影等對象的推薦,不能夠起到很好的推薦效果。
- 用戶的基本信息不好獲取,比如年齡等。(在一些情況下,需要建模來獲取用戶的基本信息)
5.混合推薦算法(Hybrid Recommender,HR)
上面提到的CF、CB、DB以及另外的一些推薦算法存在的普遍問題就是優缺點並存,優缺點明顯。為了能夠獲得一個更好的推薦算法,將許多的推薦算法融合起來作為一個整體來進行推薦是一個自然的想法。多種推薦算法融合好后的HR在理論上不會比任何一種單一的推薦算法差,但是HR的復雜度也會相應提高,所以在實際的使用中,使用HR進行推薦,並沒有CF那么普遍。
文中如有錯誤或不足還望指出,十分感謝。——keep250