精华内容
下载资源
问答
  • 关联规则反应是一个事物与其他事物之间关联关系,被称为购物篮模型,最初产生为啤酒喝尿布故事。电商网站多用于商品推荐、联合发券、品类联合促销等方面。 2 关联规则指标 1)支持度为事物在数据集中发生...

    1 关联规则产生

    关联规则反应的是一个事物与其他事物之间的关联关系,被称为购物篮模型,最初产生为啤酒喝尿布的故事。电商网站多用于商品推荐、联合发券、品类联合促销等方面。

    2 关联规则指标

    1)支持度为事物在数据集中发生的概率,支持度的意义在于度量项集在整个事务集中出现的频次,我们希望关注频次高的项集。

    Support(A)=A/U

    2)置信度,在A发生的条件下B发生的概率

    Confidence(A-->B)=P(AB)/P(A)

    3)提升度

    Lift(A→B) = P(B|A) / P(B)=P(AB)/P(A)P(B)、

    4)频繁项集:经常一起出现的项集

    3  关联规则 ----Apriori算法原理

    假设交易记录

    item1 A B C D
    item2 B C D  
    item3 C D    
    item4 B F G H
    item5 A C D  

    3.1 生成关联规则

    4关联规则R语言实现

    4.1读数据变换成交易记录集

    #format有两种格式single原始记录和basket购物篮记录
    rp<-read.transactions('D:\\R\\Apriori_id_50.csv',
                          format = 'single',
                          sep=',',
                          cols=c(1,2))

    4.2 生成关联规则

    #关联模型
    asso_rules <- apriori(rp, parameter = list(supp = 0.001,  #支持度
                                          conf = 0.5,   #置信度
                                          minlen = 2  #规则长度最小数
    ))

    4.3规则结果展示

    4.4查看和保存规则

    查看规则:inspect(asso_rules)

    保存规则:write.csv(asso_rules,file='D:\\R\\asso_rules.csv')

    展开全文
  • 关联规则挖掘可以让我们从数据集中发现项与项(item 与 item)之间关系,它在我们生活中有很多应用场景,“购物篮分析”就是一个常见场景,这个场景可以从消费者交易记录中发掘商品与商品之间关联关系,进而...

    8dd046bd3e1cf93972fcead0d9e6452a.png

    关联规则挖掘可以让我们从数据集中发现项与项(item 与 item)之间的关系,它在我们的生活中有很多应用场景,“购物篮分析”就是一个常见的场景,这个场景可以从消费者交易记录中发掘商品与商品之间的关联关系,进而通过商品捆绑销售或者相关推荐的方式带来更多的销售量。所以说,关联规则挖掘是个非常有用的技术。

    搞懂关联规则中的几个概念

    我举一个超市购物的例子,下面是几名客户购买的商品列表:

    2f0095344975b41fecbdf1e2d290e99f.png

    支持度

    支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。

    在这个例子中,我们能看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就是 4/5=0.8。

    同样“牛奶 + 面包”出现了 3 次,那么这 5 笔订单中“牛奶 + 面包”的支持度就是 3/5=0.6

    置信度

    它指的就是当你购买了商品 A,会有多大的概率购买商品 B

    置信度(牛奶→啤酒)=2/4=0.5,代表如果你购买了牛奶,有多大的概率会购买啤酒?

    置信度(啤酒→牛奶)=2/3=0.67,代表如果你购买了啤酒,有多大的概率会购买牛奶?

    置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少。

    提升度

    我们在做商品推荐的时候,重点考虑的是提升度,因为提升度代表的是“商品 A 的出现,对商品 B 的出现概率提升的”程度。

    提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)

    这个公式是用来衡量 A 出现的情况下,是否会对 B 出现的概率有所提升。

    所以提升度有三种可能:

    提升度 (A→B)>1:代表有提升;

    提升度 (A→B)=1:代表有没有提升,也没有下降;

    提升度 (A→B)<1:代表有下降。

    Apriori 的工作原理

    美[əpriˈɔri]

    首先我们把上面案例中的商品用 ID 来代表,牛奶、面包、尿布、可乐、啤酒、鸡蛋的商品 ID 分别设置为 1-6,上面的数据表可以变为:

    4595e92e9bd9d51809a72aabf62b37c6.png

    Apriori 算法其实就是查找频繁项集 (frequent itemset) 的过程,所以首先我们需要定义什么是频繁项集。

    频繁项集就是支持度大于等于最小支持度 (Min Support) 阈值的项集,所以小于最小值支持度的项目就是非频繁项集,而大于等于最小支持度的的项集就是频繁项集。

    项集这个概念,英文叫做 itemset,它可以是单个的商品,也可以是商品的组合。

    我们再来看下这个例子,假设我随机指定最小支持度是 50%,也就是 0.5。

    我们来看下 Apriori 算法是如何运算的:

    首先,我们先计算单个商品的支持度,也就是得到 K=1 项的支持度:

    f5c721705f6ae67fa3b7b4a470571456.png

    因为最小支持度是 0.5,所以你能看到商品 4、6 是不符合最小支持度的,不属于频繁项集,于是经过筛选商品的频繁项集就变成:

    c08dd7724126c8403976b164956d686b.png

    在这个基础上,我们将商品两两组合,得到 k=2 项的支持度:

    34a838c25f2a0cb6effda7a1025a41da.png

    我们再筛掉小于最小值支持度的商品组合,可以得到:

    fe26f8d95242c94ef286f95384ee6321.png

    我们再将商品进行 K=3 项的商品组合,可以得到:

    54a2fa95c831f95bd06bff1bda447510.png

    再筛掉小于最小值支持度的商品组合,可以得到:

    通过上面这个过程,我们可以得到 K=3 项的频繁项集{1,2,3},也就是{牛奶、面包、尿布}的组合。

    Apriori 算法的递归流程:

    1、K=1,计算 K 项集的支持度;

    2、筛选掉小于最小支持度的项集;

    3、如果项集为空,则对应 K-1 项集的结果为最终结果。

    否则 K=K+1,重复 1-3 步。

    d786e5a30ec201203c97829ecc083b32.png

    Apriori 的改进算法:FP-Growth 算法

    Apriori 在计算的过程中有以下几个缺点:

    1、可能产生大量的候选集。因为采用排列组合的方式,把可能的项集都组合出来了;

    2、每次计算都需要重新扫描数据集,来计算每个项集的支持度。

    所以 Apriori 算法会浪费很多计算空间和计算时间,为此人们提出了 FP-Growth 算法:

    1、创建了一棵 FP 树来存储频繁项集。在创建前对不满足最小支持度的项进行删除,减少了存储空间。

    2、整个生成过程只遍历数据集 2 次,大大减少了计算量。

    所以在实际工作中,我们常用 FP-Growth 来做频繁项集的挖掘,下面我给你简述下 FP-Growth 的原理。

    创建项头表(item header table)

    创建项头表的作用是为 FP 构建及频繁项集挖掘提供索引

    这一步的流程是先扫描一遍数据集,对于满足最小支持度的单个项(K=1 项集)按照支持度从高到低进行排序,这个过程中删除了不满足最小支持度的项。(第一步遍历数据集就删除了不满足最小支持度的项,降低了时间复杂度;同时降序排列可以公用祖先节点–null点)

    项头表包括了项目、支持度,以及该项在 FP 树中的链表。初始的时候链表为空。

    e097ad22048cfc17d55710aefe0bf83c.png

    构造 FP 树

    FP 树的根节点记为 NULL 节点。

    整个流程是需要再次扫描数据集,对于每一条数据,按照支持度从高到低的顺序进行创建节点(也就是第一步中项头表中的排序结果),如果有共用的祖先,则对应的公用祖先节点计数加1,如果不存在就进行创建。直到所有的数据都出现在FP树中。

    同时在创建的过程中,需要更新项头表的链表

    1dc1a75e7712d1dc173b07590e5a602c.png

    构建子树

    1.假设已经完成创建项头表的工作,省略count+1

    2.扫描数据集,按照项头表排列好的结果,一次创建节点

    3.因为尿布出现在所有订单中,没有例外情况,所以这只有一个子节点

    4.因为牛奶出现在尿布中的所有订单里,所以只有一个子节点

    5.由表中数据可得,在出现牛奶的订单中,面包出现的情况,分为两种,

    1)出现3次面包,出现在有牛奶的订单中

    2)出现一次面包,出现在没有牛奶的订单中

    故,生成两个子节点

    6.后续内容属于迭代内容,自行体会

    如果不懂,可以参考文末给的参考文献,那篇文章讲的很清楚(有点像运筹学图论,但比运筹学简单)

    通过 条件模式基挖掘频繁项集

    我们就得到了一个存储频繁项集的 FP 树,以及一个项头表。我们可以通过项头表来挖掘出每个频繁项集。

    具体的操作会用到一个概念,叫“条件模式基”,它指的是以要挖掘的节点为叶子节点,自底向上求出 FP 子树,然后将 FP 子树的祖先节点设置为叶子节点之和。

    2a182a72a06e541308ee3bd29baa7c23.png

    FP-Growth 算法总结:

    1、构建项头表,从高到底排序(以便有共同祖节点)

    2、对数据集按照项头表顺序进行排序,然后从高到低递归绘制层次图

    3、按照项头表,依据第2步结果,从低到高,重新按照节点原则构建层次图,得到条件模式基。

    总结

    1、关联规则算法是最常用的算法,通常用于“购物篮分析”,做捆绑推荐。

    2、Apriori 算法在实际工作中需要对数据集扫描多次,会消耗大量的计算时间

    3、针对Apriori 算法时间复杂度高, FP-Growth 算法被提出来,通过 FP 树减少了频繁项集的存储以及计算时间。

    4、原始模型往往是最接近人模拟的过程,但时间复杂度或空间复杂度高;于是人们就会提出新的方法,比如新型的数据结构,可以提高模型的计算速度。

    5、FP Tree算法改进了Apriori算法的I/O瓶颈,巧妙的利用了树结构,这让我们想起了BIRCH聚类,BIRCH聚类也是巧妙的利用了树结构来提高算法运行速度。利用内存数据结构以空间换时间是常用的提高算法运行时间瓶颈的办法。

    6、置信度和提升度是对频繁项集的一种验证,在筛选最优组合的时候,一般会设置最小支持度,最小置信度,这样频繁项集和关联关系都要满足这个条件。提升度 (A→B)= 置信度 (A→B)/ 支持度 (B),所以提升度是对满足前两者条件的另一种验证方式,这样避免一种情况:置信度(A->B)很高,是因为本身支持度(B)很高,实际上和A的出现关系不大。

    参考文献:

    数据分析实战45讲

    https://www.cnblogs.com/zhengxingpeng/p/6679280.html(FPTree不好理解,参考这篇文章,自己动手画画图就理解了)

    展开全文
  • 一个事务数据库中的关联规则挖掘可以描述如下 设I= {i1, i2, , im} 是一个项目集合 事务数据 库D= {t1, t2, , tn} 是由一系列具有惟一标识TID事务组成 每一个事务ti (i=1, 2, , n)都对应I上一个子集 定义3.1 设...
  • 关联规则用来发现数据间潜在关联,最典型应用是电商网站购物车分析。本文将通过一个简单例子来说明关联规则中各个术语含义以及具体计算方法。 这是一些用户购物数据,uid是用户ID,后面是每个用户...

    关联规则用来发现数据间潜在的关联,最典型的应用是电商网站的购物车分析。本文将通过一个简单的例子来说明关联规则中各个术语的含义以及具体的计算方法。

    这是一些用户的购物数据,uid是用户的ID,后面是每个用户具体购买的商品名称,我们使用字母进行标识。下面我们将使用关联规则对这些数据进行分析,挖掘不同商品间的联系。

    首先将前面的一维的购物车流水数据转换为二维的列表。然后在这个基础上计算不同商品及商品组成出现的频率。

    在关联规则中,有三个重要的术语,分别为支持度(Support),可信度(Confidence)和作用度(Lift)。第一个属于是支持度,支持度是一件商品在所有购物车中出现的频率。如果我们希望分析的是两件商品的关联,那么支持度就是这两件商品同时出现的频率。支持度的作用是用来衡量关联规则重要性的指标,简单来说就是我们所要挖掘的关系有多大的普遍性,普遍性越大这条关联规则越重要。第二个术语是可信度,可信度是指两件商品中当第一件出现时,第二件商品同时出现的频率。可信度用来衡量关联规则的准确性。第三个术语是作用度,作用度用来衡量关联规则对于商品出现频率的影响。只有作用度大于1的关联规则才有实际的应用意义。下面我们分别介绍这三个术语的计算方法。

    支持度(Support)

    支持度是两件商品在所有购物车中同时出现的概率,可以记录为P(A U B)。支持度的计算公式为A,B两件物品同时出现的次数与购物车总数的比率。对于前面例子中,如果我们要计算商品A和B在5条购物车记录中的支持度,具体的计算公式为1/5。商品A和B在5条购物车记录中只在uid1中同时出现过。

    单件商品的支持度的计算方法与两件商品一样,如果我们要计算商品A的支持度,具体的计算公式为3/5。商品A在5条购物车记录中共出现了3次。单件商品的支持度描述了在没有其他商品影响的情况下,商品在购物车中出现的次数。

    可信度(Confidence)

    可信度是一个条件概率,两件商品其中一件出现在购物车中时,另一件也会出现的概率。可以记录为P(B|A)。对于前面的例子中,如果要计算A和B两件物品的可信度,具体的计算公式为1/3。商品A出现的3次,商品B同时出现的次数为1次。

    作用度(Lift)

    作用度通过衡量使用规则后的提升效果来判断规则是否可用,简单来说就是使用规则后商品在购物车中出现的次数是否高于商品单独出现在购物车中的频率。如果大于1说明规则有效,小于1则无效。对于前面的例子中,如果要计算规则A-B是否有效,计算公式为(1/5)/(3/5*3/5)=(0.2)/(0.6*0.6)=0.2/0.36=0.55。作用度小于1说明A-B规则对于商品B的提升没有效果。

    按照前面的计算公式我们分别对下面的四个规则进行了计算,在获得支持度,可信度后计算出了四个规则的作用度。其中A-D规则作用度大于1,说明对购物车中已经包含商品A的用户推荐商品D,购买概率是单独推荐D的1.11倍。


    本文作者:佚名

    来源:51CTO

    展开全文
  • 第三章 关联规则挖掘理论和算法 内容提要;关联规则挖掘Association Rule Mining是数据挖掘中研究较早而且至今仍活跃的研究方法之一 最早是由Agrawal等人提出的1993...关联规则的挖掘工作成果颇丰例如关联规则的挖掘理论
  • 针对分布式数据挖掘需要节点间进行大量数据交换的缺点,根据张春生,宋琳琳提出的关联规则局部性原理,不进行数据交换,通过节点挖掘,直接得到局部性全局关联规则,通过各节点间规则的合并,直接得到非局部全局关联...
  • 基于关联规则中Apriori算法的课程分析的研究,李伟杰,张晓莹,运用关联分析方法对学生数十门课程成绩数据进行挖掘,寻找课程之间的关联关系。首先分析了关联规则的原理和方法,然后提出了一种
  • 关联规则的评价中 ,对评价参数的...对获取的参数值 ,利用扩散原理计算参数在数据库上的分布 ,通过分布实现对规则的评价和取舍 ,从而实现关联规则的自动评价和取舍 ,以及最大程度的自动知识获取 ,并具有实时查询特性。
  • 关联规则最经典案例就是“啤酒与尿布”,沃尔玛拥有世界上最大数据仓库系统,为了能够准确了解顾客在其门店购买习惯,沃尔玛对其顾客购物行为进行购物篮分析,想知道顾客经常一起购买商品有哪些。...

    一、关联规则简介
    关联规则(Apriori算法),又称为关联分析。其目的是找出,一堆事物中具有关联的事物。
    关联规则最经典的案例就是“啤酒与尿布”,沃尔玛拥有世界上最大的数据仓库系统,为了能够准确了解顾客在其门店的购买习惯,沃尔玛对其顾客的购物行为进行购物篮分析,想知道顾客经常一起购买的商品有哪些。沃尔玛数据仓库里集中了其各门店的详细原始交易数据。在这些原始交易数据的基础上,沃尔玛利用数据挖掘方法对这些数据进行分析和挖掘。码字不易,喜欢请点赞!!!
    在这里插入图片描述
    一个意外的发现是:"跟尿布一起购买最多的商品竟是啤酒!经过大量实际调查和分析,揭示了一个隐藏在"尿布与啤酒"背后的美国人的一种行为模式:在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,而他们中有30%~40%的人同时也为自己买一些啤酒。产生这一现象的原因是:美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。

    二、关联规则
    关联规则最重要的就是支持度Support和置信度Confidence。

    1. 支持度的计算方法:
    #下面式中XY表示XY同时发生的次数,N表示总事物数
    support(X->Y) = XY/N
    
    1. 置信度的计算方法:
    confidence(X->Y) = support(X->Y) / support(X)
    <=>
    #XY表示XY同时发生的次数,X表示X发生的次数
    confidence(X->Y) = XY/X
    

    最终找到的规则,要满足支持度和置信度即可。

    三、关联规则使用
    关联规则的使用可以看我下面这篇博客,是一个公司机器学习岗位的笔试题。
    https://blog.csdn.net/Asher117/article/details/87745195

    展开全文
  • 频繁模式和关联规则原理与简述

    千次阅读 2016-10-13 09:14:15
    频繁模式和关联规则: “啤酒与尿布”故事: 这是一个几乎被举烂例子,“啤酒与尿布”故事产生于20世纪90年代美国沃尔玛超市中,沃尔玛超市管理人员分析销售数据时发现了一个令人难于理解现象:在某些特定...
  • 关联规则挖掘——Apriori算法基本原理以及改进

    万次阅读 多人点赞 2016-11-24 17:09:06
    关联规则挖掘一个典型例子就是购物篮分析,该过程通过发现顾客放入其购物篮中不同商品之间联系,分析出顾客购买习惯,通过了解哪些商品频繁地被顾客同时买入,能够帮助零售商制定合理营销策略。购物篮事务...
  • 一、基本概念 1. 关联规则 关联规则是形如X=>...关联规则的支持度是事务集中同时包含X和Y的事务数量与所有事务数量之比,它反映了X和Y中所含的事务的项在事务集中同时出现的频率,记为support(X=>Y),即s...
  • 一、关联规则原理: 1、概述: 关联规则算法是在一堆数据集中寻找数据之间某种关联,通过该算法我们可以对数据集做关联分析——在大规模数据中寻找有趣关系任务。这些关系可以有两种形式:频繁项集、关联...
  • 关于数据挖掘关联规则的介绍,可以参见:http://baike.baidu.com/view/1076817.htm?fr=ala0_1关联规则是形如X→Y的蕴涵式,其中且, X和Y分别称为关联规则的先导(antecedent或left-hand-side, LHS)和后继(c...
  • Apriori 算法apriori关联规则算法的原理设计较为简单,著名的“啤酒和尿布”说的就是Apriori算法,通俗来讲apriori旨在寻找频繁项集,以帮助商家将消费者有可能一起搭配购买的物品放置在同一个地方,提高消费者的...
  • 关联规则(Association Rules)是反映一个事物与其他事物之间相互依存性和关联性,如果两个或多个事物之间存在一定关联关系,那么,其中一个事物就能通过其他事物预测到。关联规则是数据挖掘一个...
  • 1.关联规则浅谈  关联规则(Association Rules)是反映...关联规则是数据挖掘一个重要技术,用于从大量数据中挖掘出有价值数据项之间相关关系。  关联规则首先被Agrawal, lmielinski and Swami在1993年S...
  • 关联规则Apriori算法1、关联规则概述关联规则算法是在一堆数据集中寻找数据之间某种关联,通过该算法我们可以对数据集做关联分析——在大规模数据中寻找有趣关系任务。这些关系可以有两种形式:频繁项集、关联...
  • Apriori 算法apriori关联规则算法的原理设计较为简单,著名的“啤酒和尿布”说的就是Apriori算法,通俗来讲apriori旨在寻找频繁项集,以帮助商家将消费者有可能一起搭配购买的物品放置在同一个地方,提高消费者的...
  • 之前介绍了关联规则的原理:传送门 发现一个专门进行关联规则分析的python库:mlxtend 下面进行简单的演示 简单数据实现 我们自己简单构造几个数据熟悉下 retail_shopping_basket = {'ID':[1,2,3,4,5,6], 'Basket':...
  • (原创作者:陈玓玏) 一、FP-growth应用场景 FP-growth和Apriori一样,可以用于挖掘频繁项,常...另外一个应用场景其本质也是关联规则,也就是在针对二分类数据分析中,通常会对单变量进行分析,然后提取出...
  • 本文代码与数据可在公众号 “ 数据分析与商业实践 ” 后台回复 “ 0716 ” 获取,更多商业实践案例等你来撩 推荐系统将成为未来十年里最重要变革,社会化网站将由推荐系统所驱动 — John Riedl明尼苏达大学教授...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 664
精华内容 265
关键字:

关联规则的原理