本文为您介绍PAI-Studio提供的推荐算法,包括协同过滤etrec、FM训练、FM预测及ALS矩阵分解。
协同过滤etrec
etrec是基于item的协同过滤算法,PAI-Studio支持通过可视化或PAI命令的方式,配置该组件参数:
- 可视化方式
页签 参数 描述 字段设置 用户列名 user列名。 物品列名 item列名。 参数设置 相似度类型 支持wbcosine、asymcosine及jaccard类型。 TopN 输出结果中最多保留的相似物品数量。 计算行为 如果同一user出现相同的item,则payload进行的计算行为。系统支持add、mul、min及max行为。 说明 该参数即将下线,目前对训练效果无影响。最小物品值 如果某user的item数小于该值,则忽略该user的行为。 最大物品值 如果某user的item数大于该值,则忽略该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。 默认自动分配
协同过滤etrec示例
- 使用SQL语句,生成训练数据。
生成的训练数据表etrec_test_input如下。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;
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
FM算法
FM(Factorization Machine)算法兼顾特征之间的相互作用,是一种非线性模型,适用于电商、广告及直播的推荐场景。PAI-Studio提供的FM算法模板包括FM训练和FM预测组件,您可以在PAI-Studio控制台首页的FM算法实现推荐模型区域,单击从模板创建,快速构建FM实验。
PAI-Studio支持通过可视化或PAI命令的方式,配置该组件参数:
- 可视化方式
组件 页签 参数 描述 FM训练 字段设置 特征列 数据格式为key:value,多个特征以英文逗号(,)分隔。 标签列 输入列。仅支持DOUBLE类型。 参数设置 任务类型 支持regression及binary_classification类型。 迭代数 无。 正则化系数 使用英文逗号(,)分隔的三个浮点数,分别表示0阶项、1阶项及2阶项的正则化系数。 学习率 如果训练发散,则降低该参数取值。 参数初始化标准差 无。 维度 使用英文逗号(,)分隔的三个正整数,分别表示0阶项、1阶项、2阶项长度。 数据块大小 性能参数。 输出表生命周期 无。 执行调优 节点个数 与单个节点内存大小配合使用。取值范围为1~9999。 单个节点内存大小 与节点个数配合使用。取值范围为1024 MB~64*1024 MB。 FM预测 参数设置 预测结果列名 无。 预测得分列名 无。 详细预测信息列名 无。 保持列 保存至输出结果表的列。 执行调优 节点个数 与单个节点内存大小配合使用。取值范围为1~9999。 单个节点内存大小 与节点个数配合使用。取值范围为1024 MB~64*1024 MB。 - PAI命令方式
组件 参数 是否必选 描述 默认值 FM训练 tensorColName 是 特征列名称。 数据格式为key:value,多个特征使用英文逗号(,)分隔。例如1:1.0,3:1.0。 无 labelColName 是 label列名。数据必须是数值类型。如果task取值为binary_classification,则label只能取0或1。 无 task 是 任务类型。取值范围为{regression,binary_classification}。 regression numEpochs 否 迭代数。 10 dim 否 使用英文逗号(,)分隔的三个整数,分别表示0次项、线性项及二次项的长度。 1,1,10 learnRate 否 学习率。 说明 如果训练发散,则降低学习率。0.01 lambda 否 使用英文逗号(,)分隔的三个浮点数,分别表示0次项、线性项及二次项的正则化系数。 0.01,0.01,0.01 initStdev 否 参数初始化标准差。 0.05 FM预测 predResultColName 否 预测结果列名。 prediction_result predScoreColName 否 预测得分列名。 prediction_score predDetailColName 否 详细预测信息列名。 prediction_detail keepColNames 否 保存至输出结果表的列。 所有列
例如,使用如下数据作为FM算法模板的输入数据,训练生成的模型AUC约为0.97。



ALS矩阵分解
交替最小二乘ALS(Alternating Least Squares)算法的原理是对稀疏矩阵进行模型分解,评估缺失项的值,从而得到基本的训练模型。在协同过滤分类方面,ALS算法属于User-Item CF(Collaborative Filtering),兼顾User和Item项,也称为混合CF。
PAI-Studio提供ALS算法模板,您可以在PAI-Studio控制台首页的ALS实现音乐推荐区域,单击从模板创建,快速构建ALS实验。因为系统不支持使用PAI命令配置ALS矩阵分解组件的参数,所以只能通过可视化方式配置该组件参数。
页签 | 参数 | 描述 |
---|---|---|
字段设置 | user列名 | 输入数据源中,用户ID列的名称。该列数据必须是BIGINT类型。 |
item列名 | 输入数据源中,item项的列名。该列数据必须是BIGINT类型。 | |
打分列名 | 输入数据源中,用户对item项的打分所在的列名。该列数据必须是数值型。 | |
参数设置 | 因子数 | 默认值为10,取值范围为(0,+∞)。 |
迭代数 | 默认值为10,取值范围为(0,+∞)。 | |
正则化系数 | 默认值为0.1,取值范围为(0,+∞)。 | |
是否采用隐式偏好模型 | 隐式偏好模型开关。 | |
隐式偏好系数 | 默认值为40,取值范围为(0,+∞)。 | |
执行调优 | 节点个数 | 取值范围为1~9999。 |
单个节点的内存大小 | 取值范围为1024 MB~64*1024 MB。 |
例如,使用如下数据作为ALS算法模板的输入数据,可以获得输出的X矩阵和Y矩阵:
- 输入数据源
- 输出的X矩阵
- 输出的Y矩阵
如果预测user1对994556636项的评分,则将如下两个向量相乘即可。
#向量x。
[-0.14220297,0.8327106,0.5352268,0.6336995,1.2326205,0.7112976,0.9794858,0.8489773,0.330319,0.7426911]
#向量y。
[0.71699333,0.5847747,0.96564907,0.36637592,0.77271074,0.52454436,0.69028413,0.2341857,0.73444265,0.8352135]
在文档使用中是否遇到以下问题
更多建议
匿名提交