swing训练

swing是一种Item召回算法,您可以使用swing训练组件基于User-Item-User原理衡量Item的相似性。本文为您介绍swing训练的参数配置。

使用限制

支持运行的计算资源为MaxComputeFlink。

组件配置

您可以通过以下任意一种方式,配置swing训练组件参数。

方式一:可视化方式

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

页签

参数名称

描述

字段设置

Item列列名

Item列的名称。

User列列名

User列的名称。

参数设置

alpha参数

alpha参数,默认为1.0。

item参与计算的人数最大值

Item参与计算的人数最大值,默认为1000。

说明

item出现的次数大于该值时,算法会从所有用户中随机抽取的用户数量。

用户互动的最大Item数量

用户互动的Item的最大数量,默认为1000。

说明

如果用户参与互动的Item的数量大于该值,则该用户不参与计算过程。

用户互动的最小Item数量

用户互动的Item的最小数量,默认为10。

说明

如果用户参与互动的Item的数量小于该值,则该用户不参与计算过程。

结果是否归一化

结果是否归一化。

用户alpha参数

用户的alpha参数,默认为5.0。

用户beta参数

用户的beta参数,默认为-0.35。

执行调优

节点个数

节点个数,与参数单个节点内存大小配对使用,正整数。范围[1, 9999]。

单个节点内存大小,单位M

单个节点内存大小,单位MB,正整数。范围[1024, 64*1024]。

方式二:Python代码方式

使用PyAlink脚本组件配置该组件参数。您可以使用PyAlink脚本组件进行Python代码调用,详情请参见PyAlink脚本。

参数名称

是否必选

描述

默认值

itemCol

Item列的列名。

userCol

User列的列名。

alpha

alpha参数,是一个平滑因子。

1.0

userAlpha

Useralpha参数。

说明

用于计算用户权重:user weight = 1.0/(userAlpha + userClickCount)^userBeta。

5.0

userBeta

UserBeta参数。

说明

用于计算用户权重:user weight = 1.0/(userAlpha + userClickCount)^userBeta。

-0.35

resultNormalize

是否归一化。

false

maxItemNumber

Item参与计算的人数最大值。

说明

如果Item出现的次数大于maxItemNumber,则算法会从所有用户中随机抽取maxItemNumber个用户。

1000

minUserItems

User互动的Item的最小数量。

说明

如果用户参与互动的Item的数量小于minUserItems,则该用户不参与计算过程。

10

maxUserItems

User互动的Item的最大数量。

说明

如果用户参与互动的Item的数量大于maxUserItems,则该用户不参与计算过程。

1000

Python代码方式的使用示例如下。

df_data = pd.DataFrame([
    ["a1", "11L", 2.2],
    ["a1", "12L", 2.0],
    ["a2", "11L", 2.0],
    ["a2", "12L", 2.0],
    ["a3", "12L", 2.0],
    ["a3", "13L", 2.0],
    ["a4", "13L", 2.0],
    ["a4", "14L", 2.0],
    ["a5", "14L", 2.0],
    ["a5", "15L", 2.0],
    ["a6", "15L", 2.0],
    ["a6", "16L", 2.0],
])

data = BatchOperator.fromDataframe(df_data, schemaStr='user string, item string, rating double')


model = SwingTrainBatchOp()\
    .setUserCol("user")\
    .setItemCol("item")\
    .setMinUserItems(1)\
    .linkFrom(data)

model.print()

predictor = SwingRecommBatchOp()\
    .setItemCol("item")\
    .setRecommCol("prediction_result")

predictor.linkFrom(model, data).print()

使用示例

您可以使用swing训练组件构建如下工作流。使用示例本示例中,您需要按照以下流程配置组件:

  1. 准备训练数据集测试数据集

  2. 创建两个MaxCompute表,表1包含userid、itemid字段,表2包含itemid字段,字段类型均为STRING。通过MaxCompute客户端的Tunnel命令将训练数据集和测试数据集分别上传至MaxCompute的表1和表2,再将读数据表-1读数据表-2的表名参数分别配置为表1和表2。关于MaxCompute客户端的安装及配置请参见使用本地客户端(odpscmd)连接,关于Tunnel命令详情请参见Tunnel命令

  3. 将训练数据集接入swing训练组件,并配置具体参数,详情请参见上文的可视化配置组件参数

  4. 将测试数据集和模型接入swing推荐组件,进行模型预测。