etrec是基於item的協同過濾演算法,輸入為兩列,輸出為item之間的相似性TopN。
組件配置
您可以使用以下任意一種方式,配置協同過濾etrec組件參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數 | 描述 |
IO/欄位設定 | user列名 | 使用者列名。 |
item列名 | 物品列名。 | |
輸出表中item之間的分隔字元 | 配置輸出表中物品之間的分隔字元,預設分隔符號為空白格。 | |
輸出表中KV之間的分隔字元 | 配置輸出表中索引值對(KV)之間的分隔字元,預設為半形冒號(:),不支援使用空格。 | |
參數設定 | 相似性類型 | 支援wbcosine、asymcosine及jaccard類型。 |
TopN | 輸出結果中最多保留的相似物品數量。 | |
計算行為 | 如果同一使用者的某個物品出現多次時,payload進行的計算行為。系統支援add、mul、min及max行為。 說明 該參數即將下線,目前對訓練效果無影響。 | |
最小物品值 | 如果某user的item數小於該值,則忽略該user的行為。 | |
最大物品值 | 如果某user的item數大於該值,則忽略該user的行為。 | |
平滑因子 | 僅相似性類型為asymcosine時,該參數生效。 | |
權重係數 | 僅相似性類型為asymcosine時,該參數生效。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼。
PAI -name pai_etrec
-project algo_public
-DsimilarityType="wbcosine"
-Dweight="1"
-DminUserBehavior="2"
-Dlifecycle="28"
-DtopN="2000"
-Dalpha="0.5"
-DoutputTableName="etrec_test_result"
-DmaxUserBehavior="500"
-DinputTableName="etrec_test_input"
-Doperator="add"
-DuserColName="user"
-DitemColName="item"
參數 | 是否必選 | 描述 | 預設值 |
inputTableName | 是 | 輸入表的名稱。 | 無 |
userColName | 是 | 輸入表中的user列名。 | 無 |
itemColName | 是 | 輸入表中的item列名。 | 無 |
inputTablePartitions | 否 | 輸入表中,參與訓練的分區名稱。 | 全表 |
outputTableName | 是 | 輸出表的名稱。 | 無 |
outputTablePartition | 否 | 輸出表的Partition。 | 無 |
similarityType | 否 | 相似性類型。取值範圍為{wbcosine,asymcosine,jaccard}。 | wbcosine |
topN | 否 | 相似性最大的N個item。取值範圍為1~10000。 | 2000 |
minUserBehavior | 否 | 最小使用者行為。 | 2 |
maxUserBehavior | 否 | 最大使用者行為。 | 500 |
itemDelimiter | 否 | 輸出表中item之間的分隔字元。 | 空格 |
kvDelimiter | 否 | 輸出表中key與與value之間的分隔字元。 | 半形冒號(:) |
alpha | 否 | Asymcosine的平滑因子,範圍(0,1)。 | 0.5 |
weight | 否 | Asymcosine的權重指數。 | 1.0 |
operator | 否 | 如果同一user出現相同的item,則payload進行的計算行為。取值範圍為{add,mul,min,max}。 | add |
lifecycle | 否 | 輸出結果表的生命週期。 | 1 |
coreNum | 否 | 核心數。 | 預設自動分配 |
memSizePerCore | 否 | 單個核心的記憶體,單位為MB。 | 預設自動分配 |
樣本
使用SQL語句,產生訓練資料。
drop table if exists etrec_test_input; create table etrec_test_input as select * from ( select cast(0 as string) as user, cast(0 as string) as item union all select cast(0 as string) as user, cast(1 as string) as item union all select cast(1 as string) as user, cast(0 as string) as item union all select cast(1 as string) as user, cast(1 as string) as item ) a;
產生的訓練資料表etrec_test_input如下。
user
item
0
0
0
1
1
0
1
1
使用PAI命令提交訓練參數。
drop table if exists etrec_test_result; PAI -name pai_etrec -project algo_public -DsimilarityType="wbcosine" -Dweight="1" -DminUserBehavior="2" -Dlifecycle="28" -DtopN="2000" -Dalpha="0.5" -DoutputTableName="etrec_test_result" -DmaxUserBehavior="500" -DinputTableName="etrec_test_input" -Doperator="add" -DuserColName="user" -DitemColName="item";
查看結果輸出表etrec_test_result。
itemid
similarity
0
1:1
1
0:1