(本实验选用数据为真实电商脱敏数据,仅用于学习,请勿商用)算法
数据挖掘的一个经典案例就是尿布与啤酒的例子。尿布与啤酒看似绝不相关的两种产品,可是当超市将两种产品放到相邻货架销售的时候,会大大提升二者销量。不少时候看似不相关的两种产品,却会存在这某种神秘的隐含关系,获取这种关系将会对提升销售额起到推进做用,然而有时这种关联是很难经过经验分析获得的。这时候咱们须要借助数据挖掘中的常见算法-协同过滤来实现。这种算法能够帮助咱们挖掘人与人以及商品与商品的关联关系。微信
协同过滤算法是一种基于关联规则的算法,以购物行为为例。假设有甲和乙两名用户,有a、b、c三款产品。若是甲和乙都购买了a和b这两种产品,咱们能够假定甲和乙有近似的购物品味。当甲购买了产品c而乙尚未购买c的时候,咱们就能够把c也推荐给乙。这是一种典型的user-based状况,就是以user的特性作为一种关联。机器学习
经过一份7月份前的用户购物行为数据,获取商品的关联关系,对用户7月份以后的购买造成推荐,并评估结果。好比用户甲某在7月份以前买了商品A,商品A与B强相关,咱们就在7月份以后推荐了商品B,并探查此次推荐是否命中。学习
本次实验选用的是PAI-Studio做为实验平台,仅经过拖拽组件就能够快速实现一套基于协同过滤的推荐系统。本实验的数据和完整业务流程已经内置在了PAI首页模板,开箱即用:阿里云
数据源:本数据源为天池大赛提供数据,数据按时间分为两份,分别是7月份以前的购买行为数据和7月份以后的。
具体字段以下:blog
字段名 | 含义 | 类型 | 描述 |
---|---|---|---|
user_id | 用户编号 | string | 购物的用户ID |
item_id | 物品编号 | string | 被购买物品的编号 |
active_type | 购物行为 | string | 0表示点击,1表示购买,2表示收藏,3表示购物车 |
active_date | 购物时间 | string | 购物发生的时间 |
数据截图: get
本次实验选用的是PAI-Studio做为实验平台,仅经过拖拽组件就能够快速实现一套基于协同过滤的推荐系统。string
实验流程图: 产品
首先输入的数据源是7月份以前的购物行为数据,经过SQL脚本取出用户的购买行为数据,进入协同过滤组件,这么作的目的是简化流程,由于购买行为对此次实验分析是最有价值的。协同过滤的组件设置中把TopN设置成1,表示每一个item返回最相近的item和它的权重。经过购买行为,分析出哪些商品被同一个user购买的可能性最大。设置图以下:it
协同过滤结果,表示的是商品的关联性,itemid表示目标商品,similarity字段的冒号左侧表示与目标关联性高的商品,右边表示几率:
好比上图的第一条,itemid1000和item15584的类似度为0.2747133918,类似度越高表示两个物品被同时选择的几率越大。
上述步骤介绍了如何生成强关联商品的对应列表,这里使用了比较简单的推荐规则,好比用户甲某在7月份以前买了商品A,商品A与B强相关,咱们就在7月份以后推荐了商品B,并探查此次推荐是否命中。这个步骤是经过下图实现的:
上面是统计模块,左边的全表统计展现的是根据7月份以前的购物行为生成的推荐列表,去重后一共18065条。右边的统计组件显示一共命中了90条,命中率0.4%左右。
根据上文的统计结果能够看出,本次试验的推荐效果比较通常,缘由在以下几方面:
1)首先本文只是针对了业务场景大体介绍了协同过滤推荐的用法。不少针对于购物行为推荐的关键点都没有处理,好比说时间序列,购物行为必定要注意对于时效性的分析,跨度达到几个月的推荐不会有好的效果。其次没有注意推荐商品的属性,本文只考虑了商品的关联性,没有考虑商品是否为高频或者是低频商品,好比说用户A上个月买了个手机,A下个月就不大会继续购买手机,由于手机是低频消费品。
2)基于关联规则的推荐不少时候最好是做为最终推荐结果的补充或者是最基础的推荐系统,真正想提升准确率仍是要依靠机器学习算法训练模型的方式,具体方法能够参考泛推荐系列的其它文章。
更多技术干货 请关注阿里云云栖社区微信号 :yunqiinsight