第2章:推荐系统核心基础与常用模型

章节导读:本章聚焦面试最高频的三类基础模型——协同过滤、矩阵分解、FM/FFM & Wide&Deep。掌握回答框架能让你在10分钟内展示系统理解力,区分“知道”与“真正懂”。
推荐模型回答框架 ① 一句话定义模型 ② 核心公式/原理 ③ 训练/推理流程 ④ 优缺点&适用场景 ⑤ 与同类模型的对比 ⑥ 业务落地中的trick 加分点:结合公司业务场景讲优化细节,主动引出冷启动/特征工程
面试官画像:一线算法工程师/技术专家,关注底层原理透深度、业务理解与实际调优经验。大厂常结合AB测试与效率提问。
模型核心假设特征工程依赖泛化能力大厂侧重点
协同过滤用户/物品相似度低(仅交互)弱(冷启动)实时召回、社交关系
矩阵分解隐因子线性组合低中分布式SGD、负采样
FM/FFM特征交叉参数共享高强大规模稀疏、field感知
Wide & Deep记忆+泛化联合中(wide侧人工)强(deep侧)Google Play、多目标优化

📌 Q1:请介绍协同过滤算法的原理、优缺点及适用场景

面试官考察点:

  • 是否理解基于用户 vs 基于物品的差异
  • 能否说出冷启动、稀疏性问题及常用缓解手段
  • 能否结合业务说明选型考虑

回答框架:

  1. 一句话定义:基于“物以类聚,人以群分”的假设,利用交互矩阵计算相似性
  2. 两种模式:User CF (找相似用户) vs Item CF (找物品邻居)
  3. 优缺点:无需特征、可解释性强;但对交互稀疏和新物品不友好
  4. 适用场景:社交推荐、购物车关联、视频“看了又看”
  5. 落地优化:降维+向量化、协同过滤+内容冷启动融合

示例回答(约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的区别
  • 能否说明梯度下降与交替最小二乘的适用条件

回答框架:

  1. 核心思想:将用户-物品评分矩阵分解为两个低维隐因子矩阵的乘积
  2. 损失函数:MSE + L2正则(避免过拟合)
  3. 训练方式:SGD(适合全量更新)或ALS(适合隐式反馈+并行)
  4. 关键优化:负采样策略、偏置项引入、时间动态
  5. 缺点:线性交互假设,无法捕捉高阶特征

示例回答(约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的设计哲学:记忆与泛化的平衡

回答框架:

  1. FM:为每个特征学习一个隐向量,交叉项通过向量内积计算,解决稀疏特征交叉
  2. FFM:在FM基础上引入field概念,每个特征与不同field的特征交叉时使用不同隐向量
  3. Wide & Deep:Wide侧(线性+特征交叉)记忆高频特征;Deep侧(DNN)泛化未出现组合;联合训练提升AUC
  4. 适用: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预估中如何做特征选择性交叉”),能让面试官感到你具备系统化思维与应用能力。