在推荐器系统中生成 wide-and-deep 模型
本文通过示例笔记本逐步讲解如何生成使用 wide-and-deep 模型的推荐器系统。 生成 wide-and-deep 推荐器系统的机器学习管道涉及下图中所示的阶段:
此参考解决方案涵盖以蓝色显示的阶段:
- 模型训练和评估
- 模型导出和版本管理
- 批量模型推理
- 联机模型服务
有关未涵盖的步骤的信息,请参阅未涵盖的项目阶段。
什么是 wide-and-deep 模型?
wide-and-deep 模型是推荐器系统的一个有效选择,它将线性模型与深度学习模型的功能相结合。 线性模型分析与客户选择相关的历史数据,而深度学习功能则会进行泛化以扩展相关推荐的选择。
有关详细信息,请参阅学术论文:推荐器系统的广泛和深度学习。
Databricks 工具突出显示
笔记本涵盖了 Azure Databricks 上提供的用于简化机器学习管道生成的多个工具:
描述用户数据集的笔记本
此笔记本中使用的数据集由以下 Delta 表组成:
user_profile
:包含user_id
值及其静态配置文件item_profile
:包含item_id
值及其静态配置文件user_item_interaction
:包含用户在其中与项交互的事件。 此表随机拆分为三个用于生成和评估模型的 Delta 表:train
、validation
和test
。
此数据格式很容易造成推荐问题。 下面是一些示例:
- 对于广告推荐器,项是广告,而用户与项之间的交互是点击广告的用户的记录。
- 对于在线购物推荐器,项是产品,而用户与项之间的交互是查看产品或曾经购买过产品的用户的记录。
在根据数据集改编此笔记本时,只需将数据保存在 Delta 表中,并提供表名称和位置即可。 用于加载数据的代码大多都可以重复使用。
请查看数据集生成笔记本了解详细信息。
生成并保存数据集笔记本
笔记本示例:wide-and-deep 模型
wide-and-deep 模型将宽线性模型与深度神经网络相结合,以处理提供合适推荐内容而所需的记忆和泛化。
此模型只是众多深度学习模型的一个例子,它可以解决推荐器问题或者在任何一般性的机器学习管道中使用。 本文的重点是演示如何生成工作流。 你可以根据自己的用例换用不同的模型,并优化模型以更好地评估指标。
在推荐器系统笔记本中生成和提供 wide-and-deep 模型
未涵盖的项目阶段
为了让笔记本注重于演示如何实现推荐器系统,其中未涵盖以下阶段。 这些阶段在工作流示意图中以灰色块显示。
- 数据收集和探索性数据分析。 请参阅在 Azure Databricks 上运行第一个 ETL 工作负载。
- 特征工程。 特征工程是推荐器系统的重要组成部分,此主题提供许多信息。 此笔记本假设你有一个包含用户-项交互的策展数据集。 有关此笔记本中使用的数据集的详细信息,请参阅描述用户数据集的笔记本。 有关特征工程的详细信息,请参阅以下资源:
- Databricks 解决方案加速器笔记本使用推荐来个性化客户体验演示了推荐器系统中特征工程的示例。
- 有关使用 scikit-learn、MLlib 和迁移学习进行特征工程的示例,请参阅预处理用于机器学习和深度学习的数据。
- 模型优化。 模型优化涉及到修改现有管道的代码,包括修改特征工程、模型结构、模型超参数,甚至更新数据收集阶段,以提高模型的性能。 有关用于在 Azure Databricks 上进行模型优化的工具的详细信息,请参阅超参数优化。