R语言关联规则可视化:扩展包arulesViz的介绍

关联规则挖掘是一种流行的数据挖掘方法,在R语言中为扩展包arules。然而,挖掘关联规则往往导致非常多的规则,使分析师需要通过查询所有的规则才能发现有趣的规则。通过手动筛选大量的规则集是费时费力。在本文中,我们基于探索关联规则的R扩展包arulesViz,提出几个已知的和新颖的可视化技术。

1、简介

算法步骤这里不做详细介绍,下面是几个重要的变量的定义:

Supp(X=>Y) = P(X)
Conf(X=>Y) = P(Y|X)
Lift(X=>Y) = CONF(X=>Y)/SUPP(Y) = P(X and Y)/(P(X)P(Y))

(Lift)是避免了一些不平衡数据标签的偏差性, Lift越大,则数据质量较好;Lift越小,则数据越不平衡。

2、数据准备和arulesViz的统一接口

使用扩展包arulesViz之前,我们首先需要加载它。这个包会自动加载其他所需要的数据包,如arules。如下面的数据集Groceries包含在arules包里面。

> library("arulesViz")
> data("Groceries")
> summary(Groceries)

设置支持度为0.001,置信度为0.5,R语句入下:

> rules <- apriori(Groceries, parameter = list(support = 0.001, confidence = 0.5))
> rules
set of 5668 rules

结果共找出了5668条规则。按照Lift降序排,最大的三条规则如下:

> inspect(head(sort(rules, by = "lift"), 3))
 lhs rhs support confidence lift
1 {Instant food products, 
 soda} => {hamburger meat} 0.001220132 0.6315789 18.99565
2 {soda, 
 popcorn} => {salty snack} 0.001220132 0.6315789 16.69779
3 {flour, 
 baking powder} => {sugar} 0.001016777 0.5555556 16.40807

3、散点图

直接用plot画出散点图

> plot(rules)

图1

从图1可以看到高lift对应低supp。另外一些科学家认为最有意思的规则在supp/conf的边沿上,如t图1所示。

> head(quality(rules))
 support confidence lift
1 0.001118454 0.7333333 2.870009
2 0.001220132 0.5217391 2.836542
3 0.001321810 0.5909091 2.312611
4 0.001321810 0.5652174 2.212062
5 0.001321810 0.5200000 2.035097
6 0.003660397 0.6428571 2.515917

如果我们想个性化plot图中的坐标的特征,将颜色表示conf,lift为纵标轴,如下所示。

图2

> plot(rules, measure = c("support", "lift"), shading = "confidence")

图2中的y轴是lift,这里可以比较清晰地看出很多的规则都有高lift。

图3

> plot(rules, shading = "order", control = list(main = "Two-key plot"))

图3中,supp为x轴,conf为y轴,颜色的深浅表示“order”,例如规则里频繁项的个数。从图中可以看出,order和supp有着很强的负相关性。这在关联规则中也是熟知的。

散点图方法提供了互动功能的选择和缩放,可以使用interactive=TRUE来实现。

图4

> sel <- plot(rules, measure = c("support", "lift"), shading = "confidence",
+ interactive = TRUE)

图4中选择了lift较高的几个点,并且使用inspect按钮,在终端的界面上便显示了这些规则。

4、基于分组矩阵的可视化

基于矩阵的可视化中只能有效处理规则数较少的可视化,因为大的规则集通常也有大量LHS/RHS(左边的集合/右边的集合)的限制。在这里,我们引入一个新的可视化技术,通过使用聚类方法将规则分组,可提高基于矩阵的可视化。

一个直接的方法来聚类频繁项集,便是定义两个项集(Xi和Xj )之间的距离。一个比较好的选择是使用Jaccard distance。

有几种方法,以聚类关联规则和频繁项集解决高维和数据稀疏问题。有的建议要观察包含在频繁项集中的项的交易的个数。然而,他对从相同频繁项集产生的聚类规则有着很强的偏向。由频繁项集的定义,一个频繁项集的两个子集都将适用于许多常见的交易。这种偏见会导致大多只是从集合关联规则重新发现已知的频繁项集的结构。

为了使分组速度加快并且有效地分为K类,这里使用了K-means聚类方法。这个思路是LHS和RHS统计上是相似的则被归为一类。相对于频繁项集的其他聚类结果,这种方法得出含有替代品的分组(如“黄油”和“人造黄油”),这些通常是很少一起购买的,但因为他们有着相似的RHS。相同的分组方法也作用于后项。然而,由于挖掘的规则只得出一个RHS的项集,因此这里没有组合爆炸的问题,但这样的分组通常也是不需要的。

在可视化图中,LHS是列,RHS是行,lift是圈的颜色深浅,圈的大小事聚合后的支持度。LHS的个数和分组中最重要(频繁)项集显示在列的标签里。lift从左上角到右下角逐渐减少。

> plot(rules, method = "grouped")

图5

lift从左上角到右下角的颜色逐渐变小。这里有3条规则包含“Instant food products ”,RHS超过2个其他项集的是“hamburger meat”。

组的个数默认是20个,我们也可以通过添加control = list(k = 50)来改变组的个数。

5、基于图的可视化

基于图形的可视化技术,利用顶点代表项或者项目集,和边表示规则中关系的关联规则。强度通常使用颜色或者边的宽度来表示。

基于图形的可视化提供了一个规则非常明确的展示,但他们规则越过则往往容易变得混乱,因此是比较可行的是使用非常小的规则集。对于下面的图,我们选择了10条具有高lift的规则。

> subrules2 <- head(sort(rules, by = "lift"), 10)

arulesViz包含了一些基于图形的可视化展示,使用Rgraphviz扩展包的一些接口。默认的版本点代表项目集,表代表规则项集之间的有向边 。

图6

> plot(subrules2, method = "graph")

图7

> plot(subrules2, method = "graph", control = list(type = "items"))

图7着重于规则是如何由个别项目组成的,并显示哪些规则共享的项目。arulesViz的内置基于徒刑的可视化只对规则数较少时有效。探索大量规则的可视化,需要先进的图形放大,过滤,分组和着色节点的交互功能。

7、平行坐标图(Parallel coordinates plot )

平行坐标图将多维数据共享,使得每个维度上分别显示在x轴和y轴。每个数据点是由连接的值对于每个维度中的线表示。每个数据点由连接每个维度的线表示。

8、小节

参考文件:《Visualizing Association Rules-Introduction to the R-extension Package arulesViz

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-11-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小詹同学

人脸识别(二)——训练分类器

这是关于人脸的第②篇原创!(源码在第三篇) 上一篇简单整理了下人脸识别的相关基础知识,这一篇将着重介绍利用pencv(2.4.9)已有的模型进行分类器训练。 ...

5009
来自专栏磐创AI技术团队的专栏

Tensorboard详解(下篇)

2034
来自专栏iOSDevLog

seaborn的介绍

Seaborn是一个用Python制作统计图形的库。它建立在matplotlib之上,并与pandas数据结构紧密集成。

2271
来自专栏磐创AI技术团队的专栏

Tensorflow 免费中文视频教程,开源代码,免费书籍.

Free-Tensorflow Tensorflow 免费中文视频教程,开源代码,免费书籍. ? 官方教程 官方介绍 https://tensorflow.go...

3536
来自专栏新智元

【深度学习Github 10万+源代码分析】Python是第三受欢迎语言

【新智元导读】编程语言是软件开发的主要工具。自20世纪40年代以来,已经有数百种语言被发明出来,每天大量的各种语言编写的代码活跃着代码库。本文作者从 GitHu...

3618
来自专栏SDNLAB

SDN应用路由算法实现工具之Networkx

SDN(Software Defined Networking)是一种新型的网络架构,通过集中式的控制平面管理数据层面的转发等操作。网络的连通性是最基础的需求,...

3119
来自专栏iOSDevLog

quickdraw_datasetQuick Draw!数据集

https://console.cloud.google.com/storage/browser/quickdraw_dataset

2372
来自专栏AI研习社

让 TensorFlow 估算器的推断提速百倍,我是怎么做到的?

TensorFlow 估算器提供了一套中阶 API 用于编写、训练与使用机器学习模型,尤其是深度学习模型。在这篇博文中,我们描述了如何通过使用异步执行来避免每次...

1002
来自专栏AI研习社

Github 推荐项目 | GloVe 的快速实现 —— Mittens

该软件包包含 GloVe 和 Mittens 的快速 TensorFlow 和 NumPy 实现。

1793
来自专栏企鹅号快讯

使用机器学习预测天气

作者:笨熊 本章是使用机器学习预测天气系列教程的第一部分,使用Python和机器学习来构建模型,根据从Weather Underground收集的数据来预测天气...

3055

扫码关注云+社区