全部產品
Search
文件中心

Platform For AI:swing訓練

更新時間:Jul 13, 2024

swing是一種Item召回演算法,您可以使用swing訓練組件基於User-Item-User原理衡量Item的相似性。本文為您介紹swing訓練的參數配置。

使用限制

支援啟動並執行計算資源為MaxCompute和Flink。

組件配置

您可以通過以下任意一種方式,配置swing訓練組件參數。

方式一:可視化方式

在Designer工作流程頁面配置組件參數。

頁簽

參數名稱

描述

欄位設定

Item列列名

Item列的名稱。

User列列名

User列的名稱。

參數設定

alpha參數

alpha參數,預設為1.0。

item參與計算的人數最大值

Item參與計算的人數最大值,預設為1000。

說明

當item出現的次數大於該值時,演算法會從所有使用者中隨機抽取的使用者數量。

使用者互動的最大Item數量

使用者互動的Item的最大數量,預設為1000。

說明

如果使用者參與互動的Item的數量大於該值,則該使用者不參與計算過程。

使用者互動的最小Item數量

使用者互動的Item的最小數量,預設為10。

說明

如果使用者參與互動的Item的數量小於該值,則該使用者不參與計算過程。

結果是否歸一化

結果是否歸一化。

使用者alpha參數

使用者的alpha參數,預設為5.0。

使用者beta參數

使用者的beta參數,預設為-0.35。

執行調優

節點個數

節點個數,與參數單個節點記憶體大小配對使用,正整數。範圍[1, 9999]。

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

單個節點記憶體大小,單位MB,正整數。範圍[1024, 64*1024]。

方式二:Python代碼方式

使用PyAlink指令碼組件配置該組件參數。您可以使用PyAlink指令碼組件進行Python代碼調用,詳情請參見PyAlink指令碼。

參數名稱

是否必選

描述

預設值

itemCol

Item列的列名。

userCol

User列的列名。

alpha

alpha參數,是一個平滑因子。

1.0

userAlpha

User的alpha參數。

說明

用於計算使用者權重:user weight = 1.0/(userAlpha + userClickCount)^userBeta。

5.0

userBeta

User的Beta參數。

說明

用於計算使用者權重:user weight = 1.0/(userAlpha + userClickCount)^userBeta。

-0.35

resultNormalize

是否歸一化。

false

maxItemNumber

Item參與計算的人數最大值。

說明

如果Item出現的次數大於maxItemNumber,則演算法會從所有使用者中隨機抽取maxItemNumber個使用者。

1000

minUserItems

User互動的Item的最小數量。

說明

如果使用者參與互動的Item的數量小於minUserItems,則該使用者不參與計算過程。

10

maxUserItems

User互動的Item的最大數量。

說明

如果使用者參與互動的Item的數量大於maxUserItems,則該使用者不參與計算過程。

1000

Python代碼方式的使用樣本如下。

df_data = pd.DataFrame([
    ["a1", "11L", 2.2],
    ["a1", "12L", 2.0],
    ["a2", "11L", 2.0],
    ["a2", "12L", 2.0],
    ["a3", "12L", 2.0],
    ["a3", "13L", 2.0],
    ["a4", "13L", 2.0],
    ["a4", "14L", 2.0],
    ["a5", "14L", 2.0],
    ["a5", "15L", 2.0],
    ["a6", "15L", 2.0],
    ["a6", "16L", 2.0],
])

data = BatchOperator.fromDataframe(df_data, schemaStr='user string, item string, rating double')


model = SwingTrainBatchOp()\
    .setUserCol("user")\
    .setItemCol("item")\
    .setMinUserItems(1)\
    .linkFrom(data)

model.print()

predictor = SwingRecommBatchOp()\
    .setItemCol("item")\
    .setRecommCol("prediction_result")

predictor.linkFrom(model, data).print()

使用樣本

您可以使用swing訓練組件構建如下工作流程。使用樣本本樣本中,您需要按照以下流程配置組件:

  1. 準備訓練資料集測試資料集

  2. 建立兩個MaxCompute表,表1包含userid、itemid欄位,表2包含itemid欄位,欄位類型均為STRING。通過MaxCompute用戶端的Tunnel命令將訓練資料集和測試資料集分別上傳至MaxCompute的表1和表2,再將讀資料表-1讀資料表-2的表名參數分別配置為表1和表2。關於MaxCompute用戶端的安裝及配置請參見使用本地用戶端(odpscmd)串連,關於Tunnel命令詳情請參見Tunnel命令

  3. 將訓練資料集接入swing訓練組件,並配置具體參數,詳情請參見上文的可視化配置組件參數

  4. 將測試資料集和模型接入swing推薦組件,進行模型預測。