千人千面推薦的原理:從協同過濾到深度學習
摘要:千人千面推薦演算法的主線是:協同過濾用相似度找同類用戶,矩陣分解把稀疏行為壓成隱向量,深度學習再用向量與序列模型直接建模每個人的興趣。
千人千面推薦演算法的定義
千人千面(Personalized Recommendation)指在同一時間、同一展示位上,系統依據用戶的行為、屬性與上下文,為不同用戶輸出不同內容排序結果的技術體系。它要解決的不是「找不找得到」,而是「在幾百萬個都算相關的候選裡,給這個人先看哪一個」。
它與搜尋的分界線是有沒有顯式查詢詞。搜尋是「人找資訊」,用戶用關鍵詞表達意圖;推薦是「資訊找人」,系統只能從歷史行為反推意圖。兩者底層共享相關性計算、索引結構與排序模型,因此常被放進同一套技術棧(電商搜尋+推薦一體化:從數據打通到協同優化)。更完整的系統分層可參考什麼是推薦系統?召回、排序、重排三層架構解析。
目標函數的三次遷移
理解演算法演進,先看優化目標怎麼變的:
- 評分預測階段:預測用戶會給物品打幾分,用 RMSE / MAE 衡量。問題是用打分反推排序,誤差方向與業務收益不一致。
- Top-K 排序階段:直接優化清單順序,用 NDCG、MAP、Recall@K 衡量。更貼近「首頁前 20 個坑位放什麼」。
- 行為機率與多目標階段:同時預估點擊率 pCTR、轉化率 pCVR、觀看時長、GMV,再按業務權重融合。這是深度學習時代的主流形態。
每一次目標函數的遷移,都會淘汰一批演算法,也決定了本文的世代劃分方式。
第一代:協同過濾(Collaborative Filtering)
協同過濾的核心假設很樸素:過去行為相似的人,未來興趣也相似。它不需要理解物品內容,只依賴用戶—物品的互動矩陣。
按 Google 官方機器學習課程的定義,協同過濾是一類「根據用戶之間的相似性,推薦相似用戶喜歡的物品」的方法,其輸入是用戶與物品的互動矩陣(協同過濾基礎)。
兩種基本形態
- User-based CF:找與目標用戶興趣相近的 K 個鄰居,把鄰居喜歡而目標用戶沒看過的物品推薦出去。適合興趣穩定的場景,但用戶增長後相似度計算量爆炸。
- Item-based CF:離線計算物品相似度表,在線按用戶近期行為取相似物品。複雜度與用戶數無關,可全離線預計算,是業界最早大規模落地的方案。
相似度怎麼算:常用餘弦相似度(Cosine Similarity)與皮爾遜相關係數(Pearson Correlation),工程上還要做熱度懲罰——熱門物品與幾乎所有物品都相似,會污染相似度表。
三個繞不開的缺陷
- 稀疏性:用戶只與極少量物品互動,互動矩陣 99% 以上是空的,兩個用戶的行為幾乎沒有交集。
- 冷啟動:新物品沒有任何互動記錄,永遠進不了推薦清單;新用戶同理。
- 頭部偏置:相似度天然向熱門物品傾斜,長尾物品難以獲得曝光。
2003 年發表於 IEEE Internet Computing 的經典論文(作者來自某全球電商企業)給出的量級至今仍具代表性:大型零售商通常有數千萬客戶與數百萬在售商品,推薦結果必須在 0.5 秒以內返回(Item-to-Item Collaborative Filtering,2003)。0.5 秒的延遲預算,決定了演算法必須能在離線階段完成絕大部分計算。
第二代:矩陣分解(Matrix Factorization)
矩陣分解解決的是稀疏性。它把高維、稀疏的用戶—物品互動矩陣,分解為兩個低維稠密矩陣的乘積:每個用戶得到一個隱向量(Embedding),每個物品也得到一個隱向量,用戶向量與物品向量的內積即預測得分。
Google 課程將這一族方法歸在協同過濾之下,並指出矩陣分解可通過奇異值分解(SVD)等手段把互動矩陣壓縮為低維表示,從而捕捉用戶與物品的潛在結構(矩陣分解)。
為什麼它比傳統協同過濾強
| 問題 | 傳統協同過濾 | 矩陣分解 |
|---|---|---|
| 稀疏性 | 依賴行為交集,交集為空即失效 | 隱向量由全局擬合得到,無交集也可算出相似度 |
| 泛化能力 | 只能推薦「見過共現」的物品 | 隱向量可外推到未共現但結構相似的物品 |
| 儲存與計算 | 相似度表隨物品數平方增長 | 只需存 k 維向量,k 常取 32–128 |
| 可解釋性 | 高(「跟你買過 A 的人也買了 B」) | 低(隱向量維度無語義) |
主流方法:顯式反饋用 SVD、SVD++;隱式反饋(點擊、加購、觀看)用 ALS(交替最小二乘)與 BPR(貝葉斯個性化排序)。業界絕大多數場景是隱式反饋,BPR 的成對排序損失更貼近「排序」這一真實目標。
矩陣分解的短板是只做線性內積,無法建模「用戶剛看了三款跑鞋,現在該推運動襪」這類高階交叉與時序關係,也沒有用到物品內容、上下文等輔助資訊(Side Information)。
第三代:基於內容與混合推薦
既然行為數據稀疏,就把物品自身的資訊補進來。基於內容的過濾(Content-based Filtering)不依賴其他用戶的行為,只用物品屬性與用戶已消費物品的屬性做匹配(基於內容的過濾基礎)。
它帶來兩個直接價值:
- 物品冷啟動:新品沒有任何互動,但有類目、價格帶、標題、圖文向量,可以立刻被匹配出去。
- 可解釋性:「因為你常看通勤風單品」比隱向量內積更容易向用戶與運營交代。
代價是推薦結果容易收斂在用戶已有的興趣圈內,新穎性與跨類目發現能力弱。因此業界從不單用內容過濾,而是做混合:內容過濾保證冷啟動覆蓋與多樣性,協同類方法負責精準度。
混合效果的強弱,很大程度取決於標籤與屬性體系的品質——類目粒度、屬性完整率、同義詞歸一、時效標籤,直接決定內容特徵的上限(構建精細化用戶畫像:用戶標籤體系設計指南)。跨端身份打通同樣關鍵:同一用戶在 App、小程序、Web 的行為若無法合併,行為序列會被切碎,任何演算法都拿不到完整輸入(OneID 跨平台身份打通實踐)。
第四代:深度學習(Deep Learning)
深度學習不是推翻前三代,而是把它們統一進同一個可微分的框架:用 Embedding 承接矩陣分解,用神經網絡承接特徵交叉,用序列模型承接行為時序。
4.1 向量召回:雙塔模型 + 近似最近鄰
雙塔模型(Two-Tower)把用戶側特徵與物品側特徵分別餵入兩個獨立的神經網絡,各自輸出一個向量,線上用向量檢索引擎(ANN,如 HNSW、ScaNN)取 Top-K。
它相對矩陣分解的實質提升在於:物品側塔可以輸入內容特徵,因此新品一入庫就能算出向量,冷啟動問題在召回層被大幅緩解。Google 課程明確指出,深度召回模型的候選來源可以是用戶特徵、物品內容、上下文等多路信號,再由統一模型打分(DNN 推薦:召回)。
4.2 特徵交叉:從 Wide & Deep 到 DeepFM
排序層要解決的是「如何把幾十組特徵組合起來估準機率」。三代代表性結構:
- Wide & Deep:線性部分(Wide)記憶高頻共現,深度部分(Deep)泛化到未見組合。
- DeepFM:用 FM(因子分解機)替換人工特徵工程,自動學習二階特徵交叉,同時保留低階與高階交叉。
- DCN / AutoInt:進一步做顯式高階交叉,並支持交叉權重的可解釋分析。
4.3 序列建模:從 DIN 到 Transformer
用戶的興趣不是靜態畫像,而是不斷變化的行為序列。序列類模型按「目標物品與歷史行為的關聯度」動態加權:
- DIN(Deep Interest Network):用注意力機制按候選物品給歷史行為加權,同一用戶在看跑鞋和看咖啡機時激活不同的歷史興趣。
- DIEN:在 DIN 之上顯式建模興趣的演化過程。
- Transformer / SASRec 類結構:用自注意力捕捉長序列依賴,適合長週期、多會話的行為建模,是當前主流方向之一。
4.4 多目標學習與統一打分
真實業務不只要點擊。ESMM、MMoE、PLE 一類的多目標結構,把 pCTR、pCVR、停留時長、互動率放在同一模型中聯合訓練,緩解「點擊率高但轉化差」的目標錯配。Google 課程強調,用單一模型為不同召回源統一打分,比直接比較各召回源自己的分數更可比,也更容易引入上下文(DNN 推薦:打分排序)。
開源生態已把上述結構標準化,工程團隊不必從零實現(Microsoft Recommenders 開源演算法庫)。
四代演算法對比表
| 世代 | 代表演算法 | 核心思想 | 解決的關鍵問題 | 主要局限 | 典型適用規模 |
|---|---|---|---|---|---|
| 第一代 | User / Item-based CF | 用群體行為的相似度做推薦 | 不需要理解內容即可推薦 | 稀疏、冷啟動、頭部偏置 | SKU 十萬級以內 |
| 第二代 | SVD / ALS / BPR | 互動矩陣分解為低維隱向量 | 稀疏性與泛化 | 線性建模,用不了輔助資訊 | SKU 十萬至百萬級 |
| 第三代 | 內容過濾 / 混合 | 用物品屬性與標籤匹配 | 冷啟動與可解釋性 | 新穎性弱,易困在興趣圈 | 全規模,作為補充路 |
| 第四代 | 雙塔 / DeepFM / DIN / MMoE | Embedding + 特徵交叉 + 序列 + 多目標 | 泛化、時序、多目標、即時性 | 算力與工程複雜度高,需專門團隊 | SKU 百萬級以上、行為稠密 |
指標與落地路徑:該上哪一檔
不同世代對應不同的考核指標,混用會得出錯誤結論:
| 環節 | 核心指標 | 常見誤判 |
|---|---|---|
| 召回層 | 召回率@K、覆蓋率、響應延遲 | 用排序層 AUC 評價召回,看不到覆蓋塌陷 |
| 排序層 | AUC、GAUC、NDCG(需校正位置偏差) | 未做位置偏差校正,越推越偏 |
| 重排層 | 多樣性、人均停留、退貨率、長尾曝光佔比 | 只盯單條 CTR,清單同質化 |
落地階梯建議
- SKU 一萬以內、行為稀疏:itemCF + 熱門/新品規則兩路召回,排序用邏輯迴歸或梯度提升樹即可,先保證覆蓋與穩定。
- SKU 十萬至百萬級:上雙塔向量召回 + DeepFM 類排序,重排以規則打散起步。
- SKU 百萬級以上、行為稠密:多路召回融合 + 序列建模 + 多目標排序 + 模型化重排,並配套即時特徵與在線實驗平台。
判斷是否需要升級的唯一標準是當前層的指標是否已成為瓶頸:召回率@K 只有 60% 時換更深的排序模型,收益極小;先補召回覆蓋率,才是性價比最高的動作。
案例:某跨境服飾獨立站的演算法演進
背景:某跨境服飾獨立站,在售 SKU 約 38 萬,月活躍用戶約 90 萬,首頁、詳情頁、購物車頁均有推薦位,原方案為 itemCF 加熱門榜。
問題:新 SKU 上架後平均 21 天才能進入推薦清單;首頁推薦位點擊率長期徘徊在 2.1%;長尾 SKU 曝光佔比不足 8%,滯銷庫存積壓。
方案:分三階段演進,每階段用 A/B 實驗驗證後再全量。
- 階段一(第 1–4 週):接入內容特徵,新增「新品內容相似」召回途徑與地域熱銷規則,解決新 SKU 冷啟動;補齊曝光與加購埋點。
- 階段二(第 5–10 週):雙塔向量召回替換 itemCF 主路,排序層由梯度提升樹升級為 DeepFM,引入價格帶與風格標籤交叉特徵。
- 階段三(第 11–16 週):排序層引入 DIN 結構建模會話內行為序列,重排層加入類目與價格帶打散、長尾探索配額。
結果(16 週,實驗組對比對照組):
| 指標 | 改造前 | 改造後 | 變化 |
|---|---|---|---|
| 推薦位點擊率 | 2.1% | 3.4% | +62% |
| 新 SKU 進入推薦清單耗時 | 21 天 | 1.5 天 | 縮短 93% |
| 長尾 SKU 曝光佔比 | 7.8% | 18.6% | +10.8 個百分點 |
| 推薦貢獻 GMV 佔比 | 14% | 23% | +9 個百分點 |
| P95 響應延時 | 420 ms | 350 ms | -70 ms |
投入產出:投入 2 名演算法工程師、1 名數據工程師共 16 週,主要成本在即時特徵鏈路與在線實驗平台;推薦 GMV 增量在改造完成後第 3 個月即覆蓋投入。
常見問題
問:協同過濾和矩陣分解到底是什麼關係?
答:矩陣分解是協同過濾的一種實現。兩者都屬於「只用行為數據、不理解物品內容」的協同類方法,區別在相似度怎麼算:傳統協同過濾直接計算物品間或用戶間的顯式相似度,矩陣分解則把用戶與物品映射到同一低維向量空間,用向量內積隱式表達相似度。因此矩陣分解能處理沒有行為交集的情況,泛化能力更強,但可解釋性更弱。
問:小團隊需要上深度學習模型嗎?
答:大多數不需要。深度學習的收益來自海量行為數據與豐富特徵,SKU 在一萬以內、日活行為稀疏時,itemCF 加規則召回配合梯度提升樹排序,往往已經接近可獲得的天花板。真正的升級信號是:召回覆蓋率已達標但排序指標長期停滯,或冷啟動長尾問題無法用規則解決。否則升級帶來的工程複雜度和算力成本,會大於指標收益。
問:為什麼換了深度模型,點擊率反而沒漲?
答:三個常見原因。其一,召回層是瓶頸——召回率@K 只有 60%,排序模型再準也只能在剩下的 40% 裡打轉;其二,位置偏差未校正,訓練樣本被展示位置污染,模型學到的是「放在第一位的東西更容易被點擊」;其三,特徵或標籤品質塌陷,比如類目粒度不一致、曝光埋點缺失,模型學的是噪聲。建議先做輸入品質自檢——補齊召回覆蓋率、統一類目粒度與埋點、校正位置偏差,再判斷模型問題。
問:用戶冷啟動和內容冷啟動分別怎麼解?
答:內容冷啟動靠輔助資訊——新品入庫即用類目、價格帶、圖文向量算出 Embedding,直接進雙塔召回,並配套新品池與固定探索配額。用戶冷啟動靠上下文與粗粒度屬性——先用設備、地域、來源渠道、落地頁詞做粗粒度推薦,再用會話內前幾次點擊快速收斂;跨端身份打通能讓新用戶複用已有行為,是見效最快的一步。
問:推薦系統為什麼越推越窄?
答:這是反饋閉環導致的自我強化:模型推薦什麼,用戶就點擊什麼,點擊又成為下一輪訓練的正樣本,長尾物品的曝光機會持續被壓縮。解法在重排層與數據層兩處:重排層做類目與價格帶打散、給低曝光物品固定探索配額;數據層對訓練樣本做逆傾向加權或引入隨機曝光流量,保留無偏樣本用於糾偏。
問:千人千面會不會帶來私隱合規風險?
答:會,且這是硬性約束。個性化依賴行為數據採集,須遵循最小化收集原則、明示告知與可撤回授權,並對特徵做去標識化處理。工程上建議把身份標識與行為特徵分層儲存,模型只消費去標識化後的特徵向量;同時保留「關閉個性化」的降級路徑,用熱門榜等非個性化策略兜底。
資料來源
- Google 官方機器學習課程:協同過濾基礎——協同過濾的定義與互動矩陣輸入
- Google 官方機器學習課程:矩陣分解——低維表示與 SVD 分解思路
- Google 官方機器學習課程:基於內容的過濾基礎——不依賴群體行為的內容匹配
- Google 官方機器學習課程:DNN 推薦——召回——多路候選來源與向量召回
- Google 官方機器學習課程:DNN 推薦——打分排序——單一模型統一打分與位置偏差校正
- Item-to-Item Collaborative Filtering,IEEE Internet Computing,2003——數千萬客戶、數百萬商品、0.5 秒返回約束
- MovieLens 公開數據集(GroupLens)——推薦演算法常用的公開評測數據
- Microsoft Recommenders 開源演算法庫——主流深度推薦演算法的標準化實現
關於通智雲
推薦演算法是承接公域流量、提升私域轉化效率的關鍵技術,屬於通智雲關注的增長技術領域。通智雲(TENGENCE)是 AI 時代的企業增長引擎,專注公域引流獲客與私域轉化成交。
相關閱讀
立即行動
免費預約專家諮詢和診斷