使用协同过滤实现商品推荐

本文为您介绍如何使用协同过滤算法实现商品推荐。

背景信息

数据挖掘的一个经典案例就是尿布与啤酒的案例。尿布与啤酒看似毫不相关的商品,当超市将其摆放至相邻货架时,会大幅度提高二者销量。您可以通过数据挖掘中的协同过滤算法挖掘商品之间的隐含关系,从而提高销售额。

协同过滤算法是一种基于关联规则的算法。以购物行为为例,如果用户甲和用户乙都购买了商品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

  • 0:表示点击。

  • 1:表示购买。

  • 2:表示收藏。

  • 3:表示加入购物车。

active_date

购物时间

STRING

购物发生的时间。

工作流的原始数据示例如下。原始数据

使用协同过滤实现商品推荐

  1. 进入Designer页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。

    3. 在工作空间页面的左侧导航栏选择模型开发与训练 > 可视化建模(Designer),进入Designer页面。

  2. 构建工作流。

    1. Designer页面,单击预置模板页签。

    2. 在模板列表的推荐算法-商品推荐区域,单击创建

    3. 新建工作流对话框,配置参数(可以全部使用默认参数)。

      其中:工作流数据存储配置为OSS Bucket路径,用于存储工作流运行中产出的临时数据和模型。

    4. 单击确定

      您需要等待大约十秒钟,工作流可以创建成功。

    5. 在工作流列表,选择推荐算法-商品推荐工作流,单击进入工作流

    6. 系统根据预置的模板,自动构建工作流,如下图所示。

      协同过滤实验

      区域

      描述

      根据关联规则生成推荐列表。将7月份之前的购物行为作为数据源,先通过SQL脚本获取用户购买行为数据,再使用协同过滤组件计算与每个Item最相近的Item,从而分析得到每个User可能同时购买的多个商品。

      工作流运行结束后,您可以右键单击协同过滤etrec,在快捷菜单,单击查看数据 > 输出,查看商品关联性,如下图所示。协同过滤结果其中:

      • itemid:表示目标商品。

      • similarity:半角冒号(:)左侧的数据表示与目标商品关联性高的商品,半角冒号(:)右侧的数据表示两个商品的关联性概率。

      七月之后的真实购物行为。该工作流使用较简单的推荐规则,例如用户甲在7月份之前购买了商品A,且商品A与商品B强相关,则在7月份之后将商品B推荐给用户甲。

      统计推荐数和命中数。全表统计-1展示根据7月份之前的购物行为生成的推荐列表,全表统计-2展示命中的推荐。

  3. 运行工作流并查看输出结果。

    1. 单击画布上方的image

    2. 工作流运行结束后,右键单击画布中的全表统计-1,在快捷菜单,单击查看数据 > 全表统计输出,即可查看生成的推荐列表。

    3. 右键单击画布中的全表统计-2,在快捷菜单,单击查看数据>全表统计输出,即可查看命中的推荐。

    更多关于全表统计各字段的详细说明,请参见输出格式