Skip to content

第4章:推荐系统企业实战

本章进入真实企业场景,使用 Python、Spark、TensorFlow 等工具实现完整的推荐系统,涵盖矩阵分解、标签推荐、深度学习排序模型和在线 API 服务。


22. Python 使用 Spark ALS 矩阵分解实现电影推荐

核心思路

利用 PySpark 的 ALS(交替最小二乘法)进行矩阵分解,将用户-物品评分矩阵分解为用户向量和物品向量,从而实现个性化推荐。

实现步骤

  1. 读取数据:PySpark 读取 CSV 格式的评分数据(userId, movieId, rating, timestamp)
  2. 训练模型:使用 Spark ALS 进行矩阵分解,保存 item embedding 和 movie embedding
  3. 生成推荐:对于给定用户,计算可能最喜欢的 10 部电影
    • 查询目标用户的 embedding
    • 计算目标用户 embedding 与所有 movie embedding 的相似度
    • 过滤已看过的电影,取 Top 10

关键代码流程

评分数据 → Spark ALS 训练 → 用户向量 + 物品向量 → 相似度计算 → 推荐列表

23. Python 实现基于标签的推荐系统

什么是标签推荐

标签泛指分类、关键词、作者、标签等一切离散的内部特征。基于标签的推荐简单高效,是工业界常用的推荐方式。

实现思路

  1. 用户标签偏好统计:根据用户看过的内容列表,聚合统计出(用户、标签、频次)数据,得到每个用户最喜欢的标签
  2. 标签内容热度统计:根据用户看过的内容列表,聚合统计出(标签、内容、频次)数据,得到每个标签最热的内容
  3. 加权推荐:对每个用户,根据最喜欢的标签,取出标签的热榜、最新、人工推荐列表,加权得到最终推荐列表

推荐流程

用户行为 → 标签偏好统计 → 标签热榜 → 加权融合 → 推荐列表

24. TensorFlow 2 实现双塔 DNN 排序模型

双塔模型架构

双塔模型(Two-Tower Model)是推荐系统中经典的排序模型架构,将用户和物品分别通过独立的神经网络编码为向量,再通过点积计算匹配分数。

实现步骤

  1. 读取数据:电影数据集,包括用户信息、电影信息、评分行为信息
  2. 搭建模型:使用 Keras 构建,核心组件包括:
    • Embedding 层:将稀疏 ID 映射为稠密向量
    • 多层全连接网络:提取高阶特征
    • 点积层:计算用户和物品的匹配度
  3. 模型应用
    • 在线预估:保存模型用于在线 predict 预估
    • 召回:导出 embedding 用于向量召回

架构示意

用户特征 → Embedding → DNN → 用户向量 ─┐
                                          ├─ 点积 → 匹配分数
物品特征 → Embedding → DNN → 物品向量 ─┘

25. TensorFlow 使用 LR、GBDT 和 DNN 实现二分类排序算法

背景

使用葡萄牙银行营销数据集(电话营销活动记录),对比不同排序算法的效果。

实现步骤

  1. 数据导入:用 Pandas 导入 CSV 文件
  2. 数据处理:用 tf.data.Dataset 读取数据,进行分批(batch)、随机排序(shuffle)处理
  3. 特征映射:用 feature_column 将 CSV 中的列映射到模型特征
  4. 模型训练与对比:分别训练 LR(逻辑回归)、GBDT(梯度提升树)、DNN(深度神经网络),对比 AUC 指标

算法对比

算法特点适用场景
LR简单高效,可解释性强基线模型、快速迭代
GBDT自动特征组合,非线性能力强中小规模特征
DNN强大的拟合能力大规模稀疏特征

26. Python 使用 Flask 实现推荐系统在线 API

API 接口设计

Flask 提供以下接口服务:

基于用户 ID 的接口

  • 获取用户的 embedding
  • 获取用户看过的 ID 列表
  • 猜你喜欢的电影列表(电影 ID、电影名称、电影详情)

基于电影 ID 的接口

  • 获取电影的 embedding、电影 ID、电影名称
  • 获取相关推荐列表(相似电影)

在线服务架构

前端请求 → Flask API → 查询 Embedding/缓存 → 计算推荐 → 返回结果

小结

本章通过 5 个实战项目,覆盖了推荐系统的核心工程环节:

项目技术解决的问题
Spark ALS 电影推荐PySpark、矩阵分解个性化推荐
标签推荐系统Python、标签统计简单高效的推荐
双塔 DNN 排序模型TensorFlow 2、Keras精排打分
LR/GBDT/DNN 对比TensorFlow排序算法选型
Flask 在线 APIFlask推荐服务上线

下一章

第5章:技能提升和总结 — 推荐系统进阶学习路径与落地步骤

MIT