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訓練組件構建如下工作流程。本樣本中,您需要按照以下流程配置組件:
建立兩個MaxCompute表,表1包含userid、itemid欄位,表2包含itemid欄位,欄位類型均為STRING。通過MaxCompute用戶端的Tunnel命令將訓練資料集和測試資料集分別上傳至MaxCompute的表1和表2,再將讀資料表-1和讀資料表-2的表名參數分別配置為表1和表2。關於MaxCompute用戶端的安裝及配置請參見使用本地用戶端(odpscmd)串連,關於Tunnel命令詳情請參見Tunnel命令。
將訓練資料集接入swing訓練組件,並配置具體參數,詳情請參見上文的可視化配置組件參數。
將測試資料集和模型接入swing推薦組件,進行模型預測。