第5章 混合推荐系统 --- 通俗讲解
对应教材:刘宏志《推荐系统》第5章(PDF:
推荐算法-带书签版0403.pdf,目录见toc.json)前置章节:第2章协同过滤、第3章模型 CF、第4章内容与知识推荐
经典参考:Burke (2002) 混合推荐 taxonomy;Netflix Prize (2006--2009)
章节目录速览
| 节 | 标题 | PDF 页 |
|---|---|---|
| 5.1 | 混合推荐实例------Netflix 百万美金公开赛 | 87 |
| 5.2 | 混合/组合推荐的动机 | 89 |
| 5.2.1 | 实践经验 | 89 |
| 5.2.2 | 理论依据 | 90 |
| 5.3 | 混合/组合方法分类 | 92 |
| 5.3.1 | 有监督组合和无监督组合 | 92 |
| 5.3.2 | 基推荐器间依赖关系 | 93 |
| 5.4 | 并行式混合推荐 | 94 |
| 5.4.1 | 加权式混合 | 94 |
| 5.4.2 | 切换式混合 | 95 |
| 5.4.3 | 排序混合 | 96 |
| 5.5 | 串行式混合推荐 | 97 |
| 5.5.1 | 级联过滤 | 97 |
| 5.5.2 | 级联学习 | 98 |
| 5.6 | 整体式混合推荐 | 99 |
| 5.6.1 | 特征组合 | 99 |
| 5.6.2 | 特征扩充 | 100 |
| 5.6.3 | 基于图模型的混合 | 101 |
一、先搞懂:什么是「混合推荐」?
1.1 一句话
混合推荐 = 不只用一种推荐算法,而是把多种算法的优势拼在一起。
就像看病:不会只凭一种检查下结论,而是化验 + 影像 + 问诊综合判断。
1.2 为什么第 5 章放在这里?
第2章 协同过滤
第5章 混合
第3章 矩阵分解
第4章 内容/知识
工业界主流架构
前面各章各讲一种「单科状元」;现实里没有单科全能 ,所以要组合。
1.3 三种基础推荐范式(混合的「零件」)
| 范式 | 核心数据 | 擅长 | 短板 |
|---|---|---|---|
| 协同过滤 CF | 用户--物品评分矩阵 | 发现群体偏好、意外之喜 | 冷启动、稀疏 |
| 基于内容 CB | 物品文本/标签特征 | 新物品、可解释 | 过度专窄、难跨域 |
| 基于知识 KB | 属性表 + 规则 + 效用 | 大件选购、硬约束 | 知识维护成本高 |
Table 5.1(教材):三种范式对输入数据的需求不同------CF 要社区评分,CB 要物品特征,KB 还要领域知识模型。
二、5.1 Netflix 百万美金公开赛 ------ 混合推荐的「封神之战」
2.1 背景
- 2006 年 :Netflix 公开约 1 亿条 匿名评分,悬赏 100 万美元。
- 目标 :预测用户评分,比 Netflix 自家算法 RMSE 再降 10%。
- 2009 年 :团队 BellKor's Pragmatic Chaos 夺冠(多支队伍合并成果)。
2.2 比赛告诉我们什么?(比公式更重要)
- 单一算法不够 :最终方案是 几十种模型的集成(Ensemble)。
- 加权混合是主力:各子模型预测分按权重相加(回归学权重)。
- 矩阵分解大放异彩:SVD、隐语义、邻域模型等(对应第 3 章)。
- 时间因素很关键:用户口味会变,老评分权重应衰减。
- 「预测准」≠「用户满意」:赛后 Netflix 也反思------只优化 RMSE 不一定提升业务。
2.3 生活化理解
Netflix 比赛像 厨师大赛:
- 有人擅长 川菜(协同过滤)
- 有人擅长 摆盘(内容特征)
- 有人擅长 营养搭配(知识规则)
冠军不是某一位厨师,而是 把多位厨师的菜按最优比例拼成套餐 ------ 这就是 加权混合。
三、5.2 为什么要混合?
3.1 5.2.1 实践经验
Burke 在 Entree 餐厅数据集 上对比了 41 种 算法组合,结论很直白:
- 没有任何一种基础算法在所有场景下都最好。
- 混合几乎总能比单一算法更好(或至少不差)。
- Netflix 工业界验证:集成 + 调权 是提升精度的可靠路径。
各算法的「死角」举例:
| 场景 | 单一算法的问题 | 混合怎么补 |
|---|---|---|
| 新用户 | CF 找不到相似邻居 | 切换 → 先用热门/内容 |
| 新电影 | CF 无评分 | 内容推荐补召回 |
| 买相机要硬条件 | CF 不管「必须防水」 | 知识约束先过滤 |
| 评分矩阵极稀疏 | CF 不准 | 内容伪评分 + CF(特征扩充) |
3.2 5.2.2 理论依据
可以从两个角度理解「组合有效」:
- 误差互补:算法 A 在子空间 A 错得多,算法 B 恰恰在那块强 → 加权后误差抵消。
- 信息互补:CF 用「行为」,CB 用「内容」,KB 用「规则」------信息源不同,覆盖更全面。
偏差--方差视角(简化) :
单一模型可能过拟合某种模式;多模型平均/加权往往更稳健(类似机器学习里的 Ensemble)。
四、5.3 混合方法怎么分类?
Burke 提出 7 种混合策略 ;教材归纳为 三大设计架构 + 两种组合维度。
4.1 5.3.2 基推荐器间依赖关系(三种架构)
这是理解全章的「总地图」:
串行式 Pipelined
算法A
算法B
输出
并行式 Parallel
算法A
融合层
算法B
整体式 Monolithic
一个算法内部
多种特征/知识源
| 架构 | 英文 | 结构 | 改造难度 | 典型策略 |
|---|---|---|---|---|
| 整体式 | Monolithic | 一个推荐器内部融合多源 | 中(改特征/模型) | 特征组合、特征扩充 |
| 并行式 | Parallelized | 多个推荐器同时跑,再合并结果 | 低(后处理融合) | 加权、切换、排序混合 |
| 串行式 | Pipelined | 流水线,上游输出给下游 | 高(接口设计) | 级联、级联学习 |
记忆口诀:
- 整体式:一个锅炒多种料(特征进同一个模型)。
- 并行式:两个厨师各做一道菜,最后拼盘。
- 串行式:先粗筛,再精排(工厂流水线)。
4.2 5.3.1 有监督组合 vs 无监督组合
| 类型 | 是否用标注(评分)学怎么混 | 例子 |
|---|---|---|
| 无监督 | 否,权重/规则人工定 | β₁=0.5, β₂=0.5 固定加权 |
| 有监督 | 是,用历史评分优化权重 | 最小化 MAE 学 β;Netflix 回归集成 |
公式(加权有监督,教材 Formula 5.5):
MAE=1∣R∣∑ri∈R∣∑k=1nβk⋅reck(u,i)−ri∣\text{MAE} = \frac{1}{|R|} \sum_{r_i \in R} \left| \sum_{k=1}^{n} \beta_k \cdot \text{rec}_k(u,i) - r_i \right|MAE=∣R∣1ri∈R∑ k=1∑nβk⋅reck(u,i)−ri
在用户已评分物品上搜索/学习 β,使预测误差最小。
切换的极端情况 :动态权重里某个 βₖ→1、其余→0,等价于 切换式混合。
4.3 Burke 七种策略 ↔ 教材章节对照
| Burke 策略 | 教材节 | 架构 |
|---|---|---|
| Weighted 加权 | 5.4.1 | 并行 |
| Switching 切换 | 5.4.2 | 并行 |
| Mixed 混合展示 | 5.4.3 排序混合 | 并行 |
| Cascade 级联 | 5.5.1 | 串行 |
| Meta-level 元级 | 5.5.2 级联学习 | 串行 |
| Feature combination | 5.6.1 | 整体 |
| Feature augmentation | 5.6.2 | 整体 |
五、5.4 并行式混合 ------「各算各的,再合并」
三个推荐器 同时 对用户--物品打分,融合层出最终结果。对现有系统 侵入最小(加一个后处理模块即可)。
5.1 5.4.1 加权式混合(Weighted)
做法:各算法得分加权求和。
recweighted(u,i)=∑k=1nβk⋅reck(u,i),∑βk=1\text{rec}{\text{weighted}}(u,i) = \sum{k=1}^{n} \beta_k \cdot \text{rec}_k(u,i), \quad \sum \beta_k = 1recweighted(u,i)=k=1∑nβk⋅reck(u,i),∑βk=1
数值例子(教材 Table 5.6):
| 物品 | CF 分 | CB 分 | 加权(0.5/0.5) |
|---|---|---|---|
| Item1 | 0.5 | 0.8 | 0.65 |
| Item2 | 0 | 0.9 | 0.45 |
| Item3 | 0.3 | 0.4 | 0.35 |
要点:
- 各算法分数要在 同一量纲(都归一化到 0--1 或 1--5)。
- 权重可 全局固定 ,也可 按用户/按物品动态(P-Tango 系统:物品被评越多,CF 权重越大)。
- Netflix 冠军方案本质就是 高级加权集成。
生活类比:两位评委打分,按 6:4 合成总分。
5.2 5.4.2 切换式混合(Switching)
做法 :不混合,而是 规则决定此刻用哪一个算法。
∃k:recswitching(u,i)=reck(u,i)\exists k : \text{rec}_{\text{switching}}(u,i) = \text{rec}_k(u,i)∃k:recswitching(u,i)=reck(u,i)
常见切换条件:
| 条件 | 用谁 |
|---|---|
| 新用户,评分 < N | 热门 / 内容 / 知识 |
| CF 置信度低 | 内容推荐 |
| 用户正在填规格表单 | 知识约束推荐 |
| 级联结果不足 N 条 | 回退到加权混合(Zanker 方案) |
NewsDude 新闻推荐(教材) :
先试内容最近邻 → 找不到再用 CF 跨体裁 → 最后用朴素贝叶斯匹配长期兴趣。
生活类比 :自动档汽车------平路用经济模式,爬坡切换运动模式;同一时刻只用一个引擎。
关键:切换规则(Oracle)设计得好不好,决定系统上限。
5.3 5.4.3 排序混合(Mixed / Rank Fusion)
做法 :各算法 各自出 Top-N 列表 ,再在 排序层面 合并,而不是简单对同一批物品加权。
常见手段:
- 分块展示:界面左边「猜你喜欢(CF)」,右边「相似内容(CB)」------ Burke Mixed。
- 投票 / Borda:在多个列表里出现越多次、排名越靠前 → 综合分越高。
- 旅游套餐 :住宿、活动、交通各一个推荐器,CSP 求解器保证 套餐一致(距离、日期约束)。
与加权的区别:
- 加权 :通常对 同一候选集 上的分数融合。
- 排序混合 :候选集可以 不同 ,融合的是 名次信息。
工业界:多路召回(CF 一路、向量一路、热门一路)→ 合并去重 → 精排,与「排序混合 + 级联」思想一致。
六、5.5 串行式混合 ------「流水线,上游喂下游」
6.1 5.5.1 级联过滤(Cascade)
做法 :算法 1 先出候选;算法 2 只能在算法 1 的结果里 重排或剔除,不能新增 算法 1 没推荐的物品。
规则(教材 Formula 5.7):
- 最终分 = 最后一级算法的分。
- 对 k≥2:若上一级对物品 i 打分为 0,则本级也 必须 为 0。
典型用法:
知识约束(筛出 50 台合规相机) → 协同过滤(按相似用户排序)
Entree 餐厅:知识推荐出列表 → CF 打破平分、排序。
优点 :先保证 可行/相关 ,再优化 个性化 。
缺点 :候选越级越少,可能 不够 N 条 → 常与 切换 联用(不够则换加权)。
生活类比 :高考 先过线(级联过滤) ,再 按总分排名(重排);没过线的不进排名池。
6.2 5.5.2 级联学习(Meta-level / 元级混合)
做法 :上一级输出的不是「推荐列表」,而是 模型/画像,供下一级使用。
recmeta(u,i)=recn(u,i,modeln−1)\text{rec}_{\text{meta}}(u,i) = \text{rec}n(u, i, \text{model}{n-1})recmeta(u,i)=recn(u,i,modeln−1)
经典例子:Fab 系统(教材)
- 内容推荐 根据新闻关键词建 用户兴趣向量。
- 协同过滤 不用原文,而是在 内容向量空间 里找相似用户 → 推荐他们读过的文章。
这叫 Collaboration via Content(通过内容做协同)。
Content-boosted CF(Melville,特征扩充的串行思想):
- 缺评分处用 内容预测分 填成伪评分。
- 再跑协同过滤(见 5.6.2)。
与级联过滤的区别:
| 级联过滤 | 级联学习 | |
|---|---|---|
| 上游输出 | 候选物品列表 | 用户模型 / 特征 / 规则 |
| 下游作用 | 重排、删 item | 用模型做 CF/KB 推理 |
| 例子 | 约束→CF 排序 | Fab、伪评分 CF |
七、5.6 整体式混合 ------「一个模型吃所有料」
两个推荐器 在代码/模型内部融合 ,不是跑完再合并。改造算法本身,但 部署为一个服务。
7.1 5.6.1 特征组合(Feature Combination)
做法 :把 CF、CB、KB 的信息 变成同一套特征 ,喂给 一个 学习器(决策树、规则学习、神经网络等)。
Basu 等(购书例子,教材 Table 5.2--5.3):
- 原始:用户买了哪些书 + 书是什么体裁。
- 组合特征:
User_likes_many_mystery、User_likes_some_romance... - 发现:Alice 与 User1 购书重叠相似,但 组合特征后 User1 更像 Alice(都爱 mystery)。
公式层面:特征向量 = [协同特征 ∥ 内容特征 ∥ 知识特征]。
优点 :实现概念清晰,工业界极常见(推荐模型输入里同时有 user_id、item_id、类目、文本 embedding)。
缺点:特征工程工作量大。
7.2 5.6.2 特征扩充(Feature Augmentation)
做法 :一个算法 先算中间结果 ,作为 另一个算法的输入特征(比特征组合耦合更深)。
Content-boosted CF(教材 Formula 5.2):
- 用户 u 对物品 i 若无评分,用内容模型预测 → 伪评分 c_{u,i}。
- 评分矩阵补全后,做 加权 Pearson 协同过滤。
- 对评分少的用户,提高内容预测权重 s_w(更信内容,少信邻居)。
直觉 :新用户/新物品内容信息多、行为少 → 让内容「撑」协同过滤。
与特征组合区别:
- 组合:一次性拼特征,一个模型学。
- 扩充 :A 的输出 动态注入 B 的输入(常为两阶段紧耦合)。
7.3 5.6.3 基于图模型的混合
做法 :把用户、物品、属性、标签、知识实体放在 同一张异质图 上,用 随机游走、元路径、图神经网络 统一表示与传播。
评分
属于
提及
点击
用户
物品
类目
知识实体
为何算混合?
- 图里同时有 协同边 (user--item)、内容边 (item--feature)、知识边(item--entity--entity)。
- 一次游走/传播 = 多种推荐范式 在结构上融合。
例子(与后文第 11 章呼应):
- RippleNet:偏好沿知识图谱多跳传播 + 预测层。
- HIN 随机游走:用户--物品--类目多种路径算相关度。
- PinSage / GraphSAGE:工业级图召回。
优点 :能挖 高阶关系 (买了 A 的用户还看了知识图谱里与 A 相关的 B)。
缺点:图构建与训练成本高。
八、工业界怎么落地?(串起全章)
现代推荐多是 「并行召回 + 串行级联 + 整体式精排」 的组合:
并行式 · 多路召回
CF 召回
向量/内容召回
热门/知识规则
合并去重 · 排序混合思想
整体式精排模型
级联 · 业务规则/多样性
展示
| 阶段 | 对应本章 | 例子 |
|---|---|---|
| 多路召回 | 5.4 并行(切换/混合) | 淘宝多路召回通道 |
| 合并 | 5.4.3 排序混合 | 按 Borda/频次合并 |
| 精排 | 5.6 整体式 | DeepFM、Wide&Deep(多特征组合) |
| 重排 | 5.5.1 级联 | 多样性、已读过滤、广告混排 |
新用户策略:5.4.2 切换 --- 行为少 → 内容/热门;行为够 → CF。
九、三种架构怎么选?
| 若你... | 优先考虑 |
|---|---|
| 已有 CF 系统,想快速加内容 | 并行加权(5.4.1) |
| 新用户/新物品多 | 切换(5.4.2)+ 内容/热门 |
| 有大件硬约束(4.4 知识) | 级联(5.5.1):先 KB 后 CF |
| 要做统一深度模型 | 特征组合(5.6.1) |
| 评分极稀疏 | 特征扩充(5.6.2) |
| 有知识图谱 + 行为 | 图混合(5.6.3) |
工程成本:并行 < 整体式 < 串行(教材 5.5 节讨论总结)。
十、与前几章的关系
| 章节 | 在混合中的角色 |
|---|---|
| 第2章 邻域 CF | 并行/级联后段、加权一路 |
| 第3章 矩阵分解 | Netflix 式集成核心;精排特征 |
| 第4章 内容/知识 | 冷启动、召回、级联前段约束 |
| 第5章 | 把上面「零件」组装成系统 |
| 第6章 评测 | 混合后更需 A/B 与多指标 |
十一、本章小结(背诵版)
- 动机 :单算法有死角;Netflix 证明 集成有效。
- 三架构:整体式(一个模型)、并行式(各算各的再融)、串行式(流水线)。
- 并行三件套:加权、切换、排序混合。
- 串行两件套:级联过滤(列表→列表)、级联学习(模型→模型)。
- 整体两件套 + 图:特征组合、特征扩充、图模型统一多源关系。
- 有/无监督:权重固定 vs 用评分学习权重。
- 工业标配:多路召回(并行)+ 精排(整体)+ 重排(级联)。
十二、常见误区
| 误区 | 正解 |
|---|---|
| 混合 = 把几个列表随便拼 | 需统一量纲、去重、冲突消解(CSP/规则) |
| 权重越多越好 | 过多模型增加延迟与维护;要 A/B 验证 |
| 级联一定比并行好 | 级联会 缩小候选;要备切换/回退 |
| Netflix 只考 RMSE | 业务还要看多样性、新颖性、营收 |
| 深度学习取代一切混合 | 深度模型内部仍是 多特征源组合(整体式混合) |
十三、面试题速记
-
混合推荐解决什么问题?
互补各算法短板,提升准确率、覆盖率、冷启动与可解释性。
-
加权 vs 切换 vs 级联?
加权:同时用、融合分;切换:择一用;级联:先粗后细、下游不改候选集。
-
特征组合 vs 特征扩充?
组合:特征拼一起一个模型;扩充:一算法输出作另一算法输入(如伪评分)。
-
Netflix Prize 启示?
矩阵分解 + 多模型集成 + 时间特征;单一 CF 不够。
-
有监督混合是什么?
用历史评分学习各推荐器权重(最小化 MAE/RMSE)。
-
工业界召回和精排对应哪种混合?
多路召回≈并行+排序混合;精排≈整体式特征组合;重排≈级联。
十四、延伸阅读与后续章节
- Burke, R. (2002). Hybrid recommender systems: Survey and experiments.
- Bell et al. (2007). The BellKor solution to the Netflix Prize.
- 本书 第 6 章:混合系统如何评测(RMSE、Precision@N、多样性)。
- 本书 第 11 章:异质信息网络与图混合的深度展开。
文档风格与 p19_4_基于内容和知识的推荐.md 一致;代码实践可参考后续 p22_* 混合推荐示例(待补充)。