推荐系统设计与实现

从核心问题、算法原理、系统架构到工程实践,全面梳理推荐系统知识体系

协同过滤内容推荐深度学习 冷启动召回/排序评估指标

01 · 推荐系统概述

什么是推荐系统,为什么需要它,核心目标是什么

📌 什么是推荐系统

推荐系统(Recommendation System)是一种信息过滤系统,通过分析用户的历史行为、兴趣偏好和上下文环境, 从海量物品中自动筛选出用户最可能感兴趣的内容,并以个性化方式呈现。

本质是一个匹配问题:将合适的物品(Item)在合适的场景(Context)下,推荐给合适的用户(User)。

🎯 核心目标

  • 提高用户满意度
  • 提升点击率 / 转化率
  • 增加用户留存时长
  • 促进平台内容分发效率

🏢 典型应用场景

  • 电商:商品推荐(淘宝、京东)
  • 视频:内容推荐(YouTube、B站)
  • 社交:好友 / 内容推荐(微信、微博)
  • 音乐:歌曲推荐(网易云、Spotify)
  • 新闻:资讯推荐(今日头条)

🧩 核心要素

  • User:用户特征、行为历史
  • Item:物品特征、元数据
  • Interaction:用户-物品交互数据
  • Context:时间、地点、设备、场景

📊 推荐系统的基本工作流程

1

数据收集

收集用户行为数据(点击、购买、评分、停留时长等)和物品元数据(类别、标签、描述等)

2

召回(Retrieval)

从海量物品中快速筛选出数百到数千个候选集,要求低延迟、高召回率

3

粗排(Coarse Ranking)

对召回结果进行初步排序,进一步缩小候选集至几十到几百个

4

精排(Fine Ranking)

使用复杂模型对候选集进行精准排序,考虑多目标优化(点击率、时长、多样性等)

5

重排与展示(Re-ranking)

考虑多样性、新鲜度、业务规则,最终决定推荐结果的展示顺序

02 · 核心问题与挑战

推荐系统在实际落地中面临的核心问题,以及对应的解决思路

❄️ 问题一:冷启动(Cold Start)

当新用户或新物品加入系统时,缺乏足够的历史交互数据,导致无法做出准确推荐。

用户冷启动 新用户

解决方案

  • 引导式偏好收集(注册时选择兴趣标签)
  • 利用人口统计学特征(年龄、性别、地域)
  • 基于内容的推荐(利用用户填写的资料)
  • 热门物品推荐(利用全局热度兜底)
  • 跨域迁移(利用用户在其它平台的行为)

物品冷启动 新物品

解决方案

  • 基于内容的推荐(利用物品自身特征)
  • 将新物品推荐给兴趣多样的探索型用户
  • 利用物品元数据(类别、标签)做关联推荐
  • 主动学习(设计策略激励用户与新物品交互)

🕳️ 问题二:数据稀疏(Data Sparsity)

用户-物品交互矩阵中大部分位置是空的(例如电商场景中,用户交互过的商品不到总量的 1%), 导致基于协同过滤的方法效果下降。

解决思路

  • 矩阵填充:使用矩阵分解(Matrix Factorization)学习用户/物品隐向量
  • 引入 side information:融合用户画像、物品属性、社交关系等辅助信息
  • 迁移学习:将其他领域学到的知识迁移到目标领域
  • 深度学习:使用 NCF、DeepFM 等模型自动学习高阶特征交叉

⚡ 问题三:实时性(Real-time Recommendation)

用户兴趣随时间变化,推荐系统需要及时捕捉用户的最新行为并调整推荐结果。

方案思路优点缺点
在线学习 用户行为触发模型增量更新 实时捕捉兴趣变化 工程复杂度高,模型稳定性挑战
流式特征 使用 Flink/Spark Streaming 实时更新特征 兼顾实时性与稳定性 需要流式计算基础设施
多时间窗口 融合短期/中期/长期用户兴趣 平衡实时性与历史偏好 权重设计需要大量实验
Session-based 基于当前会话行为做推荐(RNN/Transformer) 无需用户历史,适合匿名场景 忽略长期偏好

🎨 问题四:多样性与马太效应(Diversity & Matthew Effect)

推荐系统容易陷入"越推越窄"的困境:热门物品被反复推荐,长尾物品得不到曝光, 用户视野越来越窄,体验单一。

表现

  • 推荐结果高度相似,缺乏惊喜感
  • 头部物品流量高度集中
  • 新物品/小众物品难以获得曝光
  • 用户兴趣被"固化"

解决方案

  • 重排策略:MMR(最大边缘相关)、DPP(行列式点过程)
  • 探索利用:ε-greedy、Thompson Sampling、UCB
  • 多目标优化:同时优化点击率与多样性
  • 流量扶持:为新物品分配固定曝光比例

💡 问题五:可解释性(Explainability)

深度学习推荐模型往往是"黑盒",用户不知道为什么收到这条推荐,降低了信任感。

解决思路

  • 推荐理由生成:根据物品特征自动生成文字解释("因为你看过XX")
  • 注意力可视化:展示模型中哪些特征对推荐结果贡献最大
  • 规则可解释模型:在精排后叠加可解释的_rule-based 重排层
  • 因果推荐:引入因果推断,区分相关性与因果性

🛡️ 问题六:鲁棒性与数据偏差(Robustness & Bias)

偏差类型描述对策
选择偏差 用户只能看到被推荐的物品,产生观测偏差 逆倾向评分(IPS)、因果图
位置偏差 用户更倾向于点击排名靠前的物品 位置消偏(Position Debiasing)
流行度偏差 热门物品被过度推荐 对流行度进行惩罚、多样性重排
对抗攻击 恶意用户通过刷量干扰推荐结果 异常检测、行为真实性验证

03 · 推荐算法全景

从经典方法到深度学习的完整算法体系,对比优劣势

协同过滤(Collaborative Filtering)

核心思想:利用"群体智慧",假设相似的用户会有相似的行为,相似的物品会被相似地对待。 不需要物品的内容特征,只依赖用户-物品交互数据。

算法原理优点缺点
User-based CF 找到与目标用户兴趣相似的邻居,推荐邻居喜欢的物品 直观,易于理解 用户数量大时计算开销高,稀疏场景下效果差
Item-based CF 计算物品之间的相似度,推荐与用户历史喜欢的物品相似的物品 物品数量相对稳定,预计算相似度可行 无法推荐全新物品(物品冷启动)
矩阵分解(MF) 将用户-物品矩阵分解为用户隐向量和物品隐向量,通过内积预测评分 缓解稀疏性问题,效果好 无法利用 side information,冷启动问题依然存在
SVD / SVD++ 在矩阵分解基础上引入隐式反馈 进一步提升准确度 计算复杂度较高

矩阵分解示例代码(Python)

# 使用 Surprise 库实现矩阵分解推荐
from surprise import SVD, Dataset, accuracy
from surprise.model_selection import train_test_split

# 加载数据(格式:user_id, item_id, rating)
data = Dataset.load_builtin('ml-100k')
trainset, testset = train_test_split(data, test_size=0.25)

# 使用 SVD 矩阵分解
model = SVD(n_factors=100, n_epochs=20, lr_all=0.01, reg_all=0.02)
model.fit(trainset)

# 预测
predictions = model.test(testset)
accuracy.rmse(predictions)

# 为某个用户推荐 Top-K 物品
user_inner_id = trainset.to_inner_uid('196')
user_items = []
for iid in trainset.all_items():
    user_items.append((iid, model.predict('196', trainset.to_raw_iid(iid)).est))
top_k = sorted(user_items, key=lambda x: x[1], reverse=True)[:10]
print(top_k)

内容推荐(Content-based Filtering)

核心思想:利用物品本身的特征(如文本、标签、类别)和用户的历史偏好, 构建用户画像,推荐与用户过去喜欢的物品在内容上相似的物品。

特征工程

  • 文本特征:TF-IDF、Word2Vec、BERT Embedding
  • 类别特征:One-hot、Embedding
  • 数值特征:价格、发布时间(归一化)
  • 图像特征:CNN 提取视觉特征
  • 知识图谱:利用实体关系增强特征

算法选择

  • 余弦相似度:计算物品特征向量相似度
  • TF-IDF + 相似度:文本类物品经典方案
  • 分类模型:LR / NB 预测用户是否喜欢某物品
  • 深度学习:DSSM、YouTube DNN

TF-IDF 内容推荐示例

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 物品描述文本
items = [
    "iPhone 15 Pro 智能手机 苹果",
    "MacBook Pro 笔记本电脑 苹果",
    "华为 Mate 60 Pro 智能手机",
    "戴森 V15 吸尘器 家用电器",
]
labels = ["iPhone 15", "MacBook Pro", "Mate 60", "戴森 V15"]

# 构建 TF-IDF 向量
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(items)

# 用户历史喜欢的物品(用索引表示)
user_profile = tfidf_matrix[0]  # 用户喜欢 iPhone

# 计算与所有物品的相似度
similarities = cosine_similarity(user_profile, tfidf_matrix)
for i, score in enumerate(similarities[0]):
    if i != 0:
        print(f"{labels[i]}: {score:.4f}")

内容推荐优劣势

✅ 优点无冷启动问题(新物品有特征即可推荐);可解释性强;用户独立性好
❌ 缺点特征提取质量决定上限;容易陷入"信息茧房";无法发现用户潜在兴趣

深度学习推荐算法

深度学习通过神经网络自动学习高阶特征交叉,显著提升了推荐系统的准确度。 以下是业界主流深度学习推荐模型。

模型年份核心思想适用场景
Wide & Deep 2016(Google) Wide 部分记忆,Deep 部分泛化,联合训练 Google Play 推荐,兼顾记忆与泛化
DeepFM 2017 FM + DNN,自动学习低阶和高阶特征交叉 广告点击率预估(CTR)
YouTube DNN 2016(Google) 将推荐视为多分类问题,使用深度神经网络做召回和排序 大规模视频推荐
DIN(Deep Interest Network) 2018(阿里) 引入注意力机制,自适应计算用户兴趣表示 电商推荐(用户兴趣多样且动态)
DIEN(Deep Interest Evolution Network) 2019(阿里) 在 DIN 基础上建模用户兴趣的演化过程(GRU + AUGRU) 电商推荐,捕捉兴趣漂移
BERT4Rec 2019 使用 Transformer(双向自注意力)建模用户行为序列 序列推荐,捕捉长期依赖
Two-Tower(双塔) 业界主流 用户塔 + 物品塔,分别编码后内积计算分数,支持向量检索 大规模召回阶段
Transformer4Rec 2021 使用 Transformer 编码用户行为序列 序列推荐,支持长序列

双塔模型结构示意

用户特征
User Features
用户塔(DNN)
输出用户向量 u
⬇ 内积 / 余弦相似度计算
物品特征
Item Features
物品塔(DNN)
输出物品向量 v
预测分数 = u · v(内积)
线上服务时,物品向量可预计算并存入向量数据库(Faiss),实现毫秒级召回

Wide & Deep 示例代码(PyTorch)

import torch
import torch.nn as nn

class WideAndDeep(nn.Module):
    def __init__(self, num_features, hidden_units=[256, 128]):
        super().__init__()
        # Wide 部分:记忆低阶特征
        self.wide = nn.Linear(num_features, 1)

        # Deep 部分:泛化高阶特征交叉
        layers = []
        input_dim = num_features
        for h in hidden_units:
            layers.append(nn.Linear(input_dim, h))
            layers.append(nn.ReLU())
            layers.append(nn.BatchNorm1d(h))
            input_dim = h
        layers.append(nn.Linear(input_dim, 1))
        self.deep = nn.Sequential(*layers)

    def forward(self, x):
        wide_out = self.wide(x)
        deep_out = self.deep(x)
        return torch.sigmoid(wide_out + deep_out)

混合推荐(Hybrid Recommendation)

单一推荐算法往往存在局限性,混合推荐通过组合多种算法,取长补短,提升整体推荐质量。

混合策略方式示例
加权混合 多个推荐结果按权重加权融合 Score = 0.6 × CF_score + 0.4 × CB_score
切换混合 根据场景选择不同推荐策略 新用户用 CB,老用户用 CF
分层混合 不同算法负责不同推荐阶段 CF 做召回,CB 做重排
特征级混合 将不同算法的特征拼接后统一建模 DeepFM 同时利用 FM 和 DNN
瀑布型混合 逐层过滤,前一层输出作为后一层输入 CF 粗排 → CB 精排 → 规则重排

Bandit 算法(探索与利用)

多臂老虎机(Multi-Armed Bandit)问题核心是平衡探索(Exploration)利用(Exploitation),在推荐系统中用于解决冷启动和多样性问题。

算法核心思想优缺点
ε-Greedy 以 ε 概率随机探索,以 1-ε 概率利用当前最优 简单,但 ε 难以调优
UCB(上置信界) 选择置信上界最大的物品,自动平衡探索与利用 理论保证好,但需要估计置信区间
Thompson Sampling 基于贝叶斯后验采样,按概率分布选择物品 效果好,实现简单,工业界常用
LinUCB UCB 的上下文版本,引入上下文特征 适合个性化推荐场景

Thompson Sampling 示例代码

import numpy as np

class ThompsonSampling:
    def __init__(self, n_arms):
        # Beta 分布参数:成功次数 α,失败次数 β
        self.alpha = np.ones(n_arms)  # 初始 α=1(无偏先验)
        self.beta  = np.ones(n_arms)  # 初始 β=1

    def select_arm(self):
        # 从每个物品的 Beta 后验中采样
        theta = np.random.beta(self.alpha, self.beta)
        return np.argmax(theta)

    def update(self, chosen_arm, reward):
        # 根据反馈更新分布参数
        if reward == 1:  # 点击 / 正向反馈
            self.alpha[chosen_arm] += 1
        else:                  # 未点击 / 负向反馈
            self.beta[chosen_arm]  += 1

# 使用
ts = ThompsonSampling(n_arms=100)  # 100 个物品
for t in range(10000):
    arm = ts.select_arm()
    reward = get_user_feedback(arm)  # 模拟用户反馈
    ts.update(arm, reward)

04 · 推荐系统架构设计

工业级推荐系统的整体架构,从离线到在线的完整技术栈

🏗️ 工业级推荐系统总体架构

数据层 Data Layer
用户行为日志
Kafka / Pulsar
物品元数据
MySQL / HBase
用户画像
Feature Store
上下文数据
实时特征
离线计算层 Offline Computation
特征工程
Spark / Flink
模型训练
TensorFlow / PyTorch
物品向量预计算
Embedding → Faiss
在线服务层 Online Serving
召回服务
多路召回引擎
粗排服务
轻量排序模型
精排服务
深度学习模型
重排服务
多样性 / 业务规则
基础设施 Infrastructure
特征存储
Redis / Tair
向量检索
Faiss / Milvus
模型服务
TensorFlow Serving
AB 实验平台
实验分流 / 指标

📦 离线部分(Offline)

1

数据预处理

清洗日志、特征归一化、样本采样(负采样)

2

特征工程

统计特征、序列特征、交叉特征、Embedding 特征

3

模型训练

使用 GPU 集群分布式训练,定期全量/增量更新模型

4

向量预计算

将物品 Embedding 预计算并导入向量数据库,供召回使用

⚡ 在线部分(Online)

1

特征获取

从特征平台(Feature Store)实时获取用户和物品特征

2

召回

多路召回并发执行,各路结果合并去重(<100ms)

3

排序

粗排 → 精排级联,精排使用深度学习模型(<50ms)

4

重排 & 返回

多样性调整、业务规则过滤,最终返回推荐列表

🔄 实时特征工程架构

用户行为事件
点击/曝光/购买
消息队列
Kafka
流计算
Flink
特征存储
Redis / Tair
在线模型
实时特征

05 · 召回与排序流水线

推荐系统的核心流水线,从海量候选到最终推荐结果

🎯 召回层(Retrieval / Recall)

召回阶段需要从百万甚至亿级物品池中,快速筛选出数百到数千个候选物品。 核心要求:低延迟(<100ms)、高召回率。

多路召回策略

召回渠道方法说明
协同过滤召回 User-based / Item-based CF 找回与用户历史物品相似或相似用户喜欢的物品
向量召回(Embedding) 双塔模型 + 向量检索(Faiss) 工业界主流,用户/物品都用 Embedding 表示,ANN 检索
内容召回 基于标签/类别/关键词匹配 利用物品内容特征,解决冷启动问题
热门召回 按全局/分类热度排序 解决新用户冷启动,提供兜底推荐
序列召回 MIND、SASRec、BERT4Rec 建模用户行为序列,捕捉短期兴趣
知识图谱召回 图游走、路径推理 利用知识图谱中的实体关系做推理推荐
地理位置召回 基于 LBS 的邻近推荐 适用于本地生活、外卖、出行场景

多路召回结果融合策略

  • 并集:各路结果取并集,再统一排序(最常用)
  • 加权融合:为每路召回结果分配权重,按加权分数排序
  • 级联:前一根据你路结果作为后一路的输入(瀑布型)
  • ML 融合:使用学习排序(Learning to Rank)模型自动学习各路权重

📊 排序层(Ranking)

排序阶段对召回的候选集进行精准打分。精排模型通常使用深度学习, 考虑特征交叉、用户行为序列等复杂模式。

特征体系

  • 用户特征: demographic、行为统计、兴趣标签、Embedding
  • 物品特征:类别、品牌、价格、统计特征、Embedding
  • 交叉特征:用户×物品(历史点击率)、用户×类目
  • 上下文特征:时间、星期、节假日、设备、网络环境
  • 序列特征:用户最近点击的物品序列(用于 DIN/DIEN)

Learning to Rank 三大范式

  • Pointwise:将排序视为分类/回归问题,预测单个物品的得分
  • Pairwise:学习物品对之间的相对顺序(如 RankNet)
  • Listwise:直接优化整个列表的排序指标(如 LambdaMART)

精排模型特征处理示例(PyTorch)

import torch.nn as nn
import torch.nn.functional as F

class RankingModel(nn.Module):
    def __init__(self, num_users, num_items, embed_dim=64):
        super().__init__()
        # Embedding 层
        self.user_embed = nn.Embedding(num_users, embed_dim)
        self.item_embed = nn.Embedding(num_items, embed_dim)
        # 数值特征编码器
        self.numeric_encoder = nn.Linear(5, 32)  # 5 个数值特征
        # 多层级 DNN 排序
        self.dnn = nn.Sequential(
            nn.Linear(embed_dim * 2 + 32, 256),
            nn.ReLU(), nn.Dropout(0.2),
            nn.Linear(256, 128),
            nn.ReLU(), nn.Dropout(0.2),
            nn.Linear(128, 1)
        )

    def forward(self, user_id, item_id, numeric_feats):
        u_emb = self.user_embed(user_id)   # [B, embed_dim]
        i_emb = self.item_embed(item_id)   # [B, embed_dim]
        n_emb = F.relu(self.numeric_encoder(numeric_feats))
        x = torch.cat([u_emb, i_emb, n_emb], dim=-1)
        return torch.sigmoid(self.dnn(x))

🔀 重排层(Re-ranking)

精排之后,需要考虑推荐结果的整体质量(而不仅是单个物品的分数), 进行最终结果调整。

重排目标方法描述
多样性 MMR(Maximal Marginal Relevance) 在相关性和多样性之间权衡,避免推荐结果过于相似
多样性 DPP(Determinantal Point Process) 用行列式点过程建模集合的多样性,效果优于 MMR
新鲜度 时间衰减 + 新物品扶持 对发布时间较近的物品给予一定分数加成
业务规则 强制插入 / 过滤 / 打散 广告穿插、同一作者打散、已曝光过滤
多目标 加权融合 / 帕累托最优 同时优化点击率、时长、互动、留存等多个目标

06 · 评估指标体系

如何衡量推荐系统的好坏,离线指标与在线指标的区别

CTR
点击率
Click-Through Rate
CVR
转化率
Conversion Rate
GMV
交易总额
Gross Merchandise Value
留存
用户留存率
Retention Rate

📈 离线评估指标

指标类型指标名称计算公式 / 说明适用场景
准确性 RMSE / MAE 预测评分与真实评分的误差 评分预测任务
Top-K 准确性 Precision@K / Recall@K 前 K 个推荐中命中相关物品的比例 Top-K 推荐
排序质量 MAP / NDCG@K 考虑排序位置的相关性评估 排序任务,NDCG 更符合用户注意力衰减
覆盖率 Coverage 推荐系统能推荐到的物品占总物品的比例 评估长尾物品曝光能力
多样性 Intra-list Diversity 推荐列表中物品之间的不相似程度 评估推荐结果是否过于集中
新颖性 Novelty 推荐物品中用户未见过 / 非热门物品的比例 评估推荐是否有惊喜感

📊 在线评估指标(业务指标)

指标定义意义
CTR(点击率) 点击数 / 曝光数 衡量推荐内容的吸引力
CVR(转化率) 转化数 / 点击数 衡量推荐内容的最终商业价值
停留时长 用户消费推荐内容的总时长 衡量推荐内容的深度吸引力
GMV(交易总额) 推荐带来的订单金额总和 电商推荐的核心业务指标
用户留存率 次日/7日/30日留存比例 衡量推荐系统对用户长期价值的影响
A/B 实验 分流对比实验组与对照组的指标差异 工业界验证推荐效果的标准方法

⚠️ 离线指标 ≠ 在线指标

离线指标(如 NDCG)高,不代表在线业务指标(如 CTR、GMV)一定高。 原因包括:离线评估基于历史数据存在偏差、离线无法建模真实用户交互上下文、 优化目标与业务目标不一致等。因此上线前必须通过 A/B 测试验证

07 · 工程实践要点

推荐系统落地过程中需要关注的工程细节和最佳实践

⚙️ 特征工程最佳实践

  • 数值特征务必做归一化(MinMax / Z-Score)
  • 高基数类别特征使用 Embedding 而非 One-hot
  • 时间特征做周期编码(sin/cos)以保留周期性
  • 统计特征使用时间衰减(更近期的行为权重更高)
  • 特征一致性:离线训练和在线 serving 的特征计算逻辑必须一致(避免训练-服务偏移)
  • 使用 Feature Store(如 Feast)统一管理特征

🚀 性能优化

  • 召回阶段使用 ANN(近似最近邻)而非精确搜索
  • 物品向量预计算,避免在线实时推断
  • 模型轻量化(蒸馏、量化、剪枝)
  • 级联模型:粗排用轻量模型,精排用复杂模型
  • 使用 GPU 推理加速(TensorRT / ONNX Runtime)
  • 特征缓存:Redis 缓存热点用户特征

🧪 A/B 测试框架

推荐系统的每次迭代都应通过 A/B 测试验证效果。以下是标准的 A/B 测试流程。

1

分流

将用户随机分配到实验组和对照组(如 95% vs 5%,或 50% vs 50%)

2

实验

实验组使用新算法/新模型,对照组使用基线方案,并行运行 1-2 周

3

指标收集

收集 CTR、CVR、GMV、留存等核心指标,注意新增指标(如多样性)的变化

4

统计检验

使用 T 检验或贝叶斯方法判断指标差异是否显著(p-value < 0.05)

5

决策

若实验组显著优于对照组,则全量上线;否则回滚或继续迭代

📚 技术栈推荐

层级技术选型说明
数据流 Kafka / Pulsar 行为日志实时采集
离线计算 Spark / Hive 大规模特征工程、样本生成
实时计算 Flink 实时特征更新、在线学习
模型训练 TensorFlow / PyTorch / DeepSpeed 深度学习推荐模型训练
向量检索 Faiss / Milvus / HNSW Embedding 召回
特征存储 Redis / Tair / Feast 在线特征低延迟读取
模型服务 TensorFlow Serving / TorchServe / Triton 模型在线推理
实验平台 自研 / Feathr / 开源 A/B 平台 实验分流与指标分析

08 · 总结与技术展望

推荐系统发展趋势与学习路径

🔮 推荐系统发展趋势

大模型 + 推荐

LLM 作为特征编码器(如 RecFormer、NoteRec), 或用 LLM 直接生成推荐理由、做对话式推荐, 是多模态推荐系统的重要方向。

多模态推荐

融合文本、图像、视频、音频多种模态特征, 利用 CLIP 等预训练模型做跨模态检索, 提升冷启动场景下的推荐质量。

因果推荐

引入因果推断,区分相关性与因果性, 解决数据偏差问题(选择偏差、位置偏差等), 提升推荐的公平性与鲁棒性。

端到端推荐

从特征工程到推荐结果的全链路端到端学习, 减少人工特征工程依赖, 代表方向:强化学习推荐、生成式推荐。

📖 推荐学习路径

1

基础阶段

掌握协同过滤、矩阵分解、评估指标;实现 User-based / Item-based CF; 推荐书籍:《推荐系统实践》(项亮)、《Recommender Systems Handbook》

2

进阶阶段

学习 Wide & Deep、DeepFM、DIN、DIEN 等深度学习模型; 复现论文代码;参加推荐竞赛(KDD Cup、RecSys Challenge)

3

工程阶段

掌握 Spark / Flink 特征工程;学习 Faiss 向量检索; 了解推荐系统完整架构;搭建自己的推荐系统 Demo

4

前沿阶段

跟踪顶会论文(RecSys、KDD、WWW、SIGIR); 研究大模型在推荐中的应用;探索因果推荐、多模态推荐等前沿方向

📌 核心要点速记

  • 推荐系统 = 召回 + 排序 + 重排
  • 冷启动用内容推荐 + 引导式收集解决
  • 协同过滤不需要物品特征,但存在冷启动问题
  • 深度学习推荐的核心是特征交叉与序列建模
  • 双塔模型是工业界召回阶段的主流方案
  • 离线指标高 ≠ 在线效果好,必须 A/B 测试
  • 特征一致性是工程落地的最大陷阱
  • 多样性和新颖性与准确率同样重要
  • 实时特征工程是提升推荐时效性的关键
  • 推荐系统是一个持续迭代的系统,而非一次性模型