利用R语言来实现关联分析

浏览: 2380

一、前提叙述

        由于库里执行的SQL等待时间太过长了,加上下班回去的那段时间有点热,所以就稍微写一下,上次我用过一个实例去还原关联分析apriori算法的过程,这次的话我用自己工作中的数据使用R语言来分析,前面自己有写文章描述过关联分析算法的一些过程和重要步骤,这里就不重复了,我还是要说下两个必须要说的概念;那就是支持度和置信度,因为这两个概念比较重要;

二、名词解释
   支持度(SUPPORT)P(AUB):就是事件A和B的并或者A和B同时出现的百分比,也叫概率;

    置信度(CONFIDENCE)P(B|A):也就是A中出现事件B的概率;

三、分析过程

    我们这里选用海口市目前重点青少年的历史数据;

Clipboard Image.png

这里的话对这个数据进行一些业务描述,首先重点青少年在综治里定义是违法过的28岁以下的青少年;(PS:28岁都可以当大叔了好吧),这里有七个列,第一个列是重点青少年唯一识别ID,第二列是重点青少年行为类型,第三列是发生的事件,剩下的那几列分别为四个造成重点青少年形成的原因,个人,家庭,学校和社会;

    接下来我们要创建数据库与R语言的连接,要使用到RODBC包和在本地配好数据源,因为我已经在R里提前装了,所以没必要在装一次,

R代码如下

library(RODBC)

zongzhi_connect <- odbcConnect("*****",uid="*****",pwd = "******",believeNRows=FALSE)

接下来我们要从数据库提取数据,使用sqlQuery函数,并查看数据是否提取成功

R代码如下:

zongzhi_date <- sqlQuery(zongzhi_connect,"

                       select t.teenager_type,t.behavior_happen,t.person,t.jiating,t.xuexiao,t.shehui from tr_xgf_teenager t

                        ")

zongzhi_date;#查看数据是否提取成功

Clipboard Image.png

由于数据记录过多,这里只截取了一部分,从截图上,数据是提取成功了并叫名为zongzhi_date的数据框,这时候我们载入包arules,没有安装的要先安装,这里我事先了解数据选择支持度为0.3,置信度为0.85的apriori算法提取规则;这里的置信度和支持度不能随意定,这里只是做一个实例,不多讲;并打印出规则;

R代码如下

rules <- apriori(jixiao_date,parameter = list(support=0.3,confidence=0.85))

inspect(rules)

Clipboard Image.png

我们的规则排序是无序的,所以我们这里根据支持度support列来给它排序,使用sort函数;

R代码如下

rules_1 <- sort(rules,decreasing = TRUE,by="support")

inspect(rules_1)

Clipboard Image.png

这里我们可以看到有好多的冗余的规则,规则2其实就已经包含了规则1,所以我们这里要去掉冗余的规则,首先要生成一个关联规则的子集矩阵,将矩阵对角线以下的元素置为空,然后在将子集矩阵中每列元素和大于等于1的列找出来,最后打印看看结果如何

R代码如下

subset_rules <- is.subset(rules_1, rules_1)

subset_rules[lower.tri(subset_rules, diag=T)] <- NA

redundant <- colSums(subset_rules, na.rm=T) >= 1

which(redundant)

Clipboard Image.png

有三条冗余的规则,这时候我们在剔除掉这些冗余的规则并打印生成结果;

R代码如下

rules_2<- rules_1[!redundant]

inspect(rules_2)

Clipboard Image.png

还有一个规则可视化包arulesViz,要提前安装,这里篇幅问题就不说了;这里我们用数据对规则进行验证;

四、规则验证

这里我们选取重点青少年里的学校原因是成绩不好的数据,看看个人原因的分布,这里我们发现交友不当的数据占比刚刚好是规则1的置信度;

Clipboard Image.png

如果有不对的地方可以指正出来一起交流学习;

推荐 4
本文由 夏尔康 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

一直跟着 尔康的系列在学习
谢谢支持!

要回复文章请先登录注册