文档

协同过滤etrec

更新时间:

etrec是基于item的协同过滤算法,输入为两列,输出为item之间的相似度TopN。

组件配置

您可以使用以下任意一种方式,配置协同过滤etrec组件参数。

方式一:可视化方式

Designer工作流页面配置组件参数。

页签

参数

描述

IO/字段设置

user列名

用户列名。

item列名

物品列名。

输出表中item之间的分隔符

配置输出表中物品之间的分隔符,默认分隔符为空格。

输出表中KV之间的分隔符

配置输出表中键值对(KV)之间的分隔符,默认为半角冒号(:),不支持使用空格。

参数设置

相似度类型

支持wbcosineasymcosinejaccard类型。

TopN

输出结果中最多保留的相似物品数量。

计算行为

如果同一用户的某个物品出现多次时,payload进行的计算行为。系统支持addmulminmax行为。

说明

该参数即将下线,目前对训练效果无影响。

最小物品值

如果某useritem数小于该值,则忽略该user的行为。

最大物品值

如果某useritem数大于该值,则忽略该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。

默认自动分配

示例

  1. 使用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

  2. 使用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";
  3. 查看结果输出表etrec_test_result

    itemid

    similarity

    0

    1:1

    1

    0:1