推薦系統概述#
什麼是推薦系統#
推薦系統的本質是在用戶和物品之間建立連接:
- 用戶點擊了某個商品
- 用戶收藏了某篇文章
- 用戶購買了某個產品
- 用戶關注了某個人
推薦系統的核心目標:利用已有的「用戶 - 物品」連接,預測未來可能產生的連接。
是否需要推薦系統#
不是每個產品都該做推薦系統。粗略的判斷標準:
價值 = ΔConnection / (ΔUser × ΔItem)- ΔConnection:新增的「用戶 - 物品」連接數
- ΔUser、ΔItem:新增用戶數與新增物品數
當這個比值夠大、且用戶與物品數量都已成長到「人工編輯排不過來」的規模,推薦系統才會帶來實質回報。小規模平台靠人工精選往往更有效。
三種資訊取得方式#
| 方式 | 特點 | 代表產品 |
|---|---|---|
| 搜尋 | 用戶主動,目標明確 | Google、Bing |
| 推薦 | 系統主動,發現興趣 | 今日頭條、抖音 |
| 廣告 | 為資訊找人,商業目標 | Facebook Ads |
三者都在解決資訊過載問題,技術棧高度重疊(特徵工程、排序模型、A/B 測試),但目標和約束不同。
推薦系統的核心流程#
用戶請求 → 召回 → 粗排 → 精排 → 重排 → 展示為什麼要分這麼多層? 因為候選集規模相差三到四個數量級。直接對百萬物品跑深度模型會撐爆延遲,所以用「便宜的方法快速縮小範圍 ➡️ 昂貴的方法精細排序」這種漏斗結構。
| 層次 | 目標 | 常用方法 | 規模變化 |
|---|---|---|---|
| 召回 | 高 recall,快速縮小候選 | 協同過濾、向量召回、多路召回 | 百萬 ➡️ 數千 |
| 粗排 | 用輕量模型再篩一輪 | LR、輕量 DNN | 數千 ➡️ 數百 |
| 精排 | 高 precision,預估 CTR/CVR | GBDT、深度模型(DIN、DeepFM) | 數百 ➡️ 數十 |
| 重排 | 滿足業務規則與多樣性 | MMR、規則打散、去重 | 數十 ➡️ 數十 |
召回是「不要漏」,排序是「排得準」,重排是「整體看起來合理」。三者目標不同,所以模型也不同。
召回的三類訊號#
「多路召回」不是隨便堆演算法,而是用互相獨立的訊號去覆蓋不同的物品,彼此補盲:
| 訊號類型 | 直覺 | 代表方法 | 解決什麼 |
|---|---|---|---|
| 行為訊號 | 「人」的相似 | 協同過濾、向量召回 | 興趣發現 |
| 內容訊號 | 「物」的相似 | TF-IDF、餘弦相似度 | 新物品冷啟動 |
| 圖訊號 | 「結構」的權威 | PageRank、熱度傳播 | 高品質、趨勢 |
- 內容訊號:對標題、標籤、描述算 TF-IDF(詞頻 × 逆文件頻率,凸顯有區辨力的詞),再用餘弦相似度(兩向量夾角的 cos 值,越接近 1 越像)找相似物品。新物品還沒有任何互動時,內容訊號是唯一能立刻用的召回路。
- 圖訊號:把「用戶 ➡️ 物品」互動看成一張圖,重要性會沿著連結傳播(被越多高品質節點指到的物品越重要),這正是 PageRank 的核心思想,可用來召回「正在紅」「被權威背書」的物品。
兩大推薦範式#
幾乎所有召回與排序方法,骨子裡都落在兩種範式之一,兩者的強弱剛好互補:
| 範式 | 依據 | 強項 | 弱點 |
|---|---|---|---|
| 協同過濾(Collaborative) | 用戶與物品的互動行為 | 跨品類發現新興趣 | 冷啟動差、無法處理新物品 |
| 內容式(Content-based) | 物品本身的特徵與元資料 | 新物品立刻可推 | 容易把用戶困在已知興趣 |
實務上幾乎都是混合:用協同過濾在召回層大量發現(覆蓋廣),用內容特徵在排序層精細化(處理新物品、補上下文)。後面章節的 CF(第 3 章)、矩陣分解(第 4 章)屬協同範式,用戶建模(第 2 章)的內容特徵屬內容範式。
從業務目標到 ML 目標#
推薦不是「把模型練準」就好,而是一條翻譯鏈:先把模糊的業務目標翻成可優化的 ML 目標,再翻成具體的損失函數。
業務目標(提升留存)→ ML 目標(最大化什麼?)→ 損失函數(優化什麼信號)「最大化什麼」這一步決定了系統的行為,且代價昂貴:
- 最大化 CTR ➡️ 容易養出標題黨
- 最大化 觀看時長 ➡️ 偏向長內容、可能犧牲輕量內容
- 最大化 明確定義的相關性(例如「點擊且看完 50% 或按讚」)➡️ 需要先把「相關」講清楚
所以第一件事是把目標信號定義成可量測的事件,再讓模型去學它。定義錯了,模型練得再準也是錯方向。
推薦系統的常見問題#
1. 冷啟動#
新用戶或新物品缺乏歷史資料,難以個人化。
| 類型 | 解決方案 |
|---|---|
| 用戶冷啟動 | 利用人口統計學特徵、引導用戶選擇興趣標籤 |
| 物品冷啟動 | 基於內容的推薦、利用物品元資料 |
2. 探索與利用(Exploration vs Exploitation)#
只推薦用戶已知喜歡的內容會導致「資訊繭房」,需要平衡已知興趣(利用)和發現新興趣(探索)。
推薦策略 = α × 利用(已知興趣)+ (1-α) × 探索(潛在興趣)詳細演算法見 第 5 章 Bandit。
3. 推薦解釋性#
用戶需要知道「為什麼推薦這個給我」,增強信任感與接受度(例如「因為你看過 X」「你關注的人也按讚」)。
推薦系統的思維模式#
不確定性思維#
推薦系統處理的是機率問題:
- 推薦結果不可能 100% 準確
- 同樣的輸入可能產生不同的輸出(受時間、context、隨機探索影響)
- 一切假設都要靠資料驗證
資料驅動#
核心原則:不要相信直覺,要相信資料。
- 用戶說喜歡什麼不重要,用戶做了什麼才重要
- A/B 測試是驗證改進效果的黃金準則
系統工程思維#
推薦系統不只是演算法,是一條從資料到變現的完整管線:
推薦系統 = 資料採集 + 特徵工程 + 模型訓練 + 線上服務 + 效果評估任何一環的瓶頸都會卡住整體效果。
評估指標#
線下指標(離線評估模型)#
| 指標 | 衡量 |
|---|---|
| AUC | 排序能力 |
| Logloss | 預估校準 |
| Recall@K | 召回層覆蓋率 |
| NDCG@K | 排序質量(考慮位置) |
指標要對齊階段,否則會選錯模型。 召回層的目標是「不要漏」,用 Recall@K 評估(漏掉相關物品的代價最高);排序層的目標是「排得準」,用 NDCG@K 評估(位置越前、權重越高)。拿 AUC 去評召回、或拿 Recall 去評排序,離線分數會誤導線上決策。
線上指標(A/B 測試衡量真實效果)#
| 指標 | 衡量 |
|---|---|
| CTR | 點擊率 |
| CVR | 轉換率(購買、訂閱) |
| 人均停留時長 | 用戶投入度 |
| 留存率 | 是否會回來 |
| GMV / Revenue | 商業價值 |
線下指標漲不代表線上指標漲。最終決策永遠看 A/B 測試。
推薦系統的產品形式#
| 形式 | 說明 | 範例 |
|---|---|---|
| 猜你喜歡 | 首頁個人化推薦 | Amazon 首頁 |
| 相關推薦 | 物品詳情頁的「看了又看」「買了又買」 | YouTube 影片右側列表 |
| 資訊流(Feed) | 社交動態流、資訊流、短影片流 | Facebook、抖音 |
| 排行榜 | 熱門、新品、編輯精選 | App Store 排行榜 |
推薦系統的商業價值#
推薦系統是注意力的存儲與分配機制:
- 在資訊過載的時代,用戶的注意力是稀缺資源
- 推薦系統用「投其所好」延長用戶停留
- 再透過廣告、訂閱、電商佣金變現
對平台而言,推薦系統的商業價值來自三件事:提升留存、提升活躍、提升變現效率。後續所有技術選型都應該對應到這三件事其中之一。
總結#
| 要點 | 說明 |
|---|---|
| 本質 | 在用戶和物品之間建立連接 |
| 核心流程 | 召回 ➡️ 粗排 ➡️ 精排 ➡️ 重排(漏斗結構) |
| 常見問題 | 冷啟動、探索利用、解釋性 |
| 思維模式 | 不確定性、資料驅動、系統工程 |
| 評估 | 線下看 AUC,線上看 CTR/留存/GMV,以 A/B 為準 |
| 商業價值 | 留存、活躍、變現效率 |
下一章:用戶建模