精华内容
下载资源
问答
  • 关联规则分析
    2019-06-23 16:18:29

    1. 定义

    关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。

    2. 概念

    1. 项目: 交易数据库中的一个属性字段,每个字段有一定的取值范围。对超级市场来讲,项目一般是指一次交易中的一个物品,
      例如,客户在某次交易中购买了“牛奶”、“黄油”和“面包”就代表了三个不同的项目。

    2. 交易:某个客户在一次交易中,发生的所有项目的集合。

    3. 项目集:包含若干个项目的集合。项目集可能是一个交易,也可能不是一个交易,但一个交易一定是一个项目集。
      在上个例子中,{“牛奶”,“面包”,“黄油”}、{“牛奶”}、{“牛奶”,“面包”}、{“面包”,“黄油”}等都是项目集,但只有{“牛奶”,“面包”,“黄油”}才是一个交易。

    4. 项目集的维数: 把一个项目集所包含的项目的个数称为此项目集的维数或项目集的长度。长度为k的项目集,称作k维项目集。
      例如:项目集I={“牛奶”,“面包”,“黄油”}的维数或长度为3,记作3-项目集。

    5. 支持度: 假定X是一个项目集,D是一个交易集合或交易数据库,称D中包含X的交易的个数与D 中总的交易个数之比为X在D中的支持度。
      例如:D={T1,T2,T3,T4}包含4 个交易,其中T1={A,B,C}、T2={B}、T3={A,B,C,D}、T4={B,C,D},如果X={B,C},则在D中包含X 的交易有:T1,T3,T4,此时D中总的交易个数为4,故X在D中的支持度为75%。X的支持度记作sup(X),而关联规则X⇒Y的支持度则记作sup(X∪Y)。
      在这里插入图片描述

    6. 可信度:对形如X⇒Y的关联规则,其中X和Y都是项目集,定义规则的可信度为交易集合D中既包含X也包含Y的交易个数与D中仅包含X而不包含Y的交易个数之比,或者说是项目集X∪Y的支持度与X的支持度之比,即sup(X∪Y)/ sup(X)。把规则X⇒Y的可信度记作conf(X⇒Y)。一个规则的可信度的范围在0到1之间。事实上可信度即是指在出现了项目集X的交易中,项目集Y也同时出现的概率有多大。即
      在这里插入图片描述

    7. 最小支持度:由用户定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性,记作minsup。

    8. 最小可信度:由用户定义的衡量可信度的一个阈值,表示规则的最低可靠性,记作minconf。

    9. 频繁项目集:对一个项目集X,如果X的支持度不小于用户定义的最小支持度阈值,即sup(X)≧minsup,称X为频繁项目集或大集(Large Itemset)。

    3. 常见的关联规则算法

    在这里插入图片描述

    4. Apriori 算法

    Apriori 算法是一种最有影响的挖掘布尔关联规则频繁项目集的算法,最早是由 Agrawal等人提出的(1993年)。
    Apriori 算法的挖掘问题可以被归纳成两个子问题:
    (1) 找出所有频繁项集:根据定义,这些项集出现的频繁性至少等于最小支持度计数。
    (2) 由频繁项集产生强关联规则:根据定义,这些规则必须满足最小支持度和最小可信度。

    Apriori 算法使用逐层搜索迭代的方法,K-项集用于探索K+1-项集。首先,找出频繁1-项集的集合,该集合记做L1,L1用于找频繁2-项集的集合L2,而L2用于找L3,如此下去,直到找不到频繁项目集为止。找到每个Lk就需要扫描一次数据库。这里用到的核心原来就是:频繁项目集的子集是频繁项目集;非频繁项目集的超集是非频繁项目集。
    Apriori 算法的描述如下:
    输入:事务数据库D,最小支持度阈值min-sup
    输出:D中的频繁项集L
    方法:
    (1) find_frequent_1_itemsets(D)
    (2) for(k=2;Lk-1!=Φ;k++){
    (3) Ck=apriori-gen(Lk-1,minsup)//新的候选集
    (4) for each transaction t∈D{
    (5) Ct=subset(Ck,t);//事务t中包含的候选集
    (6) for each candidates c∈Ct do
    (7) c.count++;
    (8) }
    (9) Lk={c∈Ck|C.count>=minsup}
    (10) }
    (11) answer∪kLk;

    更多相关内容
  • 关联规则分析-python

    2020-06-18 10:35:15
    根据Orange3包对数据进行关联规则分析,生成“规则”,“项集出现的数目”,“置信度”,“覆盖度”,“力度”,“提升度”,“利用度”记录并返回到excel表中。
  • 对其Excel数据进行关联规则分析之前需要对数据进行预处理:将表头去掉,并保存你所需要的数据,导入你所需要分析的Excel地址和‘Sheet1’,所得出的数据,即是你所需要的结果。
  • 目的探讨肥胖程度与常见慢性病之间的关联关系,为常见慢病的预防和管理提供大数据支撑。...关联规则分析结果显示,超重与高血压、冠心病之间均有强关联性,肥胖与高血压之间也有强关联性,而糖尿病与体
  • 数据挖掘关联规则分析数据集

    热门讨论 2015-10-26 11:55:48
    这是两个关于关联规则挖掘的合成数据集,数据量在10万左右,适用于关联规则分析
  • 该项目毕业设计时做的项目(毕了业的都懂)。 采用传统的 SSM 框架进行开发,使用 JDK8 + Mysql5.7 进行搭建(表和需要的数据都包含在项目中)。 该项目属于二次开发项目,功能及其简单。 在使用时,将项目导入到 ...
  • 关联分析是指从大量数据中发现项集之间有趣的关联和相关联系。关联分析的一个典型例子是购物篮分析。在大数据时代,关联分析是最常见的数据挖掘任务之一。 概述 关联分析是一种简单、实用的分析技术,是指发现存在...
  • 为了预测论坛舆情及其动态演变趋势,基于多时间序列的关联分析,集中分析了论坛中3个量的时间序列之间的关联规则:活跃者之间的关系强度的时间序列、坚定支持者人数的时间序列以及坚定支持者成员的变化频度的时间序列。...
  • R语言--数据挖掘3---关联规则分析

    千次阅读 2021-04-15 21:54:51
    文章目录关联规则分析数据介绍基本原理介绍基本概念:Apriori算法有意义的关联规则案例分析总结反思学习其他同学的代码参考代码这其实跟前面排序是等价的查看分析结果inspect函数逐条查看关联规则by="lift"指定按...

    关联规则分析

    本次报告主要包括以下内容:

    1. 数据介绍
    2. 基本原理介绍
    3. 结合理论进行案例分析
    4. 最后总结
    5. 附录加上参考和代码

    数据介绍

    本次报告所使用的案例数据为购物篮数据,存储在shop_basket.csv文件中。主要有有1000个观测数据,除去前面7个介绍消费者的编号、消费金额、支付方式、性别、是否是本地、收入、年龄变量之外,剩下还有11个商品的数据,这些数据主要介绍每个观测者是否购买这些商品。

    本案例的重点在于分析商品之间的关联规则,主要是利用这后面11个商品的数据来进行分析,故在以下的分析中将数据前面7列删除。并且本次使用的数据中有每个列的观测值均是0和1,分别代表不购买、购买这些商品。这里我们需要将每个用户的观测数据进行转换,若在某一行观测数据中,某个字段(变量)的取值是1,则将这个字段名(变量)写入第一个观测值中,以下所有的观测值都这样处理。

    基本原理介绍

    基本概念:

    T = i 1 , i 2 , . . . , i m \mathcal{T} = {i_1, i_2, ..., i_m} T=i1,i2,...,im表示所有项的集合。 T \mathcal{T} T的子集称为项集

    关联规则的形式为 A ⇒ B A \Rightarrow B AB A , B A, B A,B 是两个项集,满足 A ∪ B = ∅ A \cup B=\varnothing AB=, A A A B B B分别 称为前项集后项集

    项集的支持度:项集X的支持度support( X X X)定义为数据集 D D D的观测中包含X中所有项的比例。

    关联规则的支持度:关联规则 A ⇒ B A \Rightarrow B AB的支持度confidence( A ⇒ B A \Rightarrow B AB)为数据集D的观测中同时包含 A A A B B B中所有项的比例,即support( A ∪ B A \cup B AB).

    关联规则的置信度:关联规则 A ⇒ B A \Rightarrow B AB的置信度confidence( A ⇒ B A \Rightarrow B AB)定义为数据集D中包含A的观测中同时包含 B B B的比例,即support( A ⇒ B A \Rightarrow B AB)/support( A A A),这等价于给定A,B出现的条件概率。

    在数据挖掘时,需要先指定最小支持度阈值(min_sup)和最小置信度(min_conf)。

    强关联规则:支持度不小于min_sup且置信度不小于min_conf的关联规则。其中如果项集A满足最小支持度,那么 A ⇒ ∅ A \Rightarrow \varnothing A是强关联规则。

    在此处,满足强关联规则条件的规则为好规则,这是评价一个规则好坏的一个标准。

    Apriori算法

    简介:Apriori寻找最有影响力的关联规则挖掘的算法。

    步骤

    1. 找到所有频繁项集,那些support ≥ \ge min_sup称为频繁项集。
    2. 从频繁项集中生成所有强关联规则。

    算法的性质

    1. 一个频繁项集的任何自己必然是频繁项集。
    2. 一个非频繁项集的任何超集必然是非频繁项集。

    对性质的举例子解释

    • 如果项集{A}是频繁的,则其子集{A, B}, {A, B,C}也是频繁的,因为A出现,则可以推出{A, B}和{A, B, C}也会出现。
    • 同上,如果{A, B}不出现,说明{A}不出现,{B}也不出现。是性质1的逆否命题。

    有意义的关联规则

    解释关联规则挖掘的结果光有支持度和置信度是不够的,还需要考察当前关联规则的购买某件商品的提升值。其中关联规则 A ⇒ B A \Rightarrow B AB提升值为:该规则的置信度与B的支持度的比例,即
    p ( B ~ ∣ A ~ ) p ( B ~ ) \cfrac{p(\tilde{B}|\tilde{A})}{p(\tilde{B})} p(B~)p(B~A~)
    在引入提升值之后,评价关联规则的好坏变成,支持度和置信度均不小于相应的最小阈值,且提升度大于1.

    案例分析

    首先读取数据,并且需要将数据转换成项集数据,将原始商品类数据
    在这里插入图片描述

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6XfVml8g-1618494953333)(C:\Users\laguarange\AppData\Roaming\Typora\typora-user-images\image-20210331195814928.png)]

    通过R语言的这种处理转变成每一行数据只有当前列名为1的那些列名,这些列表代表顾客购买的商品。

    > inspect(shopBasket[1:4])
        items                           
    [1] {confectionery,dairy,freshmeat} 
    [2] {confectionery,freshmeat}       
    [3] {beer,cannedveg,fish,frozenmeal}
    [4] {dairy,wine} 
    

    以上说明,第一个顾客购买了confectionery,dairy,freshmeat三件商品,第二个顾客购买了confectionery,freshmeat两件商品。

    再查看商品篮数据的概览

    > summary(shopBasket)
    transactions as itemMatrix in sparse format with
     1000 rows (elements/itemsets/transactions) and
     11 columns (items) and a density of 0.2545455 
    
    most frequent items:
     cannedveg frozenmeal   fruitveg       beer       fish    (Other) 
           303        302        299        293        292       1311 
    
    element (itemset/transaction) length distribution:
    sizes
      0   1   2   3   4   5   6   7   8 
     60 174 227 220 175  81  38  21   4 
    
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
        0.0     2.0     3.0     2.8     4.0     8.0 
    
    includes extended item information - examples:
          labels
    1       beer
    2 cannedmeat
    3  cannedveg
    

    由上结果可以得知,数据中有1000个交易,所有购买的商品种类有11种。在一个1000*11的矩阵中,只有25.45455%个单元格有值,其它都是空的。同时也可得知,最常被购买的商品有cannedveg, frozenmeal fruitveg, beer, fish等5类商品。有4次交易同时购买了8种商品,购买商品的数量最少购买0件商品,最多一次性购买8件商品。

    其中关于最频繁购买的商品的频率直方图如下:
    在这里插入图片描述

    在以上对数据格式进行预处理之后,使用Apriori算法进行数据之间的关联性分析。

    由于在调用Apriori算法的时候,其中有一个sup_min,我们首先设置一个比较低的值,以查看大致的support的取值情况,根据这些结果再进一步选取更加合适的support_min的取值。

    调整关联规则的sup_min和conf_min:

    首先,固定conf_min=0.5(default),这里取sup_min为0.01,查看大致的情况:

    Min1st QuMedianMean3rd QuMax
    support0.010000.012000.017000.029230.031000.30300

    使用summary(rules)得到Apriori算法分析的结果:
    在这里插入图片描述

    关联规则数为845有些多,因为实际中不需要这么多的关联规则,因此在这里我尝试将取值以上support的上三分位数0.031来作为新的支持度。

    同理,固定sup_min,将conf_min设置为0.1查看得到上三分位数为0.5233。最终设置sup_min为0.031,设置conf_min为0.5233来作为后续的最小支持度和最小置信度,此时关联规则的数量为54条,大小合适。

    最后得到强关联规则的前6条数据。如下所示,其中每条关联规则的支持度,置信度以及提升度都比较大。根据关联规则好坏的判别准则来讲,以下的关联规则均是在我们设置的规则下的强关联规则。
    在这里插入图片描述

    画图可视化最后得出强关联规则的支持度、置信度及提升度的分布:
    在这里插入图片描述
    可见,数据关联规则的置信度主要集中在上图的四个角,因此我们可以多加关注那些支持度、置信度以及提升度位于以上四角的商品。但是如果仅仅是在保证支持度和置信度的情况下,想要极大地提升关联规则的置信度的话,可以考虑将上方左右两角的商品放在一起。

    总结反思

    本案例主要分析了一下shop_basket.csv数据中顾客购买的商品之间的关联规则,调用R语言中的Apriori算法来分析这些关联规则,此处并没有考虑到之前所给出的顾客的消费金额以及收入等信息,这些仅仅是关联规则的初步分析。所以在以后的学习中,学习完了数据挖掘的建模算法之后,还需要回来将前7列的变量列入我们的分析范畴之内,以便挖掘出更加完整的信息。

    此外,在进行选择min_sup和min_conf的时候,我个人仅凭借着自身的直觉判断了一下min_sup和min_conf的取值。仅仅从(1)强规则的个数。(2)设置一个比较低的min_sup和min_conf值,固定其中一个值查看min_sup的上三分位数(3)调节min_sup之后,再查看min_conf的上三分位数来作为最终的min_conf。这还没有参考到完善的数据挖掘理论,此处还需要进一步学习以改善。

    最后画图分析查看强关联规则的支持度、可信度以及支持度的分布,更加清晰与直观。

    学习其他同学的代码

    1. 考虑前7列数据中所有变量的值,画图展示,并且在最后对其进行关联规则挖掘,发现年龄和消费额之间关联比较大。

    2. 在挖掘出强关联规则之后,需要对得到的结果进行解释。

    3. 也不删掉前7列的数据,对其进行分析。可以分别对男性和女性进行分析,指关联规则进行对比。缺点:男性和女性的比例是不一致的,所以需要考虑对比是否有意义?我自己的思考:可以尝试使用过采样来达到1:1的比例,且最开始在描述的时候需要将男性和女性数据之间的对比写出来。

      对比很重要的一点:需要有可比性,需要有控制变量

    参考

    [1]薛薇.R语言数据挖掘[M] 北京:中国人民大学出版社.2016.324-339

    [2]普拉迪帕塔 · 米什拉.R语言数据挖掘:实用项目解析[M] 北京:机械工业出版社.2017.112-121

    [3] 关联规则transaction数据准备

    [4] 【Python数据挖掘课程】八.关联规则挖掘及Apriori实现购物推荐

    [5] 关联分析(3):Apriori R语言实现

    代码

    library(arules)
    library(arulesViz)
    
    # ----------1 读取数据
    setwd("D:/lagua/CODING/R-learn/R-code/Chap4_AssociationRule")
    shopBasket = read.csv("shop_basket.csv", sep=",")
    # 去除前7个与购买商品无关的数据
    shopBasket = shopBasket[, -seq(1, 7, 1)]
    
    # ----------2 查看数据、转换数据、画图查看
    # ----------2 查看数据
    # 查看前4个观测数据顾客购买的商品
    # 等价于inspect(shopBasket[1:4])
    for (i in 1:4){
      print(names(shopBasket[i,])[shopBasket[i,]==1])
    }
    
    # ----------2 转换数据
    # 将数据每一行字段取值为1的列名拿出来,这些列名代表每一条观测购买的商品
    shopBasket <- apply(shopBasket,1,function(x) names(x)[x==1])
    # 或者直接list(shopBasket)
    # 再shopBaseket = as(shopBasket, "transactions")
    # 转换成Apriori可以识别的数据类型
    shopBasket = as(shopBasket, "transactions")
    
    # 查看的概览
    summary(shopBasket)
    inspect(shopBasket[1:4])
    
    # ----------2 画图查看
    help("itemFrequencyPlot")
    itemFrequencyPlot(shopBasket, support=0.01, 
                      main="Relative Itemeq Plot",
                      type="absolute")
    
    
    # ----------3 关联分析 调整sup_min, conf_min
    # 关联分析 初步分析
    help(apriori)
    rules <- apriori(shopBasket, 
                     parameter=list(support=0.01, confidence=0.1,target="rules"))
    summary(rules)
    
    # 固定min_conf 设置support为0.031(上三分位数)
    rules <- apriori(shopBasket, 
                     parameter=list(support=0.031, confidence=0.1,target="rules"))
    summary(rules)
    
    # 调整min_sup之后并固定 设置confidence为0.5233(上三分位数)
    rules <- apriori(shopBasket, 
                     parameter=list(support=0.031, confidence=0.5233,target="rules"))
    summary(rules)
    
    
    # ----------4 查看关联规则,按照support, confidence, lift排序
    # 把所有规则按照lift(提升度)排序查看关联规则
    shopBasket.sorted<-sort(x=rules,by="lift",decreasing=TRUE)
    inspect(shopBasket.sorted)
    
    # 逐条查看数据集shopBasket.sorted的前6条记录
    # 这其实跟前面排序是等价的
    inspect(head(shopBasket.sorted))
    
    # 查看分析结果
    options(digits=4)
    #设置输出小数位数为4位数
    inspect(head(rules,by="lift"))
    # inspect函数逐条查看关联规则
    #  by="lift"指定按提升值降序排列。
    
    
    # ----------5 关联分析结果可视化
    plot(rules)
    # 对关联规则的支持度、置信度和提升值进行可视化
    
    
    的前6条记录
    # 这其实跟前面排序是等价的
    inspect(head(shopBasket.sorted))
    
    # 查看分析结果
    options(digits=4)
    #设置输出小数位数为4位数
    inspect(head(rules,by="lift"))
    # inspect函数逐条查看关联规则
    #  by="lift"指定按提升值降序排列。
    
    
    # ----------5 关联分析结果可视化
    plot(rules)
    # 对关联规则的支持度、置信度和提升值进行可视化
    
    展开全文
  • 关于Weka的数据关联规则分析实验 班级 市场091 姓名 杨超 学号 200916012106 实验基本原理及目的 关联规则的定义 假设I是项的集合给定一个交易数据库其中每个事务(Transaction)t是I的非空子集即每一个交易都与一个...
  • #资源达人分享计划#
  • 5 分钟掌握 Python 关联规则分析

    千次阅读 2021-03-12 16:00:24
    1. 关联规则大家可能听说过用于宣传数据挖掘的一个案例:啤酒和尿布;据说是沃尔玛超市在分析顾客的购买记录时,发现许多客户购买啤酒的同时也会购买婴儿尿布,于是超市调整了啤酒和尿布的货架摆放,...

    1. 关联规则

    大家可能听说过用于宣传数据挖掘的一个案例:啤酒和尿布;据说是沃尔玛超市在分析顾客的购买记录时,发现许多客户购买啤酒的同时也会购买婴儿尿布,于是超市调整了啤酒和尿布的货架摆放,让这两个品类摆放在一起;结果这两个品类的销量都有明显的增长;分析原因是很多刚生小孩的男士在购买的啤酒时,会顺手带一些婴幼儿用品。

    不论这个案例是否是真实的,案例中分析顾客购买记录的方式就是关联规则分析法Association Rules。

    关联规则分析也被称为购物篮分析,用于分析数据集各项之间的关联关系。

    1.1 基本概念

    • 项集:item的集合,如集合{牛奶、麦片、糖}是一个3项集,可以认为是购买记录里物品的集合。

    • 频繁项集:顾名思义就是频繁出现的item项的集合。如何定义频繁呢?用比例来判定,关联规则中采用支持度和置信度两个概念来计算比例值

    • 支持度:共同出现的项在整体项中的比例。以购买记录为例子,购买记录100条,如果商品A和B同时出现50条购买记录(即同时购买A和B的记录有50),那边A和B这个2项集的支持度为50%

    • 置信度:购买A后再购买B的条件概率,根据贝叶斯公式,可如下表示:

    • 提升度:为了判断产生规则的实际价值,即使用规则后商品出现的次数是否高于商品单独出现的评率,提升度和衡量购买X对购买Y的概率的提升作用。如下公式可见,如果X和Y相互独立那么提升度为1,提升度越大,说明X->Y的关联性越强

    1.2 关联规则Apriori算法

    关联规则方法的步骤如下:

    • 发现频繁项集

    • 找出关联规则

    Apriori算法是经典的关联规则算法。Apriori算法的目标是找到最大的K项频繁集。Apriori算法从寻找1项集开始,通过最小支持度阈值进行剪枝,依次寻找2项集,3项集直到没有更过项集为止。

    下面是一个案例图解:

    • 图中有4个记录,记录项有1,2,3,4,5若干

    • 首先先找出1项集对应的支持度(C1),可以看出4的支持度低于最小支持阈值,先剪掉(L1)。

    • 从1项集生成2项集,并计算支持度(C2),可以看出(1,5)(1,2)支持度低于最小支持阈值,先剪掉(L2)

    • 从2项集生成3项集,(1,2,3)(1,2,5)(2,3,5)只有(2,3,5)满足要求

    • 没有更多的项集了,就定制迭代

    2. mlxtend实战关联规则

    关联规则目前在scikit-learn中并没有实现。这里介绍另一个python库mlxtend。

    2.1 安装

    pip install mlxtend
    

    2.2 简单的例子

    • 来看下数据集:

      import pandas as pd
      
      item_list = [['牛奶','面包'],
          ['面包','尿布','啤酒','土豆'],
          ['牛奶','尿布','啤酒','可乐'],
          ['面包','牛奶','尿布','啤酒'],
          ['面包','牛奶','尿布','可乐']]
      
      item_df = pd.DataFrame(item_list)
      
    • 数据格式处理,传入模型的数据需要满足bool值的格式

      from mlxtend.preprocessing import TransactionEncode
      
      te = TransactionEncoder()
      df_tf = te.fit_transform(item_list)
      df = pd.DataFrame(df_tf,columns=te.columns_)
      

    • 计算频繁项集

      from mlxtend.frequent_patterns import apriori
      
      # use_colnames=True表示使用元素名字,默认的False使用列名代表元素, 设置最小支持度min_support
      frequent_itemsets = apriori(df, min_support=0.05, use_colnames=True)
      
      frequent_itemsets.sort_values(by='support', ascending=False, inplace=True)
      
      # 选择2频繁项集
      print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x: len(x)) == 2])  
      

    • 计算关联规则

      from mlxtend.frequent_patterns import association_rules
      
      # metric可以有很多的度量选项,返回的表列名都可以作为参数
      association_rule = association_rules(frequent_itemsets,metric='confidence',min_threshold=0.9)
      
      #关联规则可以提升度排序
      association_rule.sort_values(by='lift',ascending=False,inplace=True)    
      association_rule
      # 规则是:antecedents->consequents
      

    选择出来关联规则之后,根据提升度排序后,可能最高提升度的规则是在我们常识范围内,那这个规则的价值就不高。所以我们要在产生的规则中根据业务特点进行筛选,像开篇提到(啤酒->尿布)完全不同的品类之间的关联。

    笔者最近用关联规则分析用户的体检报告记录,也得出了关于各个病症的有意义的关联,如并发症,不同病症相互影响等。

    3. 总结

    本分介绍关联规则的基本概念和经典算法Apriori,以及python的实现库mlxtend使用。

    总结如下:

    • 关联规则用于分析数据集各项之间的关联关系,想一想啤酒和尿布的故事

    • 三个重要概念:支持度,置信度和提升度

    • Apriori通过迭代先找1项集,用支持度过滤项集,逐步找出所有k项集

    • 用置信度或提升度来选择满足的要求的规则

    • mlxtend对数据要求转换成bool值才可用

    作者简介:wedo实验君, 数据分析师;热爱生活,热爱写作

    赞 赏 作 者

    更多阅读

    谷歌 AI 团队用 GAN 模型合成异形生物体

    英伟达研究出用较少数据集训练GAN的方法

    Python 中图像标题生成的注意力机制实战

    特别推荐


    点击下方阅读原文加入社区会员

    展开全文
  • 关联规则商品销售数据集,描述一个商店的商品销售记录,用于数据挖掘与机器学习。
  • 数据挖掘之关联规则分析

    万次阅读 2018-08-12 14:01:18
    关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。 用于寻找数据集中各项之间的关联关系。根据所挖掘的关联关系,可以从一个属性的信息来推断另一个属性的信息。当置信度...

    关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。

    用于寻找数据集中各项之间的关联关系。根据所挖掘的关联关系,可以从一个属性的信息来推断另一个属性的信息。当置信度达到某一阈值时,可以认为规则成立。

    常用的关联规则算法

    算法名称算法描述
    Apriori

    关联规则最常用、最经典的挖掘频繁项集的算法,核心思想是通过连接产生候选项及其支持度,然后通过剪枝生成频繁项集

    无法处理连续型数值变量,往往分析之前需要对数据进行离散化。

    FP-Tree

    针对Apriori算法固有的多次扫描事务数据集的缺陷,提出的不产生候选频繁项集的方法。

    Apriori和FP-Tree都是寻找频繁项集的算法

    Eclat算法一种深度优先算法,采用垂直数据表示形式,在概念格理论的基础上利用基于前缀的等价关系将搜索空间划分为较小的子空间
    灰色关联法分析和确定各因素之间的影响程度,或是若干个子因素(子序列)对主因素(母序列)的贡献度而进行的一种分析方法

    本文介绍最常用的Apriori算法。

    项集:项的集合。包含k个项的项集成为k项集,如集合{牛奶、麦片、糖}是一个3项集

    频繁项集:如果项集I的相对支持度满足预定义的最小支持度阈值,则I是频繁项集

    支持度(相对支持度):项集A、B同时发生的概率。

    置信度:项集A发生,则项集B发生的概率。

    最小支持度:用户或专家定义的衡量支持度的一个阈值,表示项集在统计意义上的最低重要性。

    最小置信度:用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。同时满足最小支持度阈值和最小置信度阈值的规则成为强规则。

    目前,设置最小支持度和最小置信度,大部分根据业务经验设置初始值,然后经过多次调整,获取与业务相符的关联规则结果。


    举例1:

    R语言实现:

    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%。

    这样就可以进行智能推荐了。


    举例2:

    trans = as(a,"transactions") #将数据转换成transactions属性
    
    inspect(trans[1:5]) #观察前五行的数据
    
    rules = apriori(trans,parameter = list(support=0.06,confidence = 0.75)) #调用Apriori算法,最小支持度为0.06,最小置信度为0.75
    
    rules #显示rules中关联规则条数
    
    inspect(rules) #观测rules中的关联规则

    输出结果如下:

    结果分析(以结果第2条为例):

    A4、F3~H4的支持度最大,为7.85%,置信度为87.96%。说明当A4、F3的条件满足时,H4的可能性为87.96%,而这种情况发生的可能性为7.85%。

     

    Python实现:

    import pandas as pd 
    from apriori import * 导入自己编写的Apriori函数
    data = pd.read_excel("menu_orders.xls",header=None)
    
    print(u'\n转换原始数据为0-1矩阵')
    ct = lambda x:pd.Series(1,index=x[pd.notnull(x)]) #转换0-1矩阵的过渡函数
    b = map(ct,data.as_matrix()) #用map方式执行
    data = pd.DataFrame(list(b)).fillna(0) #实现矩阵转换,空值用0填充
    print(u'\n转换完毕。')
    del b #删除中间变量b,节省内存
    
    support = 0.2 #最小支持度
    confidence = 0.5 #最小置信度
    ms = '---' #连接符
    find_rule(data,support,confidence,ms).to_excel('1.xls')

    输出结果如下:

    展开全文
  • 阐述了关联规则算法的基本原理,并利用事务数据库中的销售数据和SQL Server 2008 Data Mining Add-Ins for Microsoft office 2007工具挖掘顾客购买的商品之间各种有趣联系,帮助商家制定营销策略,最终向每个顾客...
  • 关联规则分析

    万次阅读 多人点赞 2017-11-27 17:11:03
    数据挖掘是指以某种方式分析数据源,从中发现一些潜在的有用的信息,所以数据挖掘又称作知识发现,而关联规则挖掘则是数据挖掘中的一个很重要的课题,顾名思义,它是从数据背后发现事物之间可能存在的关联或者联系。...
  • 针对所提供的CatalogCrossSell.xls数据集,要求对该数据及进行关联规则分析,并且解释生成的结果,评价指标包括lift,ratio, confidence, support等,并且最后根据这些结果为Exeter做出合理建议: 2.分析数据集: ...
  • 一卡通食堂消费数据的聚类及关联规则分析.pdf
  • 机器学习—关联规则分析之Apriori算法及其python实现

    千次阅读 多人点赞 2021-04-01 22:09:19
      关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找到各项之间的关联关系,而这种关系并没有在数据中直接体现出来。以超市的销售数据为例,当存在很多商品时,可能的商品组合数量达到了令人...
  • 1、关联分析定义:从数据集中找出对象或项集之间同时发生的关联或顺序关系。 应用: 购物篮数据分析关联销售 ​ 目录编排 ​ 促销分析 ​ web日志分析 ​ DNA序列分析(癌症数据分析中,搜索...
  • 关联规则分析

    千次阅读 2017-11-27 17:22:00
    关联规则是形如X→Y的蕴涵式,其中, X和Y分别称为关联规则的先导(antecedent或left-hand-side, LHS)和后继(consequent或right-hand-side, RHS) 故事   在描述有关关联规则的一些细节之前,先来看一个有趣的...
  • python大数据分析与机器学习商业案例实战_医学病症关联规则分析_编程实例课程教程.pdf
  • 基于数据挖掘的疏肝法治疗高血压病关联规则分析.pdf
  • 基于多源数据挖掘及关联规则分析的事故事件等级判定.pdf
  • 一、关联规则分析(一) 关联规则分析也称为购物篮分析,早期是为了发现超市销售数据中不同商品的关联关系,可以帮助超市了解客户的购买模式和习惯,以便于制定更好的销售计划。可以求出当a数据出现时b数据出现的...
  • 机器学习与算法源代码15: 关联规则分析-Apriori模型.zip
  • weka关联规则分析

    千次阅读 2018-10-03 20:01:32
    weka关联规则学习可以发现属性组之间的依赖关系 一、关联规则: 二、关联规则挖掘的主要算法: 这三种方法都不支持数值型数据。事实上,绝大多数关联规则都不支持数值型,所以必须将数据进行处理,经数据按区段...
  • 关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。 8.1.1 常用关联规则算法 常用关联算法如所表8 1所示。
  • 针对地铁施工事故频发,施工事故数据间的关系日益复杂的特点,提出了多维关联规则在地铁施工事故数据的具体应用方法,展现了“人―机―环境―管理”和事故发生类型之间如何挖掘强关联规则的过程。通过30个地铁施工...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 201,843
精华内容 80,737
关键字:

关联规则分析