推薦演算法和機器學習系列
【編者按】推薦系統在各種系統中廣泛使用,推薦演算法則是其中最核心的技術點,InfoQ接下來將會策劃系列文章來為讀者深入介紹。推薦演算法綜述分文五個部分,本文作為第一篇,將會簡要介紹推薦系統演算法的主要種類。其中包括演算法的簡要描述、典型的輸入、不同的細分型別以及其優點和缺點。在第二和第三篇中,我們將會詳細介紹這些演算法的區別,讓你能夠深入理解他們的工作原理。
注:本文翻譯自Building Recommenders,InfoQ中文站在獲得作者授權的基礎上對文章進行了翻譯。
為推薦系統選擇正確的推薦演算法是非常重要的決定。目前為止,已經有許多推薦演算法可供選擇,但為你需要解決的特定問題選擇一種特定的演算法仍然很困難。每一種推薦演算法都有其優點和缺點,當然也有其限制條件,在作出決定之前,你必須要一一考量。在實踐中,你可能會測試幾種演算法,以發現哪一種最適合你的使用者,測試中你也會直觀地發現它們是什麼以及它們的工作原理。
推薦系統演算法通常是某類推薦模型的實現,它負責獲取資料,例如使用者的喜好和可推薦項的描述,以及預測給定的使用者組會對哪些選項感興趣。
推薦演算法通常被分為四大類(1-4):
- 協同過濾推薦演算法
- 基於內容的推薦演算法
- 混合推薦演算法
- 流行度推薦演算法
除了這些種類以外,還有一些高階非傳統的推薦演算法(5)。
推薦演算法綜述是分文五個部分的系列文章,本文作為第一篇,將會簡要介紹推薦系統演算法的主要種類。其中包括演算法的簡要描述、典型的輸入、不同的細分型別以及其優點和缺點。在第二和第三篇中,我們將會詳細介紹這些演算法的區別,讓你能夠深入理解他們的工作原理。系列文章中的一些內容參考了一篇來自 RecSys 2014 tutorial 的文章:由
1.協同過濾推薦演算法
簡介:通過在使用者的一系列行為中尋找特定模式來產生使用者特殊推薦
輸入:僅僅依賴於慣用資料(例如評價、購買、下載等使用者偏好行為)
型別:
- 基於鄰域的協同過濾(基於使用者和基於項)
- 基於模型的協同過濾(矩陣因子分解、受限玻爾茲曼機、貝葉斯網路等等)
優點:
- 需要最小域
- 不需要使用者和項
- 大部分場景中能夠產生足夠好的結果
缺點:
- 冷啟動問題
- 需要標準化產品
- 需要很高的使用者和項的比例(1:10)
- 流行度偏見(有長尾的時候表現不夠好)
- 難於提供解釋
2.基於內容的推薦演算法
簡介:向用戶推薦和其過去喜歡項的內容(例如元資料、描述、話題等等)相似的項
輸入:僅僅依賴於項和使用者的內容/描述(除了慣用資料)
型別:
- 資訊檢索(例如 tf-idf 和 Okapi BM25)
- 機器學習(例如樸素貝葉斯、支援向量機、決策樹等等)
優點:
- 沒有冷啟動問題
- 不需要慣用資料
- 沒有流行度偏見,可以推薦有罕見特性的項
- 可以使用使用者內容特性來提供解釋
缺點:
- 項內容必須是機器可讀的和有意義的
- 容易歸檔使用者
- 很難有意外,缺少多樣性
- 很難聯合多個項的特性
3.混合推薦演算法
簡介:綜合利用協同過濾推薦演算法和基於內容的推薦演算法各自的優點同時抵消各自的缺點
輸入:同時使用使用者和項的內容特性與慣用資料,同時從兩種輸入型別中獲益
型別:
- 加權
- 交換
- 混合
- 特性組合
- 案列
- 特徵增強
- 元層次
優點:
- 由於單獨使用協同過濾推薦演算法和基於內容的推薦演算法
- 沒有冷啟動問題
- 沒有流行度偏見,可推薦有罕見特性的項
- 可產生意外,實現多樣性
缺點:
- 需要通過大量的工作才能得到正確的平衡
4.流行度推薦演算法
簡介:這是一種推薦流行項的方法(例如最多下載、最多看過、最大影響的項)
輸入:使用慣用資料和項的內容(例如類目)
優點:
- 相對容易實現
- 良好的基準演算法
- 有助於解決新使用者冷啟動問題
缺點:
- 需要標準化產品
- 經常需要一些項的型別進行分類
- 不會推薦新項(很少有機會被觀測到)
- 推薦列表不會改變太大
5.高階非傳統推薦演算法
型別:
- 深度學習
- 學習等級
- Multi-armed bandits(探索/開發)
- 上下文感知推薦
- 張量分解
- 分解機
- 社會推薦
優點:
- 利於勉強維持最終效能百分點
- 你可以說你正在使用漸進的方式
缺點:
- 難於理解
- 缺乏推薦工具支援
- 沒有為你的首個推薦系統提供推薦的方式