我们在前面的内容中已经介绍了关联规则Apriori的基本步骤——生成候选项集和剪枝。这种算法实际上是一个不断迭代的过程,先选出符合阈值的包含一种商品的组合(1-项集),然后再次基础上选出符合阈值的包含两种商品的组合(2-项集),以此类推就可以筛选出符合阈值的多种商品的组合。
在Tableau中我们不能使用迭代的方式,只能退而求其次使用Join联接的方式,完成类似的过程。为了更加清晰的展示数据处理的过程,我们以Tableau Prep为例进行分部操作。
我们模拟一个简单的销售数据集(如下图):
![](https://img.haomeiwen.com/i13953618/73789fbbdd10dc73.png)
导入数据集后,将数据集复制一份,为了区分项集的前项和后项,也就是原理公式中的A项和B项,我们先对数据集的标题进行改名操作,然后依据“订单ID”字段进行Join联接。
![](https://img.haomeiwen.com/i13953618/44e854df4e7d50f3.png)
![](https://img.haomeiwen.com/i13953618/aa6e3697fc864a80.png)
通过Join联接之后,我们就可以构造“商品组合(频繁项集)”了,这里实际上构造的是2-项集,也就是两种商品的组合。
![](https://img.haomeiwen.com/i13953618/636d60dc3d81bd4e.png)
最后我们可以根据支持度、置信度和提升度的公式计算这三个指标。
总订单数:{FIXED:COUNTD([B订单ID]) }
购买A商品的次数:{ FIXED [A商品名称]:COUNTD([A订单ID])}
购买B商品的次数:{ FIXED [B商品名称]:COUNTD([B订单ID])}
同时购买AB商品订单数:{ FIXED [商品组合(频繁项集)]:COUNTD([A订单ID])}
支持度:[同时购买AB商品订单数]/[总订单数]
置信度(A->B):[同时购买AB商品订单数]/[购买A商品的次数]
提升度(A->B):[置信度(A->B)]/([购买B商品的次数]/[总订单数])
计算过程和结果如下图所示:
![](https://img.haomeiwen.com/i13953618/7f5d511a5ae72952.png)
自此,我们将所有商品组合(频繁项集)的三个指标都算出来了,然后我们自己设定的3个指标阈值进行筛选操作,筛选出我们所需要的强关联规则。对于置信度和提升度来说,同样的商品组合,数据前项和后项的不同可能会影响到计算的结果,比如{鸡蛋牛奶}和{牛奶鸡蛋}的组合,根据计算公式支持度一样,但置信度和提升度可能不一样。如果只关心商品组合,这些细微差异也不一定影响最终的筛选结果,有可能{牛奶鸡蛋}的组合被筛选掉了,{鸡蛋牛奶}的组合还在,并不影响对组合的判断。
这里我们只做了两种商品组合的判断,对于一般的分析已经足够,如果是3种商品的组合,计算难度也会有所上升。要将3张表Join联接到一起,同时因为剪枝的过程只能放在最后,导致计算效率会大大降低,我个人并不推荐在Tableau中进行尝试。毕竟Apriori算法是数据挖掘算法中的一种,使用专业的数据挖掘工具更为有效。下一篇文章我们分别使用Knime和Python的数据挖掘算法进行计算,效率提升更为明显。
另外,Tableau Desktop中也可以通过Join和关系(relationship)来完成数据连接,计算过程也可以通过添加计算字段的方式完成,最后还可以通过购物篮分析矩阵可视化计算结果,这也是利用Tableau进行购物篮分析的常用方式。
如下图所示的购物篮分析矩阵,这里只简单的计算了订单ID的数据量,并没有进行复杂的指标计算,也可以实现寻找关联规则的目的。当然,如果将颜色和标签替换成上面提到的指标,也是不错的方案,大家可以自行尝试。
![](https://img.haomeiwen.com/i13953618/d0e0986334659f09.png)
喜乐君(吴玉鹏)老师在他的公众号和网站中,也有使用Tableau Desktop完成购物篮分析的相关案例,推荐大家参考学习。
网友评论