关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。
目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。
常用的关联规则算法
算法名称 | 算法描述 |
Apriori | 关联规则最常用、最经典的挖掘频繁项集的算法,核心思想是通过连接产生候选项及其支持度,然后通过剪枝生成频繁项集 |
FP-Tree | 针对Apriori算法固有的多次扫描事务数据集的缺陷,提出的不产生候选频繁项集的方法。 Apriori和FP-Tree都是寻找频繁项集的算法 |
Eclat算法 | 一种深度优先算法,采用垂直数据表示形式,在概念格理论的基础上利用基于前缀的等价关系将搜索空间划分为较小的子空间 |
灰色关联法 | 分析和确定各因素之间的影响程度,或是若干个子因素(子序列)对主因素(母序列)的贡献度而进行的一种分析方法 |
本文介绍最常用的Apriori算法。
项集:项的集合。包含k个项的项集成为k项集,如集合{牛奶、麦片、糖}是一个3项集
频繁项集:如果项集I的相对支持度满足预定义的最小支持度阈值,则I是频繁项集
支持度(相对支持度):项集A、B同时发生的概率。
置信度:项集A发生,则项集B发生的概率。
最小支持度:用户或专家定义的衡量支持度的一个阈值,表示项集在统计意义上的最低重要性。
最小置信度:用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。同时满足最小支持度阈值和最小置信度阈值的规则成为强规则。
以以下数据集为例:
1、创建稀疏矩阵
tr <- read.transactions("menu_orders.txt",format="basket",sep=",") #读入源数据并创建稀疏矩阵
#format=c("basket", "single")用于注明源数据的格式。如果源数据每行内容就是一条交易购买的商品列表(类似于一行就是一个购物篮)那么使用basket;如果每行内容是交易号+单个商品,那么使用single。
summary(tr) #查看数据集相关的统计汇总信息
inspect(tr) #查看稀疏矩阵的内容
输出如下:
2、采用Apriori算法建模
rule0 = apriori(tr,parameter = list(support=0.2,confidence = 0.5)) #设定支持度为0.2,置信度为0.5
3、输出模型结果
inspect(rule0)
输出结果如下:
结果分析(以结果第12条为例):
a、b同时发生的概率是50%。
a发生,则b发生的概率是71.42857%。
这样就可以进行智能推荐了。