協(xié)同過濾etrec
etrec是基于item的協(xié)同過濾算法,輸入為兩列,輸出為item之間的相似度TopN。
組件配置
您可以使用以下任意一種方式,配置協(xié)同過濾etrec組件參數(shù)。
方式一:可視化方式
在Designer工作流頁面配置組件參數(shù)。
頁簽 | 參數(shù) | 描述 |
IO/字段設置 | user列名 | 用戶列名。 |
item列名 | 物品列名。 | |
輸出表中item之間的分隔符 | 配置輸出表中物品之間的分隔符,默認分隔符為空格。 | |
輸出表中KV之間的分隔符 | 配置輸出表中鍵值對(KV)之間的分隔符,默認為半角冒號(:),不支持使用空格。 | |
參數(shù)設置 | 相似度類型 | 支持wbcosine、asymcosine及jaccard類型。 |
TopN | 輸出結果中最多保留的相似物品數(shù)量。 | |
計算行為 | 如果同一用戶的某個物品出現(xiàn)多次時,payload進行的計算行為。系統(tǒng)支持add、mul、min及max行為。 重要 該參數(shù)已廢棄(不生效)。 | |
最小物品值 | 如果某user的item數(shù)小于該值,則忽略該user的行為。 | |
最大物品值 | 如果某user的item數(shù)大于該值,則忽略該user的行為。 | |
平滑因子 | 僅相似度類型為asymcosine時,該參數(shù)生效。 | |
權重系數(shù) | 僅相似度類型為asymcosine時,該參數(shù)生效。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數(shù)。您可以使用SQL腳本組件進行PAI命令調(diào)用,詳情請參見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"
-DuserColName="user"
-DitemColName="item"
參數(shù) | 是否必選 | 描述 | 默認值 |
inputTableName | 是 | 輸入表的名稱。 | 無 |
userColName | 是 | 輸入表中的user列名。 | 無 |
itemColName | 是 | 輸入表中的item列名。 | 無 |
inputTablePartitions | 否 | 輸入表中,參與訓練的分區(qū)名稱。 | 全表 |
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的權重指數(shù)。 | 1.0 |
lifecycle | 否 | 輸出結果表的生命周期。 | 1 |
coreNum | 否 | 核心數(shù)。 | 默認自動分配 |
memSizePerCore | 否 | 單個核心的內(nèi)存,單位為MB。 | 默認自動分配 |
示例
使用SQL語句,生成訓練數(shù)據(jù)。
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;
生成的訓練數(shù)據(jù)表etrec_test_input如下。
user
item
0
0
0
1
1
0
1
1
使用PAI命令提交訓練參數(shù)。
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" -DuserColName="user" -DitemColName="item";
查看結果輸出表etrec_test_result。
itemid
similarity
0
1:1
1
0:1