本文为您介绍如何使用协同过滤算法实现商品推荐。
背景信息
数据挖掘的一个经典案例就是尿布与啤酒的案例。尿布与啤酒看似毫不相关的商品,当超市将其摆放至相邻货架时,会大幅度提高二者销量。您可以通过数据挖掘中的协同过滤算法挖掘商品之间的隐含关系,从而提高销售额。
协同过滤算法是一种基于关联规则的算法。以购物行为为例,如果用户甲和用户乙都购买了商品A和商品B,则可以假定用户甲和用户乙的购物品味相似。当用户甲购买了商品C,而用户乙未购买时,可以将商品C推荐给用户乙,这就是经典的User-Based,即以User的特性为关联。
该工作流首先通过用户7月份之前的购物行为数据,获取商品关联关系,然后对用户7月份之后的购买进行推荐,并评估推荐结果。例如,用户甲在7月份之前购买了商品A,且商品A与商品B强相关,则在7月份之后将商品B推荐给用户甲,并探查该推荐是否命中。
本工作流数据为虚构数据,仅用于学习。
本工作流的相关说明:
仅针对业务场景介绍协同过滤推荐的用法,对于购物行为推荐的关键点未进行处理,例如时间序列。
仅考虑了商品的关联性,未考虑推荐商品的属性。以低频消费品的手机为例,如果用户甲在6月份购买了手机,则用户甲在7月份继续购买手机的概率较低。
建议将基于关联规则的推荐作为推荐系统的补充方法。如果需要提高推荐准确率,推荐使用机器学习算法进行模型训练。
数据集
本工作流数据由天池大赛提供,根据时间将其分为7月份之前和7月份之后的购买行为数据,具体字段如下。
字段名 | 含义 | 类型 | 描述 |
user_id | 用户编号 | STRING | 购物的用户ID。 |
item_id | 物品编号 | STRING | 被购买物品的编号。 |
active_type | 购物行为 | STRING |
|
active_date | 购物时间 | STRING | 购物发生的时间。 |
工作流的原始数据示例如下。
使用协同过滤实现商品推荐
进入Designer页面。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。
在工作空间页面的左侧导航栏选择 ,进入Designer页面。
构建工作流。
在Designer页面,单击预置模板页签。
在模板列表的推荐算法-商品推荐区域,单击创建。
在新建工作流对话框,配置参数(可以全部使用默认参数)。
其中:工作流数据存储配置为OSS Bucket路径,用于存储工作流运行中产出的临时数据和模型。
单击确定。
您需要等待大约十秒钟,工作流可以创建成功。
在工作流列表,选择推荐算法-商品推荐工作流,单击进入工作流。
系统根据预置的模板,自动构建工作流,如下图所示。
区域
描述
①
根据关联规则生成推荐列表。将7月份之前的购物行为作为数据源,先通过SQL脚本获取用户购买行为数据,再使用协同过滤组件计算与每个Item最相近的Item,从而分析得到每个User可能同时购买的多个商品。
工作流运行结束后,您可以右键单击协同过滤etrec,在快捷菜单,单击
,查看商品关联性,如下图所示。其中:itemid:表示目标商品。
similarity:半角冒号(:)左侧的数据表示与目标商品关联性高的商品,半角冒号(:)右侧的数据表示两个商品的关联性概率。
②
七月之后的真实购物行为。该工作流使用较简单的推荐规则,例如用户甲在7月份之前购买了商品A,且商品A与商品B强相关,则在7月份之后将商品B推荐给用户甲。
③
统计推荐数和命中数。全表统计-1展示根据7月份之前的购物行为生成的推荐列表,全表统计-2展示命中的推荐。
运行工作流并查看输出结果。
单击画布上方的。
工作流运行结束后,右键单击画布中的全表统计-1,在快捷菜单,单击 ,即可查看生成的推荐列表。
右键单击画布中的全表统计-2,在快捷菜单,单击查看数据>全表统计输出,即可查看命中的推荐。
更多关于全表统计各字段的详细说明,请参见输出格式。