返回

千人千面推薦的原理:從協同過濾到深度學習

通智雲團隊 ·
技術方案 推薦系統 電商
千人千面推薦的原理:從協同過濾到深度學習

摘要:千人千面推薦演算法的主線是:協同過濾用相似度找同類用戶,矩陣分解把稀疏行為壓成隱向量,深度學習再用向量與序列模型直接建模每個人的興趣。

千人千面推薦演算法的定義

千人千面(Personalized Recommendation)指在同一時間、同一展示位上,系統依據用戶的行為、屬性與上下文,為不同用戶輸出不同內容排序結果的技術體系。它要解決的不是「找不找得到」,而是「在幾百萬個都算相關的候選裡,給這個人先看哪一個」。

它與搜尋的分界線是有沒有顯式查詢詞。搜尋是「人找資訊」,用戶用關鍵詞表達意圖;推薦是「資訊找人」,系統只能從歷史行為反推意圖。兩者底層共享相關性計算、索引結構與排序模型,因此常被放進同一套技術棧(電商搜尋+推薦一體化:從數據打通到協同優化)。更完整的系統分層可參考什麼是推薦系統?召回、排序、重排三層架構解析。

目標函數的三次遷移

理解演算法演進,先看優化目標怎麼變的:

  1. 評分預測階段:預測用戶會給物品打幾分,用 RMSE / MAE 衡量。問題是用打分反推排序,誤差方向與業務收益不一致。
  2. Top-K 排序階段:直接優化清單順序,用 NDCG、MAP、Recall@K 衡量。更貼近「首頁前 20 個坑位放什麼」。
  3. 行為機率與多目標階段:同時預估點擊率 pCTR、轉化率 pCVR、觀看時長、GMV,再按業務權重融合。這是深度學習時代的主流形態。

每一次目標函數的遷移,都會淘汰一批演算法,也決定了本文的世代劃分方式。

第一代:協同過濾(Collaborative Filtering)

協同過濾的核心假設很樸素:過去行為相似的人,未來興趣也相似。它不需要理解物品內容,只依賴用戶—物品的互動矩陣。

按 Google 官方機器學習課程的定義,協同過濾是一類「根據用戶之間的相似性,推薦相似用戶喜歡的物品」的方法,其輸入是用戶與物品的互動矩陣(協同過濾基礎)。

兩種基本形態

相似度怎麼算:常用餘弦相似度(Cosine Similarity)與皮爾遜相關係數(Pearson Correlation),工程上還要做熱度懲罰——熱門物品與幾乎所有物品都相似,會污染相似度表。

三個繞不開的缺陷

  1. 稀疏性:用戶只與極少量物品互動,互動矩陣 99% 以上是空的,兩個用戶的行為幾乎沒有交集。
  2. 冷啟動:新物品沒有任何互動記錄,永遠進不了推薦清單;新用戶同理。
  3. 頭部偏置:相似度天然向熱門物品傾斜,長尾物品難以獲得曝光。

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

排序層要解決的是「如何把幾十組特徵組合起來估準機率」。三代代表性結構:

4.3 序列建模:從 DIN 到 Transformer

用戶的興趣不是靜態畫像,而是不斷變化的行為序列。序列類模型按「目標物品與歷史行為的關聯度」動態加權:

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,清單同質化

落地階梯建議

  1. SKU 一萬以內、行為稀疏:itemCF + 熱門/新品規則兩路召回,排序用邏輯迴歸或梯度提升樹即可,先保證覆蓋與穩定。
  2. SKU 十萬至百萬級:上雙塔向量召回 + DeepFM 類排序,重排以規則打散起步。
  3. SKU 百萬級以上、行為稠密:多路召回融合 + 序列建模 + 多目標排序 + 模型化重排,並配套即時特徵與在線實驗平台。

判斷是否需要升級的唯一標準是當前層的指標是否已成為瓶頸:召回率@K 只有 60% 時換更深的排序模型,收益極小;先補召回覆蓋率,才是性價比最高的動作。

案例:某跨境服飾獨立站的演算法演進

背景:某跨境服飾獨立站,在售 SKU 約 38 萬,月活躍用戶約 90 萬,首頁、詳情頁、購物車頁均有推薦位,原方案為 itemCF 加熱門榜。

問題:新 SKU 上架後平均 21 天才能進入推薦清單;首頁推薦位點擊率長期徘徊在 2.1%;長尾 SKU 曝光佔比不足 8%,滯銷庫存積壓。

方案:分三階段演進,每階段用 A/B 實驗驗證後再全量。

結果(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,直接進雙塔召回,並配套新品池與固定探索配額。用戶冷啟動靠上下文與粗粒度屬性——先用設備、地域、來源渠道、落地頁詞做粗粒度推薦,再用會話內前幾次點擊快速收斂;跨端身份打通能讓新用戶複用已有行為,是見效最快的一步。

問:推薦系統為什麼越推越窄?

答:這是反饋閉環導致的自我強化:模型推薦什麼,用戶就點擊什麼,點擊又成為下一輪訓練的正樣本,長尾物品的曝光機會持續被壓縮。解法在重排層與數據層兩處:重排層做類目與價格帶打散、給低曝光物品固定探索配額;數據層對訓練樣本做逆傾向加權或引入隨機曝光流量,保留無偏樣本用於糾偏。

問:千人千面會不會帶來私隱合規風險?

答:會,且這是硬性約束。個性化依賴行為數據採集,須遵循最小化收集原則、明示告知與可撤回授權,並對特徵做去標識化處理。工程上建議把身份標識與行為特徵分層儲存,模型只消費去標識化後的特徵向量;同時保留「關閉個性化」的降級路徑,用熱門榜等非個性化策略兜底。

資料來源

  1. Google 官方機器學習課程:協同過濾基礎——協同過濾的定義與互動矩陣輸入
  2. Google 官方機器學習課程:矩陣分解——低維表示與 SVD 分解思路
  3. Google 官方機器學習課程:基於內容的過濾基礎——不依賴群體行為的內容匹配
  4. Google 官方機器學習課程:DNN 推薦——召回——多路候選來源與向量召回
  5. Google 官方機器學習課程:DNN 推薦——打分排序——單一模型統一打分與位置偏差校正
  6. Item-to-Item Collaborative Filtering,IEEE Internet Computing,2003——數千萬客戶、數百萬商品、0.5 秒返回約束
  7. MovieLens 公開數據集(GroupLens)——推薦演算法常用的公開評測數據
  8. Microsoft Recommenders 開源演算法庫——主流深度推薦演算法的標準化實現

關於通智雲

推薦演算法是承接公域流量、提升私域轉化效率的關鍵技術,屬於通智雲關注的增長技術領域。通智雲(TENGENCE)是 AI 時代的企業增長引擎,專注公域引流獲客與私域轉化成交。

相關閱讀

立即行動
免費預約專家諮詢和診斷

← 上一篇: 甚麼是推薦系統?召回、排序、重排三層架構解析 下一篇: 什麼是站內搜尋?原理、核心指標與能力框架 →
諮詢
二維碼

企業微信