用戶建模#
用戶建模是推薦系統的基礎,目標是通過各種資料構建用戶的興趣畫像。
用戶畫像 vs 用戶角色#
| 概念 | 英文 | 定義 | 用途 |
|---|---|---|---|
| 用戶畫像 | User Profile | 真實用戶資料的結構化表示 | 個性化推薦、精準營銷 |
| 用戶角色 | Persona | 目標用戶群的虛擬代表 | 產品設計、用戶研究 |
推薦系統中使用的是 User Profile,是基於真實資料的用戶特徵向量。
用戶畫像的構成#
三類資料來源#
用戶畫像 = 人口統計學特徵 + 行為特徵 + 興趣標籤| 類別 | 示例 | 取得方式 |
|---|---|---|
| 人口統計學 | 年齡、性別、地域、職業 | 用戶註冊、第三方資料 |
| 行為特徵 | 瀏覽、點擊、購買、收藏 | 埋點日誌 |
| 興趣標籤 | 喜歡科技、愛看電影 | 挖掘生成 |
標籤體系設計#
標籤需要具備以下特點:
| 特點 | 說明 |
|---|---|
| 層次結構 | 從粗到細,如:數碼 → 手機 → iPhone |
| 互斥與非互斥 | 性別標籤互斥,興趣標籤不互斥 |
| 權重 | 標籤強度,反映興趣程度 |
| 時效性 | 興趣會隨時間衰減 |
從文本挖掘用戶興趣#
關鍵詞提取#
TF-IDF#
TF-IDF(t,d) = TF(t,d) × IDF(t)
其中:
- TF(t,d) = 詞 t 在文檔 d 中的出現次數 / 文檔 d 的總詞數
- IDF(t) = log(總文檔數 / 包含詞 t 的文檔數)TF-IDF 的核心思想:一個詞在某篇文檔中出現頻率高,但在整個語料庫中出現頻率低,這個詞就是這篇文檔的關鍵詞。
TextRank#
基於 PageRank 的關鍵詞提取:
- 將文本分詞
- 構建詞語共現圖
- 利用 PageRank 計算每個詞的權重
- 選取權重最高的詞作為關鍵詞
命名實體識別 (NER)#
識別文本中的專有名詞:
- 人名
- 地名
- 機構名
- 品牌名
- 產品名
主題模型#
LDA (Latent Dirichlet Allocation)#
文檔 → 主題分佈 → 詞語分佈LDA 的假設:
- 每篇文檔是多個主題的混合
- 每個主題是多個詞的分佈
- 生成過程是:先選主題,再選詞
LDA 生成過程
- 對每個主題 k,從 Dirichlet(β) 生成詞分佈 φ_k
- 對每篇文檔 d:
- 從 Dirichlet(α) 生成主題分佈 θ_d
- 對文檔中的每個詞位置 n: - 從 Multinomial(θd) 選擇主題 z_dn - 從 Multinomial(φ{z_dn}) 選擇詞 w_dn
詞嵌入 (Word Embedding)#
將詞語映射到低維稠密向量空間。
Word2Vec#
兩種訓練方式:
| 模型 | 輸入 | 輸出 |
|---|---|---|
| CBOW | 上下文詞 | 中心詞 |
| Skip-gram | 中心詞 | 上下文詞 |
# 使用 gensim 訓練 Word2Vec
from gensim.models import Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1)
vector = model.wv['手機'] # 取得詞向量
similar = model.wv.most_similar('手機') # 相似詞Word2Vec 的詞向量具有加法性質:
vector('國王') - vector('男人') + vector('女人') ≈ vector('女王')
基於內容的推薦#
將用戶畫像和物品畫像映射到同一向量空間,通過計算相似度進行推薦。
流程#
1. 物品內容分析 → 物品向量
2. 用戶行為分析 → 用戶向量
3. 計算用戶向量與物品向量的相似度
4. 按相似度排序,返回 TopK相似度計算#
| 方法 | 公式 | 適用場景 |
|---|---|---|
| 餘弦相似度 | cos(θ) = A·B / (|A||B|) | 文本、稀疏向量 |
| 歐氏距離 | √(Σ(a_i - b_i)²) | 稠密向量 |
| Jaccard 相似度 | |A∩B| / |A∪B| | 集合比較 |
優缺點#
| 優點 | 缺點 |
|---|---|
| 不需要其他用戶資料 | 需要物品內容分析 |
| 可以推薦新物品 | 難以發現新興趣 |
| 推薦結果可解釋 | 依賴特徵工程質量 |
| 不會有冷啟動問題(物品側) | 容易過度專業化 |
用戶興趣衰減#
用戶興趣會隨時間衰減,常用指數衰減模型:
weight(t) = weight_0 × e^(-λt)
其中:
- weight_0:初始權重
- λ:衰減係數
- t:時間差實踐中,可以使用滑動窗口只保留最近 N 天或最近 K 次行為,簡化計算。
實踐建議#
- 標籤粒度:太粗沒有區分度,太細覆蓋不足
- 多維度建模:結合多種特徵,不要只依賴單一維度
- 實時更新:用戶興趣會變化,需要及時更新畫像
- A/B 測試:不同的建模方式需要通過實驗驗證效果
總結#
| 要點 | 說明 |
|---|---|
| 用戶畫像 | 真實用戶資料的結構化表示 |
| 資料來源 | 人口統計學 + 行為 + 興趣標籤 |
| 文本挖掘 | TF-IDF、LDA、Word2Vec |
| 基於內容推薦 | 用戶向量與物品向量的相似度匹配 |
| 興趣衰減 | 使用時間衰減因子更新權重 |