本文為您介紹如何使用二部圖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。