推薦系統知識點
- 推薦系統架構上,佔比分別爲:數據 60%,產品30%,算法10%。
- 推薦算法主要包括:基於人口統計學的推薦,基於內容的推薦,協同過濾三種。
- 冷啓動分爲用戶冷啓動和物品冷啓動。
- 用戶冷啓動通常是指用戶沒有在產品上留下任何歷史數據,無法獲取其喜好。常用的解決方法是根據用戶的背景資料,或引導性讓用戶進行選擇,從而暫時讓用戶適應熱啓動。在線推薦系統可以做到讓用戶產生了行爲後立馬更新推薦列表。
- 物品冷啓動也類似,對於新物品來說沒有用戶歷史數據,這事會採用物品屬性之間的相關程度來解決。
基於人口學的推薦
如上圖所示,該推薦方法根據用戶的基本信息發現用戶之間的相關程度,然後把相似用戶喜愛的其他物品推薦給當前用戶。
方法:
常常使用用戶年齡,性別,興趣等信息計算用戶間的相似度。
優勢:
- 不需要歷史數據,沒有冷啓動問題。
- 不依賴於物品的屬性,因此其他領域的問題都可無縫接入。
劣勢:
算法比較粗糙,效果很難令人滿意,只適合簡單的推薦
基於內容的推薦
與上文提到的方法類似,只不過用到的不是用戶之間的相似度而是物品間的相似度。
方法:
對物品屬性進行建模,如果兩個物品擁有比較相似屬性,那麼某用戶喜歡物品a的情況下很大可能喜歡物品b。
優勢:
對用戶興趣可以很好的建模,並通過對物品屬性維度的增加,獲得更好的推薦精度。
劣勢:
- 物品的屬性有限,很難有效的得到更多數據。
- 物品相似度的衡量標準只考慮到了物品本身,有一定的片面性。
- 需要用戶的物品的歷史數據,有冷啓動的問題。
協同過濾
核心:用戶交互數據建模
基於協同過濾的推薦可以分爲三個子類:
- 基於用戶的推薦(User-based Recommendation)
- 基於項目的推薦(Item-based Recommendation)
- 基於模型的推薦(Model-based Recommendation)
基於用戶的協同過濾推薦
基本假設:喜歡類似物品的用戶可能擁有相同的口味或偏好。
方法:
根據所有用戶的偏好信息,根據k近鄰等算法構建相似用戶羣,根據這羣用戶的歷史信息進行推薦。
與基於人口統計學方法的異同:
都是計算用戶相似度進行推薦。不同的是,人口學方法是根據用戶的特徵信息進行計算,而協同過濾方法是根據用戶的行爲特徵劃分相似用戶族羣。
基於項目的協同過濾推薦
與基於用戶的協同過濾方法類似,基於項目的方法能夠從項目歷史信息中發掘出具有相似性的物品,從而將類似信息的物品推薦給用戶。
基於模型的協同過濾
根據用戶樣本的喜好信息,通過機器學習方法訓練出推薦模型,根據實時的用戶喜好信息進行推薦。
主流方法:
- 關聯算法:Apriori,FP Tree和PrefixSpan
- 聚類算法:K-Means,BIRCH,DBSCAN和譜聚類
- 分類算法:邏輯迴歸、樸素貝葉斯等。
- 迴歸算法:線性迴歸,決策樹和支持向量機迴歸。
- 矩陣分解:SVD的一些變種:FunkSVD,BiasSVD和SVD++等。
- 圖模型:SimRank,PageRank等。
- 神經網絡:限制玻爾茲曼機(RBM),深度學習方法等。
- 隱語義模型:基於NLP的LDA等方法。
- 圖神經網絡
協同過濾小結
優點:
- 不需要對物品或者用戶進行嚴格的建模,而且不要求物品的描述是機器可理解的,所以這種方法也是領域無關的。
- 這種方法計算出來的推薦是開放的,可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好。
缺點:
- 方法的核心是基於歷史數據,所以對新物品和新用戶都有“冷啓動”的問題。
- 推薦的效果依賴於用戶歷史偏好數據的多少和準確性。
- 在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的準確度有很大的影響等等。
- 對於一些特殊品味的用戶不能給予很好的推薦。
- 由於以歷史數據爲基礎,抓取和建模用戶的偏好後,很難修改或者根據用戶的使用演變,從而導致這個方法不夠靈活。
參考資料
[1] 常用的推薦算法小結
[2] 協同過濾推薦算法總結