【最佳实践】使用Spark MLlib实现精准推荐

举报
云上精选 发表于 2020/04/23 18:29:37 2020/04/23
【摘要】 基于Spark MLlib引擎,提供精准营销的方向和辅助决策,提升消费品转化率和商家利润,改善消费者的消费体验

消费无处不在,但每一次消费行为带给人们的感受却或好或坏。在时间成本高昂的背景下,消费者不希望花太多时间就能找到自己喜欢的事物。而快速、准确的消费品推荐,可显著降低消费者寻找的时间成本,不仅提升用户消费感受,也能提高商家的销售量。

您可以使用ModelArts平台上的Spark MLlib算法,提供精准营销的方向和辅助决策,提升消费品转化率和商家利润,改善消费者的消费体验。

开始使用如下样例前,请务必按准备工作指导完成必要操作。精准推荐样例的操作流程如下所示。

  1. 准备数据:下载数据集、示例代码,然后上传至OBS桶中。
  2. 训练模型:编写基于Spark MLlib中ALS算法的模型训练脚本,新建训练作业进行模型训练。
  3. 部署模型:得到训练好的模型文件后,新建预测作业将模型部署为在线预测服务。
  4. 预测结果:发起预测请求获取预测结果。

准备数据

ModelArts提供了用于训练的数据集和示例代码,执行如下步骤,下载数据集和示例代码,并上传至OBS中。

  1. 在gitee的ModelArts-Lab工程中,单击“克隆/下载”,然后单击“下载ZIP”,下载工程。
  2. 下载完成后,将“ModelArts-Lab-master.zip”文件解压缩,然后在“ModelArts-Lab-master\official_examples\Using_Spark_MLlib_to_Create_a_Precise_Recommendation_Application”目录中获取到训练数据集“ratings.csv”和示例代码“trainmodelsp.py” “customize_service.py”
    表1 获取的文件说明

    文件名称

    说明

    “ratings.csv”

    训练数据集。数据集的详情如表2表3所示。

    “trainmodelsp.py”

    训练脚本。示例代码是使用ALS算法编写的Python训练脚本。

    “customize_service.py”

    用户自定义的预测脚本,需与训练脚本“trainmodelsp.py”上传至相同OBS目录下。训练过程中,将被自动拷贝至相应的模型目录下。

    表2 数据源的具体字段及意义

    字段名

    含义

    类型

    描述

    attr_1

    用户ID

    Int

    消费者标识。

    attr_2

    商品ID

    Int

    消费品标识。

    attr_3

    评分

    Real

    消费者对消费品的评分(1-5)。

    表3 数据集样本数据

    attr_1

    attr_2

    attr_3

    1

    146

    5

    1

    1198

    4

    1

    611

    4

    2

    914

    3

    2

    146

    4

  3. 进入OBS管理控制台,新建桶和文件夹,分别用于存储训练数据集和示例代码。例如新建“test-modelarts”桶,并在此桶下新建“sparkml/data”“sparkml/code”文件夹。

    “sparkml/data”用于存放训练数据集“ratings.csv”“sparkml/code”用于存放示例代码“trainmodelsp.py”“customize_service.py”

  4. 将步骤2中获取的文件,上传至对应OBS路径下,即“sparkml/data”“sparkml/code”文件夹。OBS上传文件的操作指导,请参见上传文件

训练模型

  1. 在ModelArts管理控制台,进入“训练管理 > 训练作业”页面,单击左上角的“创建”
  2. 图1图2所示,参考图中示例,填写训练作业相关参数,然后单击“下一步”
    其中, “数据来源”“算法来源”准备数据上传的OBS路径及文件。 “训练输出位置”,建议新建一个OBS文件夹,用于存储训练输出的模型及其预测文件,例如 “sparkml/output”
    图1 创建训练作业-基本信息
    图2 创建训练作业-参数设置
  3. 在规格确认页面,确认信息无误后,单击“提交”
  4. “训练管理 > 训练作业”管理页面,当训练作业变为“运行成功”时,即完成了模型训练过程。如有问题,可单击作业名称,进入作业详情界面查看训练作业日志信息。

    训练作业需要花费一些时间,预计十几分钟。当训练时间超过一定时间(如1个小时),请及时手动停止,释放资源。否则会导致欠费,尤其对于使用GPU训练的模型项目。

部署模型

待训练作业运行完成后,可以将训练好的模型发布成预测服务。

  1. “模型”页面,单击左上角“导入”,进入“导入模型”页面。
  2. 图3所示,参考图片示例填写参数,然后单击“立即创建”

    其中,“选择元模型”的路径为训练作业中“训练输出位置”指定的路径。同时,系统将从选择的路径下自动匹配到训练作业生成的推理代码。

    图3 导入模型
  3. 在模型列表中,当创建的模型处于“正常”状态时,表示模型导入成功。单击模型名称左侧的小三角,打开此模型下的所有版本。在对应版本所在行,您可以在操作列单击“部署>在线服务”,将模型部署为在线服务。
  4. “部署”页面,请参考图4中的示例填写参数,然后单击“下一步”
    图4 部署
  5. “规格确认”页面,确认信息无误后的,单击“提交”
  6. 在线服务创建完成后,系统自动跳转至“部署上线>在线服务”页面。服务部署需要一定时间,耐心等待即可。当服务状态变为“运行中”时,表示服务部署成功。

预测结果

待部署模型运行完成后,可以验证发布的预测服务是否正常。

  1. “部署上线>在线服务”页面,单击服务名称进入详情页面。
  2. “预测”页签,参考图 测试服务所示样例,输入预测代码,然后单击“预测”。在右侧“返回结果”中,查看预测结果。

    预测请求代码如下所示。

    {
    "data": {
    "req_data": [
    {
    "input_1": 2,
    "input_2": 21
    }
    ]
    }
    }
    图5 测试服务

  3. “调用指南”页签,可以获取调用API接口,并使用Postman工具进行测试。
    图6 调用指南
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。