在BDOS上搭建推荐系统(Product Recommendation System)

by LINKTIME CLOUD 2018-03-02

目录


1. 摘要
2. 背景介绍
3. 简介
4. 主要步骤
    4.1 安装App
    4.2 使用已有数据训练模型
    4.3 测试模型
        4.3.1 推荐系统,为已有的用户推荐相似产品
        4.3.2 预测系统,为新用户推荐产品
    4.4 扩展功能(Enterprise 版本)
5. 测试用例下载


1. 摘要

BDOS大数据平台不仅仅只包含 Hadoop和Kafka这些传统的大数据组件, 使用 BDOS, 用户还可以快速搭建一个集成机器学习/人工智能的基础框架(例如 Spark,TensorFlow)的分布式计算平台, 快速开发 AI 应用, 并可将应用与 BDOS 大数据流水线和应用发布平台结合, 加速从研发到生产化的速度。本博客就是从这个角度出发,介绍了如何在BDOS平台上用K-measn算法实现一个推荐系统。

2. 背景介绍

推荐系统是个复杂的系统工程,依赖数据、架构、算法、人机交互等环节的有机结合,是数据挖掘技术、信息检索技术、计算统计学等悠久学科的智慧结晶,也关联到认知科学、预测理论、营销学等相关学科。
在本篇教程中,主要利用已有的数据源,通过k-means算法,训练出一套模型,通过模型可以为现有的用户推荐产品,也可以用来预测新用户的推荐产品。

3. 简介

这篇文章的示例如下,从某一个在线课程网站的数据库提取如下信息,学生id, 购买课程id,语数外分数,通过数据源,训练推荐模型,通过该模型,即可为现有学生用户推荐类似课程,如果有新用户注册,通过用户的语数外分数,推荐模型即可为该用户推荐合适的课程。

4. 主要步骤

  1. 安装app
  2. 上传数据源,选择算法,训练数据模型
  3. 测试模型
  4. 扩展功能

4.1 安装App

  1. 在[已安装应用]的[应用市场]中,选择”linktime-product-recommendation”,进行安装

  2. 进入app detail主页,如下图

  3. 点击app detail主页右上角的”运行应用程序”

  4. 继续点击”下一步”

  5. 继续点击”安装”

  6. 稍等几秒钟后

同样的,在操作记录中可查到如下记录

点击查看,如下图:

  1. 安装完毕后,进入[当前运行应用]的[官方应用]

  2. 点击应用,进入运行页面如下

查看运行实例和历史实例如下图

  1. 点击[首页],可直接进入app首页,如下图

具体的操作流程,请直接进入下一节4.2 使用已有数据训练模型

4.2 使用已有数据训练模型

  1. 为了防止数据格式错误,请下载data.txt文件作为数据源,在首页点击[创建新模型],点击上传文件,选择data.txt 文件上传,上传成功后,点击文件名,可以在右侧预览文件内容,目前只支持txt格式。之后点击下一步
    (数据源格式为学生id, 课程id, 以及学生的语文,数学,外语分数,如数据 123 tp00 Road2PKU 88 88 90 对应信息为
学生id 购买课程id 课程名称 语文分数 数学分数 外语分数
123 tp00 Road2PKU 88 88 90

  1. 选择算法k-means, 并填入 k 的值,k 需要小于数据源的条目数,此处建议填 3, 之后点击下一步
    (页面左侧为算法简介)
  2. 页面中显示为之前上传的文件信息以及算法信息,点击开始训练,后台就会对数据源用k-means算法进行训练,训练需要一段时间,点击[查看训练状态]。
  3. 查看训练的模型以及状态,如果状态为 completed, 表示训练完成

4.3 测试模型

完成步骤 2 以后,在模型列表页面,点击操作中的[测试],进入测试页面。

4.3.1 推荐系统,为已有的用户推荐相似产品

通过选择不同的userid(学生id), 即可在下方看到为该用户推荐的课程

4.3.2 预测系统,为新用户推荐产品

如果需要为新用户推荐产品,则需要输入相关参数,在本篇教程中,相关参数为语数外分数,所以需要在右侧输入框中输入88 88 88代表新用户的语数外分数分别为88,88,88,点击预测结果,即可看到为该用户推荐的课程,也可以输入其他分数进行测试。

4.4 扩展功能(Enterprise 版本)

在本篇教程中,数据源来自于上传文件,使用BDOS平台,可以安装Hadoop 和 Spark, 即可使用HDFS作为数据源,后台可以用spark提供不同的推荐算法进行模型训练。
同时BDOS平台还提供ETL工具,可以把训练模型过程封装成一个作业,每天定时运行。为用户实时推荐新产品。

5. 测试用例下载
  • 点这里
    如果对教程有任何疑问,请截图发邮件至 admin@linktime.cloud

留言

评论

${{item['author_name']}} 回复 ${{idToContentMap[item.parent] !== undefined ? idToContentMap[item.parent]['author_name'] : ''}} · ${{item.date.slice(0, 10)}} 回复

暂时还没有一条评论.