本文为您介绍如何使用二部图GraphSAGE算法,快速生成推荐召回场景中的User和Item向量。
背景信息
图神经网络是深度学习的热点发展方向,PAI开源Graph-Learn框架,提供大量图学习算法。二部图GraphSAGE是经典的图神经网络算法,而GraphSAGE为二部图场景扩展,被用于淘宝的推荐召回场景。
在二部图场景下,可以将User和Item作为图中的点,User-Item之间的关系(点击或购买等)作为图中的边。对于User和Item,其邻居分别按照User-Item-User-Item…及Item-User-Item-User…的Meta-Path进行采样。
前提条件
基于二部图GraphSAGE算法实现推荐召回
进入Designer页面。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。
在工作空间页面的左侧导航栏选择 ,进入Designer页面。
构建工作流。
在Designer页面,单击预置模板页签。
在模板列表,单击推荐召回-GraphEmbedding算法下的创建。
在新建工作流对话框,配置参数(可以全部使用默认参数)。
其中:工作流数据存储配置为OSS Bucket路径,用于存储工作流运行中产出的临时数据和模型。
单击确定。
您需要等待大约十秒钟,工作流可以创建成功。
在工作流列表,双击推荐召回-GraphEmbedding算法工作流,进入工作流。
系统根据预置的模板,自动构建工作流,如下图所示。
区域
描述
①
User&Item行为表,包括如下字段:
user:BIGINT类型,表示用户ID。
item:BIGINT类型,表示物品ID。
weight:DOUBLE类型,表示行为。例如1表示购买,2表示收藏。
②
User特征表,包括如下字段:
user:BIGINT类型,表示用户ID。
feature:STRING类型,表示用户特征。每个用户至少配置1个特征,多个特征以半角冒号(:)分隔。每个特征必须为FLOAT类型,按照连续特征进行处理。例如:
1:1:1
。
③
Item特征表,包括如下字段:
item:BIGINT类型,表示物品ID。
feature:STRING类型,表示item特征。每个item至少配置1个特征,多个特征以半角冒号(:)分隔。每个特征必须为FLOAT类型,按照连续特征进行处理。例如:
1:1:2
。
④
通过graphSage组件生成用于推荐召回场景的User向量表和Item向量表。graphSage组件参数设置说明:
user特征数:User特征数,对应User特征表特征个数。
item特征数:Item特征数,对应Item特征表特征个数。
epoch:训练的epoch数。
batch_size:训练的batch_size大小。
learning_rate::训练的学习率。
drop_out:训练时的dropout。
hidden_dim:模型隐层维度大小。
output_dim:最后输出embedding的维数。
user跳跃采样邻居数:User的每一跳邻居数。'[10,2]'表示第一跳采样10个邻居,第二跳采样2个邻居。User多跳采样的路径为User-Item-User-Item...
item跳跃采样邻居数:Item的每一跳邻居数。Item多跳采样的路径为Item-User-Item-User...
负采样数:负采样数⽬(⼀条正样本对应的负样本数⽬),通常设为5~10。
聚合类型:邻居聚合方式,包括'gcn', 'sum'和'mean', 'gcn'指类似GCN的聚合方式,'mean'指邻居做平均,'sum'指邻居求和,一般选'mean'。
是否做特征 batch normalization:是否对输⼊特征做batch normalization。
是否使用同步训练:是否使⽤同步训练。默认使⽤异步训练。同步训练时epoch参数失效。在异步训练不收敛时可以尝试同步训练。注意:同步训练性能相比异步训练要差。
最大同步训练步数:最⼤训练步数,仅在同步训练时⽣效, 此时epoch参数不再⽣效。可通过边数/(worker数*batch_size) 来估计遍历⼀遍边表需要多少step来设置。
运行工作流并查看输出结果。
单击画布上方的。
工作流运行结束后,右键单击画布中的graphSage,在快捷菜单中,单击 ,即可查看生成的User Embedding。
工作流运行结束后,右键单击画布中的graphSage,在快捷菜单中,单击 ,即可查看生成的Item Embedding。