开发者学堂课程【场景实践 - 搭建个性化推荐引擎系统:实践:搭建电商推荐系统】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/522/detail/7055
实践:搭建电商推荐系统
内容介绍:
一、实验场景介绍
二、具体数据集
三、数据预处理
四、操作步骤
五、新的需求
一、实验场景介绍
某图书类电商网站采集了大量用户在该网站浏览图书的日志,希望通过对日志进行分析,给用户提供有效的图书推荐,将用户可能感兴趣的图书呈现在用户的图书浏览页,提升用户在该网站的粘性和购买转化率。
期望达到的效果如下:
第一,当用户进入网站首页时,推荐 TA 可能喜欢的图书,结合该用户的历史行为信息进行推荐﹔
第二,当用户进入详情页时,根据当前页面展现的图书信息,结合用户的历史行为信息进行推荐;
该电商网站的数据团队开始构思实现方案︰
1、考虑推荐方案选型
2、考虑推荐引擎产品选型
3、考虑推荐位的设计经过调研讨论,数据团队做出如下选择:
1、选择基于用户和物品的协同过滤算法
2、选择阿里的推荐引擎产品 RecEng
3、首页基于用户相似度进行推荐,详情页基于物品相似度进行推荐
二、具体数据集
电商数据团队加工了三个数据集
1.用户数据集
该数据集有943行,有943个用户的数据
字段包括︰用户 ID、年龄、性别、职业、邮编
2.图书数据集
该数据集有229行,有229本图书的数据
字段包括︰图书 ID、图书名称、作者、出版社、出版月份
3.浏览日志统计数据集
该数据集有73578行
字段包括:用户 ID、图书 ID、浏览次数、最近一次浏览时间
三、数据预处理
1.在 MaxCompute 中创建用户表、图书表、浏览日志统计表。并将实验数据上传到三个表中。
2.按照推荐引擎数据模型的要求,使用 SQL 等将用户表、图书表、浏览日志统计表中的数据插入到推荐引擎所需要的表中去,也就是获取推荐引擎的7张表。表明可以自定义,字段和字段类型需要和推荐引擎算法保持一致。
四、操作步骤
1.新建业务
然后整理好相关的数据集之后,就可以通过阿里云的推荐产品来进行后续的推荐操作,可以在阿里云的管理控制台大数据数加菜单里面找到推荐引擎菜单,然后进入到推荐引擎界面,在推荐引擎登录界面,点击自然资源管理添加云计算资源填写属性项,添加 max compute 资源,其实也就是把推荐引擎与 max compute 里面建的数据关联起来,然后再点击相关的新建业务,根据系统提示的内容创建一个图书推荐业务,创建完成之后可以在首页看到新建的图书推荐业务。
2.数据设置
新建业务完成之后,系统会提示为新建业务添加数据,其实就是把在 max compute 的中新建的模型表与推荐引擎的数据表模型建立一对一的映射关系,本次实验在 max compute 中新建了四张表,除了三张必须表,也就是用户表,物品表,用户行为表之外还创建了用户属性维度表。对于物品属性维度表没有创建对于系统默认从物品表中查询出所有可推荐的物品,表映射关系形成之后点击评估按钮,选择对应的时间,这个时间主要是依照在 ODPS 数据保存的是哪个时间分析上的数据。然后进行数据局质量评估,系统运转一段时间之后完成评估,这时就可以查看最终的数据及评估结果,评估结果包括数据的基础质量、内容丰富度、覆盖度、算法适应度、波动性效果指标适用度和评估得分,以及一些相关的改进意见,评估成功之后,提供的数据可以用来做业务推荐了。
3.场景设置-新建场景
数据可以做业务推荐,进入到下一步点击页面左侧的测试菜单,点击新建场景按钮,新建一个图书推荐场景
点击新建的图书推荐场景,可以在右侧看到一些配置项,包括指标配置 API 参数配置、算法策略,在线流程、在线测试、日志查看几个模块,可以在 API 参数设置模块中选择用户 ID 和物品 ID 作为输入参数,也就是说最终的推荐是通过这两个参数输入值来进行计算反馈,算法策略选择是基于 item CF 的协同过滤,行为权重设定为 view:1.0。
4.场景设置-离线计算
参数配置成功之后,点击计算,启动基于输入配置的模型计算,时间选择2017-08-01,因为初始化的数据放在了20170801的分区中。等一段时间之后计算完成场景的状态会为计算完成状态。
5.测试推荐业务场景
点击在线流程,对在线数据处理流程进行配置,选中基于物品相似度产生的相似物品列表和用户对物品的推荐候选集,权重各占50%。点击在线测试,可以通过输入请求参数获取返回推荐结果集。
若用户停留在图书网站首页,通过输入用户 ID 返回推荐结果
若用户停留在 ltemld=29的详情页,通过输入用户 ID 和 ltemld,返回推荐结果。
还是推荐测试界面,大家可以看到请求参数里面有 userid 和 itemdid 这两个参数,其实对应的就是用户唯一编码、物品唯一编码,这里面可能就是一个图书唯一编码,比如说一个用户刚登录页面首页还没有访问数据的时候,可以传入的参数只有用户编码唯一参数,物品编码参数就不传。点击执行按钮之后就能看到针对用户可推荐的数据哪些,这个场景就是左侧的那个结构上,然后右侧的场景是这一个用户开始访问相关数据的页面,可以传入参数变成了用户编码加上物品的编码,这样这两个参数写入之后,点击执行按钮,就能看到针对用户在访问这本书的时候有哪些数据可以推荐。
6.上线业务场景
点击上线,将业务场景上线。
若沿用当前线上数据,则选择继续使用当前线上离线计算的推荐结果数据
若沿用测试环境数据,则选择使用测试环境离线计算的推荐结果数据覆盖当前的线上数据
本次实验选择使用测试环境离线计算的推荐结果数据覆盖当前的线上数据
业务场景上线以后,可以做相关的测试,比如点击线上菜单,选中新建的图书推荐场景,选择屏幕右侧的 API 调试进行线上的 API 调试
这种只传用户编码做参数的调用方式,是实现使用 API 实现的首页推荐,也就是当用户进入首页时,通过调用 API 获取推荐结果集
这种传用户编码加物品编码做参数的调换方式是实现的,使用 API 实现书籍详情页面的页面推荐即当用户记录了详情页的时候,通过调用 API 获取推荐结果集。
五、新的需求
该电商网站新上线了一个书评的功能,用户可以在书评区对图书进行评价,并选定星级,星级由一星到五星不等。
网站运营团队希望新增一个根据书评进行图书推荐的功能,这个需求提给了数据团队。
书评数据由
用户 ID
图书 ID
评价星级
评价时间
四个字段组成
请根据本实验的用户数据集、图书数据集以及新需求提供的书评数据集搭建基于书评数据的推荐系统。
注意事项一∶
在数据预处理时,请注意用户行为表( user_behavior )的行为类型字段( Bhv_type )
在本实验中该字段的值设定为 view。书评项目请考虑设定为 grade。
view:物品曝光
click :用户点击物品
collect :用户收藏了某个物品
uncollect :用户取消收藏某个物品
search_click :用户点击搜索结果中的物品
comment :用户对物品的评论
share:分享
like:点赞
dislike :点衰
grade :评分
consume :消费
注意事项二:
在算法配置的参数设置时,用户计算用户偏好的有效行为及权重项︰
在本实验中该字段的值设定为 view:1.0。书评项目请考虑设定为 grade:1.0。