利用关联规则实现推荐算法?

就是个性化推送,比如喜欢a电影的人也喜欢b电影,刚刚接触这方面的东西,求大神给我讲讲。
关注者
44
被浏览
25,382
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏
关于关联规则分析,这篇文章可以认真学习一下,讲得比较全面,关联规则在零售快消、电商、金融行业、搜索引擎、智能推荐等领域大有所为,如银行客户交叉销售分析、搜索词推荐或者识别异常、基于兴趣的实时新闻推荐(这个跟楼主的需求类似)

关联规则是反映一个事物与其他事物之间的相互依存性和关联性,常用于实体商店或在线电商的推荐系统:通过对顾客的购买记录数据库进行关联规则挖掘,最终目的是发现顾客群体的购买习惯的内在共性,例如购买产品A的同时也连带购买产品B的概率,根据挖掘结果,调整货架的布局陈列、设计促销组合方案,实现销量的提升,最经典的应用案例莫过于<啤酒和尿布>。  

关联规则分析中的关键概念包括:支持度(Support)、置信度(Confidence)与提升度(Lift)。首先,我们简单温故下这3个关键指标~

1、支持度 (Support):支持度是两件商品(A∩B)在总销售笔数(N)中出现的概率,即A与B同时被购买的概率。类似于中学学的交集,需要原始同时满足条件。


公式:



例子说明: 

比如某超市2016年有100w笔销售,顾客购买可乐又购买薯片有20w笔,顾客购买可乐又购买面包有10w笔,那可乐和薯片的关联规则的支持度是20%,可乐和面包的支持度是10%。


2、置信度 (Confidence):置信度是购买A后再购买B的条件概率。简单来说就是交集部分C在A中比例,如果比例大说明购买A的客户很大期望会购买B商品。

公式:



例子说明: 

某超市2016年可乐购买次数40w笔,购买可乐又购买了薯片是30w笔,顾客购买可乐又购买面包有10w笔,则购买可乐又会购买薯片的置信度是75%,购买可乐又购买面包的置信度是25%,这说明买可乐也会买薯片的关联性比面包强,营销上可以做一些组合策略销售。


3、提升度 (Lift):提升度表示先购买A对购买B的概率的提升作用,用来判断规则是否有实际价值,即使用规则后商品在购物车中出现的次数是否高于商品单独出现在购物车中的频率。如果大于1说明规则有效,小于1则无效。

公式:



例子说明:  

可乐和薯片的关联规则的支持度是20%,购买可乐的支持度是3%,购买薯片的支持度是5%,则提升度是1.33>1, A-B规则对于商品B有提升效果。  


理论很简单,真正实践起来却会遇到种种困难,印证了那句"数据分析师的50%~80%的时间都花在了处理数据上”,例如一般POS明细是以下图表形式展现:


要计算支持度(Support)、置信度(Confidence)与提升度(Lift),首先需要知道Freq(A∩B)、Freq(A)、Freq(B)和总笔数数值,那么需要对商品进行排列组合。  

所以,我们希望转换成下表形式,如销售ID=000001, 4种商品的两两组合(种):


若一个收银小票(销售ID)有30种商品,则组合数达到435种。而且可视化层级上还需要展现集团下每个分公司、每个城市、每个门店、月度、季度或者年度时间的关联规则分析,如果用传统的工具来实现上述分析无异于大海捞针。

下面我们就来看看在BDP中如何实现Apriori算法,实现关联规则分析!在BDP中,不仅可以便捷地实现多维数据分析,还可以通过灵活强大的功能组合来进行更深层面的数据分析探索。  

商品两两组合的初步想法是通过量化的思想对商品进行编码,比方说可按照增序(从1开始),算出每笔销售单最大值,求出两者差值得到一组数组,通过数组行转列形式实现2种商品两两组合。

(图:销售单2种商品两两组合逻辑图)

BDP实现的4大步骤:  

为了实现上述的组合算法,也为了方便感兴趣的同学进行实践,我们先上传10条数据到BDP平台,共有3票购物单,最大商品数分别是5、3以及2。测试数据下载地址:pan.baidu.com/s/1sl8mN5

(图:EXCEL 上传表)

操作①:【工作表】-【创建合表】-【SQL创建】



(图:商品量化)

上图转换成日期的形式,主要目的是为下一步的数组转列做准备,为配合explode()函数使用。其中需要说明的是上图[日期]字段是自定义日期,可以更改成任意日期,没有实际日期意义。


(图:商品组合数效果)

上图主要使用的关键函数是FILL_DATES([日期1],[日期2]),Explode()。组合效果初显现,只是缺另一个商品名,然后把[下一日期]字段通过LEFT JOIN 关联出商品B的名称。

操作②:【工作表】-【创建合表】-【多表关联】 用于创建表关联 包括(LEFT/INNER/ FULL JOIN)


(图:商品组合数实现)  

从上图可以看到A商品和B商品两两组合逻辑已完成,在当前表基础上我们已经可以去做连带分析内容。 

在这里,求Freq(A)和Freq(B)和总笔数数值就不祥述了,思想大致是求出所有销售商品的A 和B商品的频次,通过合表关联,整合到一张大表。

操作③:【工作表】-【创建合表】-【追加合并】合并订单总数 ,A商品订单数,B商品订单数和A∩B商品连带笔数


(图:追加合并逻辑实现)

追加合并可以把相同字段商品合并在一起,方便计算三个指标(支持度、置信度、提升度)有利于可视化展现。

操作④:  可视化展现:【BDP】-【可视化仪表盘】

(图:仪表盘全局展示)

注:为了更好体现可视化效果,这部分的可视化展示成果并非使用上述的测试数据或某个企业数据。

制作三个图表进行购物篮分析:

(图1: TOP 20商品连带次数)  

上图反映季度连带最高频次商品,高联带商品意味着对客户吸引力大商品粘性强,同时也可以查看不同分公司的TOP20连带情况。根据结果我们可以合理设计促销策略,例如买2送1等。

(图2:商品组合指标)  

置信度高说明商品连带紧密,说明客户连带意愿强,同时关注支持度,支持度高说明是需求量大,如果支持度低,置信度高其实对市场作用是有限小的。

(图3:购物来分析详情)  

通过单价,支持度,置信度,提升度综合指标来看待商品组合,发现高价值关联商品,有助于提升客单价,同时也需要考虑提升度,提升度小于1,提升效果有限,可以把精力花在提升度大于1的商品组合。同样地,我们是否可以实现三种商品的组合呢?答案是显然的,只要我们深入理解以上过程,三种商品关联也是可以实现的。

除了购物篮分析这个典型应用,关联规则分析还在金融行业、搜索引擎、智能推荐等领域大有所为,如银行客户交叉销售分析、搜索词推荐或者识别异常、基于兴趣的实时新闻推荐等。

文章转载自熊辉,6年数据分析师从业经验,对数据挖掘与机器学习算法有深入的研究!