全部產品
Search
文件中心

Platform For AI:基於Alink架構的FM推薦

更新時間:Jul 13, 2024

FM(Factorization Machine)演算法兼顧特徵之間的相互作用,是一種非線性模型, 適用於電商、廣告及直播等推薦情境。Designer預置了FM演算法模板,便於您快速構建基於Alink架構的FM推薦模型,快速實現推薦系統並應用於上述情境。 本文為您介紹如何通過Designer預置的FM演算法模板,快速構建推薦模型。

前提條件

操作步驟

  1. 進入Designer頁面。

    1. 登入PAI控制台

    2. 在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應的工作空間。

    3. 在工作空間頁面的左側導覽列選擇模型開發與訓練 > 可視化建模(Designer),進入Designer頁面。

  2. 構建工作流程。

    1. 可視化建模(Designer)頁面,單擊預置模板頁簽。

    2. 在預置模板頁面中,單擊基於Alink架構的FM推薦下的建立

    3. 建立工作流程對話方塊,配置參數(可以全部使用預設參數)。

      其中:工作流程資料存放區配置為OSS Bucket路徑,用於儲存工作流程運行中產出的臨時資料和模型。

    4. 單擊確定

      您需要等待大約十秒鐘,工作流程可以建立成功。

    5. 在工作流程列表頁簽,選擇基於Alink架構的FM推薦工作流程,單擊進入工作流程

      在工作流程頁面,建立成功的工作流程範本如下圖所示。image.png

      上圖工作流程範本提供了以下兩種方式來調用Alink演算法進行FM訓練和預測。

      • 方式一:使用封裝好的FM訓練組件和FM預測組件進行訓練和預測。

        FM訓練組件和FM預測組件屬於Alink架構的演算法組件,在組件左上方使用紫色的小點進行標識。Alink架構的演算法組件支援合并運行,具體的使用方法及優劣勢,詳情請參見進階功能:Alink組件成組執行

      • 方式二:使用PyAlink進行FM訓練和預測。

        使用自訂演算法PyAlink組件通過Python代碼實現和方式一相同的功能。

  3. 配置FM訓練-1組件參數。

    1. 單擊工作流程中的FM訓練-1組件。

    2. 在右側的欄位設定頁簽,配置參數。

      參數

      描述

      特徵列

      特徵資料的格式為key:value,多個特徵以半形逗號(,)分隔。

      標籤列

      僅支援DOUBLE類型。

      Designer提供的FM演算法僅支援LibSVM格式資料(針對其他格式資料,可以通過one-hot編碼組件將其轉化為LibSVM格式資料),且輸入資料必須包括特徵列和標籤列,如下圖所示。image.png

    3. 在右側的參數設定執行調優頁簽,配置訓練參數。

      針對1.2億條樣本資料、130萬特徵資料情境,建議參考如下表格進行參數配置,其他參數使用預設值。您可以結合實際資料量級,適當地調整訓練參數。

      頁簽

      參數

      描述

      參數設定

      學習率

      建議配置為0.005。如果訓練發散,則適當減小該參數值。

      維度

      建議配置為1,1,16

      資料區塊大小

      • 如果特徵資料量小於200萬,則建議配置為1000000。

      • 如果特徵資料量大於200萬,則無需手動設定。

      執行調優

      節點個數

      建議配置為32。如果資料量超大,則適當增大該參數值。

      單個節點記憶體大小,單位M

      建議配置為16384 MB。

  4. PyAlink-FM訓練組件和PyAlink-FM預測組件的代碼配置,具體如下所示。

    • PyAlink-FM訓練組件代碼配置。image.png

      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預測組件代碼配置。image.png

      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')
                                  
  5. 設定演算法執行使用的計算資源。

    1. 單擊空白畫布,在右側的工作流程屬性頁簽,選擇Alink/FlinkML演算法預設執行資源Flink

    2. 在畫布中,分別單擊PyAlink-FM訓練PyAlink-FM預測組件,在右側的執行調優頁簽,修改以下兩個參數:

      1. 選擇作業的運行模式:選擇Flink全託管(分布式)

      2. 節點個數:配置為2。

    3. 在畫布左上方,單擊儲存按鈕。

  6. 單擊畫布上方的運行按鈕image.png,運行工作流程。

  7. 任務運行完成後,按右鍵工作流程中的二分類評估-1組件,在捷徑功能表,單擊可視化分析

    基於預置模板案例的資料,Designer FM演算法產生模型的AUC值約為0.92。

    • 使用方式一產生的評估圖表。評估圖表

    • 使用方式二產生的評估圖表。評估圖表

相關文檔

關於演算法組件更詳細的內容介紹,請參見: