使用FM-Embedding实现推荐召回

在推荐业务场景中,使用Designer提供的整套FM-Embedding方案可以快速获得UserItem对应的特征向量,您只需要在召回模块对该特征向量进行乘积,即可得到UserItem的评分结果。本文为您介绍如何使用FM算法和Embedding提取算法,快速生成UserItem的特征向量。

前提条件

背景信息

智能推荐包括召回和排序模块。召回模块中,通常使用向量分别表示User(用户)和Item(待推荐的内容),且通过UserItem的向量乘积判断UserItem的兴趣程度。该工作流基于真实的推荐场景数据,其完整业务流程已预置在Designer模板中,您仅通过拖拽组件即可快速生成UserItem的特征向量。

数据集

原始数据包括如下字段。

字段名

类型

描述

userid

STRING

用户ID。

age

DOUBLE

用户年龄。

gender

STRING

用户性别

itemid

STRING

商品ID。

price

DOUBLE

商品价格。

size

DOUBLE

商品大小。

label

DOUBLE

目标列,含义如下:

  • 1.0:表示购买。

  • 0.0:表示未购买。

工作流的原始数据示例如下。原始数据

实现推荐召回

  1. 进入Designer页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。

    3. 在工作空间页面的左侧导航栏选择模型开发与训练 > 可视化建模(Designer),进入Designer页面。

  2. 构建工作流。

    1. Designer页面,单击预置模板页签。

    2. 在模板列表,单击使用FM-Embedding实现推荐召回下的创建

    3. 新建工作流对话框,配置参数(可以全部使用默认参数)。

      其中:工作流数据存储配置为OSS Bucket路径,用于存储工作流运行中产出的临时数据和模型。

    4. 单击确定

      您需要等待大约十秒钟,工作流可以创建成功。

    5. 系统根据预置的模板,自动构建工作流,如下图所示。

      推荐召回实验

      区域

      描述

      针对全量特征的One-Hot编码。One-hot编码可以将字符型数据转换为数值型,该FM-Embedding工作流中,onehot编码-1组件先对全量数据进行One-Hot编码,再将生成的编码模型输入至onehot编码-2onehot编码-3组件。

      生成FM模型。您可以单击该组件,在右侧的参数设置页签,查看系统已配置的默认参数。其中维度(默认值为1,1,10)的第三个参数(默认值中的10)表示生成的Embedding维度。

      生成User特征编码。该组件的输入(选择二值化列)为useridgenderage附加列userid

      生成Item特征编码。该组件的输入(选择二值化列)为itemidpricesize附加列itemid

      提取Item-Embedding。该组件的参数含义如下:

      • Embedding向量的id列名:FM训练中的模型feature_id

      • Embedding向量列名:FM训练中的模型feature_weights

      • 权重向量列名:One-Hot编码对应的稀疏化数据列。

      • 输出结果列名:输出的Embedding字段名。

  3. 运行工作流并查看输出结果。

    1. 单击画布上方的image.png按钮。

    2. 工作流运行结束后,右键单击画布中的Embedding提取-1,在快捷菜单,单击查看数据 > 输出,即可查看User特征向量。User特征向量

    3. 右键单击画布中的Embedding提取-2,在快捷菜单,单击查看数据 > 输出,即可查看Item特征向量。Item特征向量