第2章:推荐系统核心基础与常用模型
章节导读:本章聚焦面试最高频的三类基础模型——协同过滤、矩阵分解、FM/FFM & Wide&Deep。掌握回答框架能让你在10分钟内展示系统理解力,区分“知道”与“真正懂”。
面试官画像:一线算法工程师/技术专家,关注底层原理透深度、业务理解与实际调优经验。大厂常结合AB测试与效率提问。
| 模型 | 核心假设 | 特征工程依赖 | 泛化能力 | 大厂侧重点 |
|---|---|---|---|---|
| 协同过滤 | 用户/物品相似度 | 低(仅交互) | 弱(冷启动) | 实时召回、社交关系 |
| 矩阵分解 | 隐因子线性组合 | 低 | 中 | 分布式SGD、负采样 |
| FM/FFM | 特征交叉参数共享 | 高 | 强 | 大规模稀疏、field感知 |
| Wide & Deep | 记忆+泛化联合 | 中(wide侧人工) | 强(deep侧) | Google Play、多目标优化 |
📌 Q1:请介绍协同过滤算法的原理、优缺点及适用场景
面试官考察点:
- 是否理解基于用户 vs 基于物品的差异
- 能否说出冷启动、稀疏性问题及常用缓解手段
- 能否结合业务说明选型考虑
回答框架:
- 一句话定义:基于“物以类聚,人以群分”的假设,利用交互矩阵计算相似性
- 两种模式:User CF (找相似用户) vs Item CF (找物品邻居)
- 优缺点:无需特征、可解释性强;但对交互稀疏和新物品不友好
- 适用场景:社交推荐、购物车关联、视频“看了又看”
- 落地优化:降维+向量化、协同过滤+内容冷启动融合
示例回答(约80字):
协同过滤利用用户-物品交互矩阵计算相似度。Item CF 更稳定,适合物品数少于用户的场景。优点是实现简单、可解释性好;缺点是冷启动问题突出,常用Popularity回退或矩阵分解融合解决。
可能追问:
- 如何选择User CF和Item CF?
- 相似度度量除了余弦还有哪些?
- 怎么做实时协同过滤?
- 如何处理session-based推荐?
避坑提醒:
❌ 不要只说“计算相似度”,要讲清楚相似度计算公式和归一化方式;避坑:误以为User CF一定比Item CF更常用,实际大厂更偏向Item CF或i2i。
公司侧重点:阿里(社交关系+协同)、字节(i2i召回)、拼多多(关联购买)
面试官画像:资深算法,5年以上经验,曾踩过稀疏矩阵的坑
📌 Q2:矩阵分解(MF)在推荐系统中的作用是什么?如何训练?
面试官考察点:
- 是否理解隐语义模型与矩阵填充的关系
- 了解SVD vs FunkSVD vs ALS的区别
- 能否说明梯度下降与交替最小二乘的适用条件
回答框架:
- 核心思想:将用户-物品评分矩阵分解为两个低维隐因子矩阵的乘积
- 损失函数:MSE + L2正则(避免过拟合)
- 训练方式:SGD(适合全量更新)或ALS(适合隐式反馈+并行)
- 关键优化:负采样策略、偏置项引入、时间动态
- 缺点:线性交互假设,无法捕捉高阶特征
示例回答(约90字):
矩阵分解通过用户隐向量与物品隐向量的内积预测评分。训练时采用SGD或ALS最小化平方误差。SGD适合显式评分,ALS易于分布式且处理隐式反馈。加入用户/物品偏置可提升精度。
可能追问:
- ALS与SGD相比优劣势?
- 如何处理隐式反馈(无评分只有行为)?
- 时间SVD如何改进?
- 大规模场景下怎么加速训练?
避坑提醒:
❌ 不要混淆SVD与FunkSVD(经典SVD要求矩阵稠密);避坑:面试时主动提到“如果数据稀疏需要先填充均值”,展示对问题的理解。
公司侧重点:Netflix Prize经典场景、Netflix/阿里(大规模ALS)、Spotify(协同+MF)
面试官画像:推荐组TL,关注工程实现细节,可能追问分布式训练策略
📌 Q3:FM与FFM的区别?Wide & Deep模型的设计动机是什么?
面试官考察点:
- 是否理解FM特征交叉的核心——因子分解参数共享
- 能否说清FFM如何引入field感知提升了精度但增加了参数量
- Wide & Deep的设计哲学:记忆与泛化的平衡
回答框架:
- FM:为每个特征学习一个隐向量,交叉项通过向量内积计算,解决稀疏特征交叉
- FFM:在FM基础上引入field概念,每个特征与不同field的特征交叉时使用不同隐向量
- Wide & Deep:Wide侧(线性+特征交叉)记忆高频特征;Deep侧(DNN)泛化未出现组合;联合训练提升AUC
- 适用:CTR预估、广告推荐、特征维度高且稀疏的场景
示例回答(约100字):
FM通过隐向量参数共享解决稀疏特征交叉;FFM为每个field分配独立隐向量,更精细但参数量变为O(n*k*field)。Wide & Deep用Wide侧记忆用户已点击的item pair,Deep侧泛化新组合,适合Google Play App推荐。
可能追问:
- 为什么FM不适合高阶交叉?
- Wide & Deep的Wide侧特征如何选择?
- DeepFM相比Wide & Deep有何优势?
- 实践中Wide侧学习率为什么设更高?
避坑提醒:
❌ 不要把FM和FFM说成“高阶模型”,它们本质是二阶交叉;避坑:主动提及“Wide侧需要人工特征工程”,这是很多面试官期待的实战认知。
公司侧重点:Google(Wide & Deep)、华为/头条(DeepFM/FFM)、美团(FM+排序)
面试官画像:CTR预估方向专家,常问“你们模型结构为什么不用DeepFM?”,考察技术决策能力
💡 面试提升建议:将上述表格作为你的“模型骨架”,面试中利用回答框架按顺序展开,同时准备1-2个业务案例(如“FM在广告CTR预估中如何做特征选择性交叉”),能让面试官感到你具备系统化思维与应用能力。