FM(Factorization Machine)算法兼顾特征之间的相互作用,是一种非线性模型, 适用于电商、广告及直播等推荐场景。PAI-Designer使用FM训练、FM预测及评估组件预置了FM算法模板,您可以使用该算法模板构建基于Alink框架的FM推荐模型。 本文为您介绍如何通过PAI-Designer预置的FM算法模板,快速构建推荐模型。

操作步骤

  1. 进入PAI-Designer页面。
    1. 登录PAI控制台
    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
    3. 在工作空间页面的左侧导航栏选择模型开发和训练 > 可视化建模(PAI-Designer),进入Designer页面。
  2. 构建实验。
    1. 在PAI-Designer页面,单击工作流模板页签。
    2. 工作流模板列表的基于Alink框架的FM推荐区域,单击创建
      创建模板
    3. 新建模板对话框,输入名称描述
    4. 单击确定
      您需要等待大约十秒钟,工作流可以创建成功。
    5. 在工作流列表,选择基于Alink框架的FM推荐工作流,单击进入工作流
      在工作流页面,创建成功的工作流模板如下图所示。实验
      上图工作流模板提供了以下两种方式来调用Alink算法进行FM训练和预测。
      • 方式一:使用封装好的FM训练组件和FM预测组件进行训练和预测。

        FM训练组件和FM预测组件属于Alink框架的算法组件,在组件左上角使用紫色的小点进行标识。Alink框架的算法组件支持合并运行,具体的使用方法及优劣势,详情请参见Alink组件成组执行

      • 方式二:使用PyAlink进行FM训练和预测。

        使用自定义算法PyAlink组件通过Python代码实现和方式一相同的功能。关于PyAlink组件支持的Operator的更多内容,详情请参见Alink介绍

  3. 配置FM训练-1组件参数。
    1. 单击工作流中的FM训练-1组件。
    2. 在右侧的字段设置页签,配置参数。
      参数 描述
      特征列 特征数据的格式为key:value,多个特征以英文逗号(,)分隔。
      标签列 仅支持DOUBLE类型。
      PAI-Designer提供的FM算法仅支持LibSVM格式数据(针对其他格式数据,可以通过one-hot编码组件将其转化为LibSVM格式数据,详情请参见one-hot编码),且输入数据必须包括特征列和标签列,如下图所示。输入数据
    3. 在右侧的参数设置执行调优页签,配置训练参数。
      针对1.2亿条样本数据、130万特征数据场景,建议参考如下表格进行参数配置,其他参数使用默认值。您可以结合实际数据量级,适当地调整训练参数。
      页签 参数 描述
      参数设置 学习率 建议配置为0.005。如果训练发散,则适当减小该参数值。
      维度 建议配置为1,1,16。
      数据块大小
      • 如果特征数据量小于200万,则建议配置为1000000。
      • 如果特征数据量大于200万,则无需手动配置。
      执行调优 节点个数 建议配置为32。如果数据量超大,则适当增大该参数值。
      单个节点内存大小,单位M 建议配置为16384 MB。
  4. PyAlink-FM训练组件和PyAlink-FM预测组件的代码配置,具体如下所示。
    • PyAlink-FM训练组件代码配置。训练组件代码设置
      from pyalink.alink import *
      
      def main(sources, sinks, parameter):
          print('start')
          # 算法调用方式1。
          # train = HugeFmTrainBatchOp().setVectorCol('features').setLabelCol('label').linkFrom(sources[0])
          # 算法调用方式2。
          train = HugeFmTrainBatchOp(
              vectorCol='features',
              labelCol='label',
              task='binary_classification',
              numEpochs=10)
          # 从输入端口0获取训练数据,训练完的模型通过输出端口0向下传递。
          sources[0].link(train).link(sinks[0])
          BatchOperator.execute()
          print('end')
                                  
    • PyAlink-FM预测组件代码配置。FM预测组件
      from pyalink.alink import *
      
      def main(sources, sinks, parameter):
          predictor = HugeFmPredictBatchOp().setPredictionCol("prediction_result")\
          .setPredictionDetailCol("prediction_detail").setReservedCols(["label"])
          output = predictor.linkFrom(sources[0], sources[1])
          # 将预测结果通过第一个输出port向下游透传。
          output.link(sinks[0])
          BatchOperator.execute()
          print('predict end')
                                  
  5. 单击画布上方的运行
    运行
  6. 任务运行完成后,右键单击工作流中的二分类评估组件,在快捷菜单,单击可视化分析
    基于预置模板案例的数据,PAI-Designer FM算法生成模型的AUC值约为0.92。
    • 使用方式一生成的评估图表。评估图表
    • 使用方式二生成的评估图表。评估图表