正文
3)设定最小提升度的阈值。对第2)步进行计算,求出满足提升度条件的强关联规则,作为最后的关联规则的模型结果。
相比于最原始的一一计算,使用Apripor算法计算频繁项集可以大大地减少运算量,提升计算效率。 到底,理论的梳理就完全结束,下一步我将会对关联规则进行实战演练。
二.实操演练
2.1数据源
因为业务需要保密,所以实战演练部分我并没有用业务中的真实数据来进行记录,而是借用了arules包中和我业务数据很像的Epub数据来对我的建模过程来进行一个回顾和梳理。
Epub数据包含了来自维也纳大学经济与工商管理学院的电子文档平台的下载历史。
library(arules)
#导入数据
>data(Epub)
#查看数据类型
>class(Epub)
[1]"transactions"
#因为我的业务数据是从oracle数据库里面导出来的,所以我这里便把Epub数据转成data.frame格式,然后导出到数据库之后,重新从数据库导入,以便能够记录整个建模流程
>Epub"data.frame")
#因为业务不需要,所以演示时也去掉时间字段
>Epub1:2]
导出进数据库因为不属于建模流程,这里就不记录了。
2.2数据准备
上一节对数据源进行了基本的阐释下面正式进入正题,我将会从数据库导入开始一步步记录我的建模流程。
首先,是数据准备过程。
library(RODBC)
channel"数据库名",uid="orcl",pwd="orcl")
Epub"select * from Epub")
head(Epub)
此时数据应该是如下表格的data.frame结构:
这个时候,表格是数据库存储的格式而非事务集的格式,因此首先要对数据进行格式转换。
首先,要对数据进行分组,一个transactionID的所有items应该在一个组里,因此,我们可以使用split函数,指定它的分组变量和目标变量:
>Epub#分组之后,将Epub数据转换成事务集形式
>Epub"transacions")
#查看Epub数据的前十行
>inspect(Epub[1:10])
items transactionID
[1] {doc_154} session_4795
[2] {doc_3d6} session_4797
[3] {doc_16f} session_479a
[4] {doc_11d,doc_1a7,doc_f4} session_47b7
[5] {doc_83} session_47bb
[6] {doc_11d} session_47c2
[7] {doc_368} session_47cb
[8] {doc_11d,doc_192} session_47d8
[9] {doc_364} session_47e2
[10] {doc_ec} session_47e7
Eupb已经被转化成了事务集,到此,我们就已经做好数据的准备。
2.3建模
数据准备好之后,就进入整个流程中最重要也是最核心的建模步骤中了。