FM(Factorization Machine)演算法兼顧特徵之間的相互作用,是一種非線性模型, 適用於電商、廣告及直播等推薦情境。Designer預置了FM演算法模板,便於您快速構建基於Alink架構的FM推薦模型,快速實現推薦系統並應用於上述情境。 本文為您介紹如何通過Designer預置的FM演算法模板,快速構建推薦模型。
前提條件
已建立工作空間,詳情請參見建立工作空間。
已將MaxCompute資源關聯到工作空間,詳情請參見管理工作空間。
已開通Flink全託管資源,並將Flink資源關聯到工作空間。具體操作,請參見Flink全託管資源管理。
操作步驟
進入Designer頁面。
登入PAI控制台。
在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應的工作空間。
在工作空間頁面的左側導覽列選擇 ,進入Designer頁面。
構建工作流程。
在可視化建模(Designer)頁面,單擊預置模板頁簽。
在預置模板頁面中,單擊基於Alink架構的FM推薦下的建立。
在建立工作流程對話方塊,配置參數(可以全部使用預設參數)。
其中:工作流程資料存放區配置為OSS Bucket路徑,用於儲存工作流程運行中產出的臨時資料和模型。
單擊確定。
您需要等待大約十秒鐘,工作流程可以建立成功。
在工作流程列表頁簽,選擇基於Alink架構的FM推薦工作流程,單擊進入工作流程。
在工作流程頁面,建立成功的工作流程範本如下圖所示。
上圖工作流程範本提供了以下兩種方式來調用Alink演算法進行FM訓練和預測。
方式一:使用封裝好的FM訓練組件和FM預測組件進行訓練和預測。
FM訓練組件和FM預測組件屬於Alink架構的演算法組件,在組件左上方使用紫色的小點進行標識。Alink架構的演算法組件支援合并運行,具體的使用方法及優劣勢,詳情請參見進階功能:Alink組件成組執行。
方式二:使用PyAlink進行FM訓練和預測。
使用自訂演算法PyAlink組件通過Python代碼實現和方式一相同的功能。
配置FM訓練-1組件參數。
單擊工作流程中的FM訓練-1組件。
在右側的欄位設定頁簽,配置參數。
參數
描述
特徵列
特徵資料的格式為key:value,多個特徵以半形逗號(,)分隔。
標籤列
僅支援DOUBLE類型。
Designer提供的FM演算法僅支援LibSVM格式資料(針對其他格式資料,可以通過one-hot編碼組件將其轉化為LibSVM格式資料),且輸入資料必須包括特徵列和標籤列,如下圖所示。
在右側的參數設定和執行調優頁簽,配置訓練參數。
針對1.2億條樣本資料、130萬特徵資料情境,建議參考如下表格進行參數配置,其他參數使用預設值。您可以結合實際資料量級,適當地調整訓練參數。
頁簽
參數
描述
參數設定
學習率
建議配置為0.005。如果訓練發散,則適當減小該參數值。
維度
建議配置為
1,1,16
。資料區塊大小
如果特徵資料量小於200萬,則建議配置為1000000。
如果特徵資料量大於200萬,則無需手動設定。
執行調優
節點個數
建議配置為32。如果資料量超大,則適當增大該參數值。
單個節點記憶體大小,單位M
建議配置為16384 MB。
PyAlink-FM訓練組件和PyAlink-FM預測組件的代碼配置,具體如下所示。
PyAlink-FM訓練組件代碼配置。
from pyalink.alink import * def main(sources, sinks, parameter): print('start') # 演算法調用方式1。 # train = HugeFmTrainBatchOp().setVectorCol('features').setLabelCol('label').linkFrom(sources[0]) # 演算法調用方式2。 train = HugeFmTrainBatchOp( vectorCol='features', labelCol='label', task='binary_classification', numEpochs=10) # 從輸入連接埠0擷取訓練資料,訓練完的模型通過輸出連接埠0向下傳遞。 sources[0].link(train).link(sinks[0]) BatchOperator.execute() print('end')
PyAlink-FM預測組件代碼配置。
from pyalink.alink import * def main(sources, sinks, parameter): predictor = HugeFmPredictBatchOp().setPredictionCol("prediction_result")\ .setPredictionDetailCol("prediction_detail").setReservedCols(["label"]) output = predictor.linkFrom(sources[0], sources[1]) # 將預測結果通過第一個輸出port向下遊透傳。 output.link(sinks[0]) BatchOperator.execute() print('predict end')
設定演算法執行使用的計算資源。
單擊空白畫布,在右側的工作流程屬性頁簽,選擇Alink/FlinkML演算法預設執行資源為Flink。
在畫布中,分別單擊PyAlink-FM訓練和PyAlink-FM預測組件,在右側的執行調優頁簽,修改以下兩個參數:
選擇作業的運行模式:選擇Flink全託管(分布式)。
節點個數:配置為2。
在畫布左上方,單擊儲存按鈕。
單擊畫布上方的運行按鈕,運行工作流程。
任務運行完成後,按右鍵工作流程中的二分類評估-1組件,在捷徑功能表,單擊可視化分析。
基於預置模板案例的資料,Designer FM演算法產生模型的AUC值約為0.92。
使用方式一產生的評估圖表。
使用方式二產生的評估圖表。
相關文檔
關於演算法組件更詳細的內容介紹,請參見: