在推荐器系统中生成 wide-and-deep 模型

本文通过示例笔记本逐步讲解如何生成使用 wide-and-deep 模型的推荐器系统。 生成 wide-and-deep 推荐器系统的机器学习管道涉及下图中所示的阶段:

wide-and-deep 推荐器的工作流

此参考解决方案涵盖以蓝色显示的阶段:

  • 模型训练和评估
  • 模型导出和版本管理
  • 批量模型推理
  • 联机模型服务

有关未涵盖的步骤的信息,请参阅未涵盖的项目阶段

什么是 wide-and-deep 模型?

wide-and-deep 模型是推荐器系统的一个有效选择,它将线性模型与深度学习模型的功能相结合。 线性模型分析与客户选择相关的历史数据,而深度学习功能则会进行泛化以扩展相关推荐的选择。

有关详细信息,请参阅学术论文:推荐器系统的广泛和深度学习

Databricks 工具突出显示

笔记本涵盖了 Azure Databricks 上提供的用于简化机器学习管道生成的多个工具:

  1. SparkDatasetConverter
  2. MLflow 模型注册表

描述用户数据集的笔记本

此笔记本中使用的数据集由以下 Delta 表组成:

  • user_profile:包含 user_id 值及其静态配置文件
  • item_profile:包含 item_id 值及其静态配置文件
  • user_item_interaction:包含用户在其中与项交互的事件。 此表随机拆分为三个用于生成和评估模型的 Delta 表:trainvalidationtest

此数据格式很容易造成推荐问题。 下面是一些示例:

  • 对于广告推荐器,项是广告,而用户与项之间的交互是点击广告的用户的记录。
  • 对于在线购物推荐器,项是产品,而用户与项之间的交互是查看产品或曾经购买过产品的用户的记录。

在根据数据集改编此笔记本时,只需将数据保存在 Delta 表中,并提供表名称和位置即可。 用于加载数据的代码大多都可以重复使用。

请查看数据集生成笔记本了解详细信息。

生成并保存数据集笔记本

获取笔记本

笔记本示例:wide-and-deep 模型

wide-and-deep 模型将宽线性模型与深度神经网络相结合,以处理提供合适推荐内容而所需的记忆和泛化。

此模型只是众多深度学习模型的一个例子,它可以解决推荐器问题或者在任何一般性的机器学习管道中使用。 本文的重点是演示如何生成工作流。 你可以根据自己的用例换用不同的模型,并优化模型以更好地评估指标。

在推荐器系统笔记本中生成和提供 wide-and-deep 模型

获取笔记本

未涵盖的项目阶段

为了让笔记本注重于演示如何实现推荐器系统,其中未涵盖以下阶段。 这些阶段在工作流示意图中以灰色块显示。

  1. 数据收集和探索性数据分析。 请参阅在 Azure Databricks 上运行第一个 ETL 工作负载
  2. 特征工程。 特征工程是推荐器系统的重要组成部分,此主题提供许多信息。 此笔记本假设你有一个包含用户-项交互的策展数据集。 有关此笔记本中使用的数据集的详细信息,请参阅描述用户数据集的笔记本。 有关特征工程的详细信息,请参阅以下资源:
  3. 模型优化。 模型优化涉及到修改现有管道的代码,包括修改特征工程、模型结构、模型超参数,甚至更新数据收集阶段,以提高模型的性能。 有关用于在 Azure Databricks 上进行模型优化的工具的详细信息,请参阅超参数优化