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

组件配置

PAI-Studio支持通过可视化或PAI命令的方式,配置该组件参数:
  • 可视化方式
    页签 参数 描述
    字段设置 用户列名 user列名。
    物品列名 item列名。
    参数设置 相似度类型 支持wbcosineasymcosinejaccard类型。
    TopN 输出结果中最多保留的相似物品数量。
    计算行为 如果同一user出现相同的item,则payload进行的计算行为。系统支持addmulminmax行为。
    说明 该参数即将下线,目前对训练效果无影响。
    最小物品值 如果某useritem数小于该值,则忽略该user的行为。
    最大物品值 如果某useritem数大于该值,则忽略该user的行为。
    平滑因子 相似度类型asymcosine时,该参数生效。
    权重系数 相似度类型asymcosine时,该参数生效。
  • PAI命令方式
    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.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
        from dual
        union all
            select
                cast(0 as string) as user,
                cast(1 as string) as item
            from dual
        union all
            select
                cast(1 as string) as user,
                cast(0 as string) as item
            from dual
        union all
            select
                cast(1 as string) as user,
                cast(1 as string) as item
            from dual
    ) 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