基于二部圖GraphSAGE算法實現(xiàn)推薦召回
本文為您介紹如何使用二部圖GraphSAGE算法,快速生成推薦召回場景中的User和Item向量。
背景信息
圖神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的熱點發(fā)展方向,PAI開源Graph-Learn框架,提供大量圖學(xué)習(xí)算法。二部圖GraphSAGE是經(jīng)典的圖神經(jīng)網(wǎng)絡(luò)算法,而GraphSAGE為二部圖場景擴展,被用于淘寶的推薦召回場景。
在二部圖場景下,可以將User和Item作為圖中的點,User-Item之間的關(guān)系(點擊或購買等)作為圖中的邊。對于User和Item,其鄰居分別按照User-Item-User-Item…及Item-User-Item-User…的Meta-Path進行采樣。
前提條件
已創(chuàng)建工作空間,詳情請參見創(chuàng)建工作空間。
已將MaxCompute資源關(guān)聯(lián)到工作空間,詳情請參見管理工作空間。
基于二部圖GraphSAGE算法實現(xiàn)推薦召回
進入Designer頁面。
登錄PAI控制臺。
在左側(cè)導(dǎo)航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應(yīng)的工作空間。
在工作空間頁面的左側(cè)導(dǎo)航欄選擇 ,進入Designer頁面。
構(gòu)建工作流。
在Designer頁面,單擊預(yù)置模板頁簽。
在模板列表,單擊推薦召回-GraphEmbedding算法下的創(chuàng)建。
在新建工作流對話框,配置參數(shù)(可以全部使用默認參數(shù))。
其中:工作流數(shù)據(jù)存儲配置為OSS Bucket路徑,用于存儲工作流運行中產(chǎn)出的臨時數(shù)據(jù)和模型。
單擊確定。
您需要等待大約十秒鐘,工作流可以創(chuàng)建成功。
在工作流列表,雙擊推薦召回-GraphEmbedding算法工作流,進入工作流。
系統(tǒng)根據(jù)預(yù)置的模板,自動構(gòu)建工作流,如下圖所示。
區(qū)域
描述
①
User&Item行為表,包括如下字段:
user:BIGINT類型,表示用戶ID。
item:BIGINT類型,表示物品ID。
weight:DOUBLE類型,表示行為。例如1表示購買,2表示收藏。
②
User特征表,包括如下字段:
user:BIGINT類型,表示用戶ID。
feature:STRING類型,表示用戶特征。每個用戶至少配置1個特征,多個特征以半角冒號(:)分隔。每個特征必須為FLOAT類型,按照連續(xù)特征進行處理。例如:
1:1:1
。
③
Item特征表,包括如下字段:
item:BIGINT類型,表示物品ID。
feature:STRING類型,表示item特征。每個item至少配置1個特征,多個特征以半角冒號(:)分隔。每個特征必須為FLOAT類型,按照連續(xù)特征進行處理。例如:
1:1:2
。
④
通過graphSage組件生成用于推薦召回場景的User向量表和Item向量表。graphSage組件參數(shù)設(shè)置說明:
user特征數(shù):User特征數(shù),對應(yīng)User特征表特征個數(shù)。
item特征數(shù):Item特征數(shù),對應(yīng)Item特征表特征個數(shù)。
epoch:訓(xùn)練的epoch數(shù)。
batch_size:訓(xùn)練的batch_size大小。
learning_rate::訓(xùn)練的學(xué)習(xí)率。
drop_out:訓(xùn)練時的dropout。
hidden_dim:模型隱層維度大小。
output_dim:最后輸出embedding的維數(shù)。
user跳躍采樣鄰居數(shù):User的每一跳鄰居數(shù)。'[10,2]'表示第一跳采樣10個鄰居,第二跳采樣2個鄰居。User多跳采樣的路徑為User-Item-User-Item...
item跳躍采樣鄰居數(shù):Item的每一跳鄰居數(shù)。Item多跳采樣的路徑為Item-User-Item-User...
負采樣數(shù):負采樣數(shù)?(?條正樣本對應(yīng)的負樣本數(shù)?),通常設(shè)為5~10。
聚合類型:鄰居聚合方式,包括'gcn', 'sum'和'mean', 'gcn'指類似GCN的聚合方式,'mean'指鄰居做平均,'sum'指鄰居求和,一般選'mean'。
是否做特征 batch normalization:是否對輸?特征做batch normalization。
是否使用同步訓(xùn)練:是否使?同步訓(xùn)練。默認使?異步訓(xùn)練。同步訓(xùn)練時epoch參數(shù)失效。在異步訓(xùn)練不收斂時可以嘗試同步訓(xùn)練。注意:同步訓(xùn)練性能相比異步訓(xùn)練要差。
最大同步訓(xùn)練步數(shù):最?訓(xùn)練步數(shù),僅在同步訓(xùn)練時?效, 此時epoch參數(shù)不再?效。可通過邊數(shù)/(worker數(shù)*batch_size) 來估計遍歷?遍邊表需要多少step來設(shè)置。
運行工作流并查看輸出結(jié)果。
單擊畫布上方的。
工作流運行結(jié)束后,右鍵單擊畫布中的graphSage,在快捷菜單中,單擊 ,即可查看生成的User Embedding。
工作流運行結(jié)束后,右鍵單擊畫布中的graphSage,在快捷菜單中,單擊 ,即可查看生成的Item Embedding。