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