【视频讲解】R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化

关联规则挖掘是一种无监督的学习方法,从交易数据中挖掘规则。

由Kaizong Ye,Sherry Deng撰写

它有助于找出数据集中的关系和一起出现的项目。


在这篇文章中,我将解释如何在R中提取关联规则。
关联规则模型适用于交易数据。交易数据的一个例子可以是客户的购物历史。


视频

关联规则模型、Apriori算法及R语言挖掘杂货店交易数据与交互可视化

探索见解

去bilibili观看

探索更多视频

数据分析的第一件事是了解目标数据结构和内容。出于学习的目的,我认为使用一个简单的数据集更好。

×

当寻找频繁项集时,频繁(frequent)的定义是什么?


最重要的是支持度和可信度。


1、一个项集的支持度(support)


被定义为数据集中包含该项集的记录所占的比例。支持度是针对项集来说的,因此可以定义一个最小支持度,而只保留满足最小支持度的项集。


2、可信度或置信度(confidence)


是针对一条诸如{尿布} ➞ {啤酒}的关联规则来定义的。这 条规则的可信度被定义为“支持度({尿布, 啤酒})/支持度({尿布})”。


假设{尿布, 啤酒}的支持度为3/5,尿布的支持度为4/5,则“尿布 ➞ 啤酒”的可信度为3/4=0.75。简单来说,就是用户购买尿布的事件中包含“购买尿布和啤酒”的比率。这意味着对于包含“尿布”的所有记录,我们的规则对其中75%的记录都适用。


3、Lift(提升度):表示“包含A的事务中同时包含B事务的比例”与“包含B事务的比例”的比值。公式表达:Lift=( P(A&B)/P(A))/P(B)=P(A&B)/P(A)/P(B)。提升度反映了关联规则中的A与B的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性。


为了减少频繁项集的生成时间,可以尽早的消除一些完全不可能是频繁项集的集合,用到Apriori的两条定律。


Apriori定律1:如果一个集合是频繁项集,则它的所有子集都是频繁项集。举例:假设一个集合{A,B}是频繁项集,即A、B同时出现在一条记录的次数大于等于最小支持度min_support,则它的子集{A},{B}出现次数必定大于等于min_support,即它的子集都是频繁项集。


Apriori定律2:如果一个集合不是频繁项集,则它的所有超集都不是频繁项集。举例:假设集合{A}不是频繁项集,即A出现的次数小于min_support,则它的任何超集如{A,B}出现的次数必定小于min_support,因此其超集必定也不是频繁项集。




一旦我们知道了这个模型,就可以很容易地把它应用于更复杂的数据集。

在这里,我们使用杂货店的交易数据。首先,我们创建一个数据框并将其转换为交易类型。

读取数据

n=500 # 交易数量

trans <- data.frame() # 收集数据的数据框架

视频

从决策树到随机森林:R语言信用卡违约分析信贷数据实例

探索见解

去bilibili观看

探索更多视频

创建数据并将其收集到交易数据框中。

for(i in 1:n)
{
  count <- sample(1:3, 1) # 从1到3的物品计数
  如果(i %% 2 == 1)
  {
    if(!add_product %in% selected)
    {
      tran <- data.frame(items = add_product, tid = i)

检查交易数据框中的数据。

接下来,我们需要将生成的数据框转换为交易数据类型。

…….


Python中的Apriori关联算法-市场购物篮分析

阅读文章


我们从上面的列表中获取第一个rhs项(规则后项)来检查该项的规则。但如果你知道目标项目,可以在参数中只写rhs=”melon”。

 inspect(rules_1@rhs\[1\])
> rhs_item <- gsub("\\\}","", rhs)


随时关注您喜欢的主题


我们为我们的rhs_item建立规则

按 “置信度 “排序并检查规则

sort(rules_2, "confidence")

结果可视化

最后,我们从规则集_2中绘制出前5条规则。

> plot(rules_2\[1:5\])

绘制全部规则

交互可视化

绘制出前5条规则

precision     =  3
igraphLayout     =  layout_nicely
list(nodes = nodes, edges = edges, nodesToDataframe = nodesToDataframe, 
            edgesToDataframe = edgesToDataframe,
x$legend <- legend
    htmlwidgets::createWidget( x, width = width, 
        height = height)

绘制全部规则


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds