在推荐业务场景中,使用Designer提供的整套FM-Embedding方案可以快速获得User和Item对应的特征向量,您只需要在召回模块对该特征向量进行乘积,即可得到User对Item的评分结果。本文为您介绍如何使用FM算法和Embedding提取算法,快速生成User和Item的特征向量。
前提条件
-
已创建工作空间,详情请参见创建及管理工作空间。
-
已将MaxCompute资源关联到工作空间,详情请参见管理工作空间计算资源。
背景信息
智能推荐包括召回和排序模块。召回模块中,通常使用向量分别表示User(用户)和Item(待推荐的内容),且通过User与Item的向量乘积判断User对Item的兴趣程度。该工作流基于真实的推荐场景数据,其完整业务流程已预置在Designer模板中,您仅通过拖拽组件即可快速生成User和Item的特征向量。
数据集
原始数据包括如下字段。
|
字段名 |
类型 |
描述 |
|
userid |
STRING |
用户ID。 |
|
age |
DOUBLE |
用户年龄。 |
|
gender |
STRING |
用户性别 |
|
itemid |
STRING |
商品ID。 |
|
price |
DOUBLE |
商品价格。 |
|
size |
DOUBLE |
商品大小。 |
|
label |
DOUBLE |
目标列,含义如下:
|
实现推荐召回
进入Designer页面。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。
在工作空间页面的左侧导航栏选择,进入Designer页面。
-
构建工作流。
在Designer页面,单击预置模板页签。
-
在模板列表,单击使用FM-Embedding实现推荐召回下的创建。
在新建工作流对话框,配置参数(可以全部使用默认参数)。
其中:工作流数据存储配置为OSS Bucket路径,用于存储工作流运行中产出的临时数据和模型。
单击确定。
您需要等待大约十秒钟,工作流可以创建成功。
-
系统根据预置的模板,自动构建工作流,如下图所示。

区域
描述
①
针对全量特征的One-Hot编码。One-hot编码可以将字符型数据转换为数值型,该FM-Embedding工作流中,onehot编码-1组件先对全量数据进行One-Hot编码,再将生成的编码模型输入至onehot编码-2和onehot编码-3组件。
②
生成FM模型。您可以单击该组件,在右侧的参数设置页签,查看系统已配置的默认参数。其中维度(默认值为1,1,10)的第三个参数(默认值中的10)表示生成的Embedding维度。
③
生成User特征编码。该组件的输入(选择二值化列)为userid、gender及age,附加列为userid。
④
生成Item特征编码。该组件的输入(选择二值化列)为itemid、price及size,附加列为itemid。
⑤
提取Item-Embedding。该组件的参数含义如下:
-
Embedding向量的id列名:FM训练中的模型feature_id。
-
Embedding向量列名:FM训练中的模型feature_weights。
-
权重向量列名:One-Hot编码对应的稀疏化数据列。
-
输出结果列名:输出的Embedding字段名。
-
-
运行工作流并查看输出结果。
-
单击画布上方的
按钮。 -
工作流运行结束后,右键单击画布中的Embedding提取-1,在快捷菜单,单击,即可查看User特征向量。User特征向量表包含三列:userid(用户ID)、kv(键值对特征,格式如
10:1,7:1,37:1)和 embedding(高维嵌入向量,由空格分隔的浮点数序列组成)。 -
右键单击画布中的Embedding提取-2,在快捷菜单,单击,即可查看Item特征向量。输出的Item特征向量表包含三列:itemid(物品标识,如A~J)、kv(稀疏特征编码,格式如
31;1,11;1,27:1)和embedding(多维浮点向量)。
-