推荐系统(Recommendation System)是一种信息过滤系统,其目标是预测用户对物品(如商品、电影、文章等)的偏好或评分,从而向用户推荐他们可能感兴趣的物品。推荐系统广泛应用于电商、视频平台、社交媒体、新闻推送等场景。
下面是一个典型推荐系统算法的完整流程,包括核心模块、常用算法以及整体工作流程:
一、推荐系统整体流程
一个完整的推荐系统主要包括以下步骤:
text
1. 数据收集
2. 数据预处理
3. 特征工程
4. 模型选择与训练
5. 推荐生成(召回 + 排序)
6. 结果评估与反馈
7. 在线服务与更新
1. 数据收集(Data Collection)
收集用户行为数据和物品信息,常见数据包括:
- 显式反馈:用户评分、点赞、收藏等(如电影评分)
- 隐式反馈:点击、浏览、购买、停留时长等
- 上下文信息:时间、地点、设备、天气等
- 用户画像:年龄、性别、地域、兴趣标签等
- 物品特征:类别、标签、描述、价格、作者等
2. 数据预处理(Data Preprocessing)
对原始数据进行清洗和转换:
- 去除噪声(如异常点击、爬虫数据)
- 处理缺失值
- 数据归一化 / 标准化
- 构建用户-物品交互矩阵(User-Item Interaction Matrix)
- 划分训练集 / 验证集 / 测试集
3. 特征工程(Feature Engineering)
提取有效特征用于模型训练:
- 用户侧特征:历史行为统计(如点击率、购买频次)、兴趣向量
- 物品侧特征:类别、热度、文本嵌入(如TF-IDF、BERT)
- 交叉特征:用户-物品交互特征(是否购买过同类商品)
- 时序特征:最近一次交互时间、行为衰减权重
4. 模型选择与训练(Model Selection & Training)
根据场景选择合适的推荐算法。常见算法分类如下:
(1)基于内容的推荐(Content-Based)
- 原理:根据用户历史喜欢的物品内容,推荐相似内容的物品。
- 优点:可解释性强,无冷启动问题(对新物品友好)
- 缺点:推荐多样性差,难以发现用户新兴趣
(2)协同过滤(Collaborative Filtering, CF)
- 基于用户的CF:找相似用户,推荐他们喜欢的物品
- 基于物品的CF:找相似物品,推荐用户喜欢的相似物品
- 优点:无需物品内容信息,发现潜在兴趣
- 缺点:冷启动问题(新用户/新物品难处理),数据稀疏性
(3)矩阵分解(Matrix Factorization, MF)
- 将用户-物品评分矩阵分解为低维隐向量(User Embedding + Item Embedding)
- 经典算法:SVD、SVD++、NMF
- 优点:缓解稀疏性,捕捉隐式兴趣
- 缺点:难以融入丰富特征
(4)深度学习模型
- Wide & Deep:结合记忆(Wide)与泛化(Deep)
- Neural CF(NCF) :用神经网络替代内积计算用户-物品匹配度
- DeepFM / DIN / DIEN:融合特征交叉与用户行为序列建模
- Graph Neural Networks(GNN) :将用户-物品交互建模为图,如 PinSage
(5)多任务学习与强化学习
- 多目标优化(如点击率 + 转化率 + 时长)
- 在线学习 / 强化学习(如 LinUCB、DQN)用于动态调整推荐策略
5. 推荐生成:召回(Recall) + 排序(Ranking)
由于物品库通常很大(百万级),需分两阶段:
(1)召回阶段
-
从全量物品中快速筛选出几百~几千个候选物品
-
常用方法:
- 基于规则(热门、地域、新上架)
- 协同过滤(ItemCF、UserCF)
- 向量召回(ANN,如 Faiss、HNSW,用 Embedding 相似度)
- 多路召回(融合多种策略)
(2)排序阶段
- 对召回结果打分排序,输出 Top-K 推荐
- 使用复杂模型(如 DeepFM、DIN、Transformer)
- 输入:用户特征 + 物品特征 + 上下文 + 交叉特征
- 输出:点击率(CTR)、转化率(CVR)等预测值
高级系统可能还有重排(Re-ranking)阶段,考虑多样性、公平性、业务规则等。
6. 评估与反馈(Evaluation & Feedback)
离线评估指标:
- 准确率:RMSE(评分预测)、Precision@K、Recall@K、NDCG@K
- 覆盖率、多样性、新颖性
在线评估(A/B测试):
- CTR(点击率)、转化率、人均观看时长、GMV 等业务指标
用户反馈闭环:
- 实时收集用户对推荐结果的行为
- 用于在线学习或模型定期更新
7. 在线服务与模型更新
- 实时推荐:使用流处理(如 Flink)更新用户兴趣
- 模型部署:通过 TF Serving、TorchServe 提供在线预测
- 增量训练:每日/每小时更新模型(如使用在线学习算法)
二、详细流程解析
1. 推荐生成:召回(Recall) + 排序(Ranking)
这个流程的核心目标是:从海量物品库中,高效、准确地为用户筛选出他们最可能感兴趣的少量物品,并最终以体验良好的方式呈现出来。
1. 召回(Recall)
-
目标:解决算法效率问题。从数以百万甚至千万计的物品库中,快速、粗略地筛选出几百到几千的候选集合,保证召回率(尽量不遗漏用户可能喜欢的物品)。
-
核心思想:"海选"。不计较单个物品的精确得分,而是利用多种策略从不同角度"捞"回可能相关的物品。
-
常用策略 :工业通常采用多路召回(Multi-tower Recall) ,融合多种策略结果,再去重合并
-
基于协同过滤:根据用户的历史行为(如点击、购买)找相似。
- 物品协同过滤:"买了此商品的人,也买了XXX"。根据物品的共现关系进行推荐。
- 用户协同过滤:"和你相似的人,也喜欢XXX"。找到相似用户,推荐他们喜欢的物品。
-
基于内容:根据用户喜欢的物品的内容特征(如关键词、标签、类别)来推荐相似特征的物品。
-
基于热点:推荐当前最热门、最流行的物品。
-
基于模型 :使 用向量化技术(如Embedding) 将用户和物品表示为向量,通过向量相似度(如余弦相似度)进行快速检索,这是目前的主流模型方法。
-
2. 排序(Ranking)
排序阶段通常分为两步:粗排和精排。
-
粗排(Pre-ranking)
- 目标:对召回阶段输出的几百上千个候选物品进行初步筛选,将数量缩减到几十或一百左右,为后续的精排阶段减压。
- 特点:使用相对简单的模型(如逻辑回归、浅层神经网络)和少量关键特征,追求速度。
-
精排(Ranking)
-
目标:这是推荐系统的核心,解决算法精准度问题。它对粗排后的候选集进行精准的点击率(CTR)、转化率(CVR)等目标预测。
-
核心思想:"决赛"。为每个物品计算一个最终的得分。
-
常用模型:
- 传统模型:逻辑回归(LR)、梯度提升决策树(GBDT)。
- 深度学习模型: Wide & Deep(兼顾记忆与泛化)、DeepFM(自动学习特征交叉)、DIN(针对用户兴趣多样性)等。这些模型能够处理海量特征并进行复杂的非线性拟合。
-
关键特征:
- 用户特征:年龄、性别、兴趣标签、购买力等。
- 物品特征:类别、价格、品牌、标签等。
- 上下文特征:时间、地点、天气、当前页面等。
- 交叉特征:用户与物品之间的交互特征,是提升模型效果的关键。
-
3. 重排(Re-ranking)
-
目标:在精排生成的得分列表基础上,引入业务规则和多样性策略,调整最终展示给用户的列表顺序,提升用户体验和业务指标。
-
常用策略:
- 去重:去除用户已经看过、买过或明确不喜欢的物品。
- 多样性:避免推荐列表中出现过多同质化物品(例如,全是同一品牌的手机)。
- 新颖性:适当给新物品或冷门物品一些曝光机会。
- 业务规则:如保证某些战略商品的曝光位置、进行商业引流等。