前言:
现在你们对“关联规则挖掘实验心得体会”大约比较注重,看官们都想要知道一些“关联规则挖掘实验心得体会”的相关内容。那么小编也在网上搜集了一些有关“关联规则挖掘实验心得体会””的相关资讯,希望各位老铁们能喜欢,我们快快来学习一下吧!上次,我们初步了解了关联规则的基本算法。接下来,小编将用开源的 R 软件进行关联规则案例实现。为方便大家训练,这里使用 R 中自带的一个杂货铺的数据。
关联规则(Association Rules)作为一种无监督的学习算法,应用于知识发现,能够从大型数据库中提取知识,而非预测。关联规则本身存在限制,就是对大量的信息很难处理成小而易于管理的结果集,但所使用的 Apriori 算法能通过设置阈值来控制结果集的输出量。
当我们对超市的销售流水进行购物篮分析,即使只使用一个月的购买数据,却能从其中发现大量的关联,这些关联对企业未来的营销模式、商品搭配或许能起到很大作用。
第一步:收集数据
本文所使用的购物篮数据是来自现实生活中一个月的杂货店销售记录,该数据包含 9835 次交易流水,大约每天 328 次交易。
按每天 12 个小时计算,大概 2 分钟产生一笔交易,由此可以看出零售商规模比较中等;数据集中去除详细的产品名称,比如有 5 个品牌的酸奶,我们就将它归成大类,统称为酸奶,不带品牌名称和规格。
在此说明一下,如若零售商不是特别关注某个特定品牌的酸奶与其他商品的关系,我们就可以简化事务型数据,采用大类如鸡肉、水、酸奶等,将更易于管理。
第二步:准备与探索数据
1、加载关联规则的包
arules 是进行关联规则的 R 包,使用之前需安装和加载。
2、准备和探索数据
Groceries(杂货)数据集采用稀疏矩阵的数据结构,稀疏矩阵的每一行表示一次交易,每一列表示出现的每一件商品。
在杂货铺数据中有 169 类不同的商品,所以我们的稀疏矩阵包含 169 列,1 表示该购买了该商品,0 表示没有购买,导入外部数据时可使用 read.transaction( ) 函数产生一个适用于事务型数据的系数矩阵,在这里我们直接加载软件自带的数据集进行讲解。
如果想查看所加载数据集的基本统计信息,可以对该数据集使用 summary() 函数:
运行结果中的第一块显示了稀疏矩阵的概要,9835 行表示商店的交易,169 列表示消费者购物篮中的商品类,如果该类商品被购买了,则矩阵的该单元格为 1,否则为 0,密度 density=0.026 表示在稀疏矩阵中 1 的百分比。
arules 包包含了一些用于检索数据的功能,使用 inspect( ) 函数可以查看稀疏矩阵记录,使用 itemFrequency( ) 可以查看商品的交易比例:
上图运行结果查看了前 10 条记录以及前 10 列商品的出现频率。针对数据的整体情况,我们还可以做一些可视化进行查看:
如上图所示,使用 itemFrequencyPlot( ) 函数生成了一个直方图,显示了数据中支持度至少为 10% 的 8 类商品。如果习惯直接按支持度排名的,可使用语句:
除了频数之外,我们可以可视化查看一下商品的交易数据,使用 image( ) 函数观察 100 个样本矩阵图:
这张图中一些列的黑点非常密集,表明该商店中有一些非常受欢迎的商品,但总体来说,点的分布比较随机,所以我们可以进一步分析。
第三步、挖掘关联规则
当准备和探索完数据之后,我们可以正式进入规则发现的环节。
apriori( ) 函数看起来很简单,但使用完发现规则之后,可能需要进行大量的随机试验和误差评估。如果函数中的参数设置过高,会限制规则的发现或规则过于普通与常识想混乱;如果参数设置过低,则会导致规则数量过载。
首先,我们尝试使用默认参数:支持度 0.1、置信度 0.8 进行规则的发现:
运行结果可知,我们没有发现任何规则,原因是范围太窄,没有商品在这一个月的交易记录中出现 983.5 次。
所以,我们应该考虑一下放宽搜索范围。如果经过判断之后认为一种商品一天被购买 3 次,即一个月中出现 90 次是一个最小交易量,则可以将参置信度设置成 90/9835=0.009。置信度水平设置为 0.25,意味着规则的正确率至少为 25%。
此外将该函数中的 minlen (项目集的最小项目数的整数值) 设置为 2,目的是消除包含少于两类商品的规则。
上图的运行结果可看出,使用语句中设置的参数能得出 224 条规则,我们查看一下部分关联规则内容:
上图所查看的前 10 条关联规则是按照 lift(提升度)降序排列的,提升度越高,规则的力度越大。
当然,也可以根据对商品的关心程度来查看它所产生的规则。例如我对 beef 这个类别比较感兴趣,就可以筛选查看此类别:
第四步、可视化结论
接下来,利用可视化将所得出的数据进行交互展现。
上图为支持度和置信度的分布图,颜色表示 lift 提升度,颜色越深 lift 值越高。
从图中可以看出,在 224 条规则中,大部分规则的支持度在 0.1 之内,置信度在 0-0.6 内。在 lift 提升度中,如果 Lift=1,则表示 x 和 y 相互独立。越大于 1,规则强度越高,反之规则无效甚至出现 x 与 y 之间的排斥效果。
当然,也可以利用不同的效果实现规则的展现,小伙伴们可以通过链接下载代码自己运行试试哦!
复制以下链接至浏览器即可:
标签: #关联规则挖掘实验心得体会