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

文章目录

    • 1.案例引入
      • (1)啤酒与尿布的故事
      • (2)购物篮例子
    • 2.关联分析问题定义
      • 2.1二元表示
      • 2.2项集和支持度计数
      • 2.3 关联规则
      • 2.4为什么使用支持度和置信度?
      • 2.5.1频繁项集的产生
      • 2.5.2Apriori算法
  • 未完待续

1.案例引入

(1)啤酒与尿布的故事

“啤酒与尿布”的故事产生于20世纪90年代的美国沃尔玛超市。沃尔玛的超市管理人员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一个购物篮中,这种独特的销售现象引起了管理人员的注意,经过后续调查发现。
  原来,美国的妇女通常在家照顾孩子,所以她们经常会嘱咐丈夫在下班回家的路上为孩子买尿布,而丈夫在买尿布的同时又会顺手购买自己爱喝的啤酒。这样就会出现啤酒与尿布这两件看上去不相干的商品经常会出现在同一个购物篮的现象。
 这个发现为商家带来了大量的利润,但是如何从浩如烟海却又杂乱无章的数据中,发现啤酒和尿布销售之间的联系呢?

(2)购物篮例子

商店的收银台每天都收集了大量的顾客购物篮数据,如下表,一般也称作购物篮事务,表中每一行对应一个事务,包含一个唯一标识的TID和给定顾客购买的商品的集合。零售商对分析这些数据很感兴趣,以便了解他们的顾客的购买行为,可以使用这些价值的信息来支持各种商业应用,如市场促销,顾客管理等。
  
关联分析,用于发现隐藏在大型数据集中有意义的联系。我们将所发现的联系用关联规则或频繁项集的形式表示,从上表中可以提取出如下规则:
{尿布}---------------------->{啤酒}
  该规则表明尿布和啤酒销售之间存在很强的联系,因为许多购买了尿布的顾客也购买了啤酒。商家们可以利用这类规则,帮助他们发现新的销售组合或者商机。
  
  在数据问题中,我们需要处理两个关键问题:

  • 从大型事务数据集中发现模式可能在计算上要付出很高的代价。
  • 所发现的某些模式也有可能是虚假的,因为他们可能是偶然发生的。这两个问题是我们在接下来需要解决的。

2.关联分析问题定义

2.1二元表示

我们可以用二元形式表示购物篮数据,其中每行对应一个事务,每列对应一个项。项可以用二元变量表示,项在事务中出现它的值为1,否则为0。
  项在事务中的出现比不出现更重要,因此项也是非对称的二元变量。这也是实际购物篮数据的极其简单的展现,这种表示忽略了数据的一些比较重要特征,比如价格和数量等。
  

2.2项集和支持度计数

在关联分析中,包含0个或多个项的集合被称为项集(itemset),如果一个项集包含k个项,则称它为k-项集。如{啤酒,尿布,牛奶}是一个3项集。空集是不包含任何项的项集。
  项集的一个最重要的性质是它的支持度计数,也就是包含特定项集的事务个数。我们从数学上定义项集X的支持度计数表示为
  
从表中可以得出=={啤酒,尿布,牛奶}==的支持度计数为2,因为只有两个事务中包含了这三个项。

2.3 关联规则

关联规则是形如X->Y的蕴含表达式,其中X和Y是不相交项集。
关联规则的强度使用它的支持度(support)和置信度(confidence)度量:

支持度确定可以用于给定数据集的频繁程度,数学表达式如下。

分子指X和Y同时出现的次数,N是事务的总数,即行数
置信度确定Y在包含X的事务中出现的频繁程度,数学表达式如下。

购买X的情况下同时购买X和Y的概率,分子指X和Y同时出现的次数,分母是前置项出现的总和


例子:
考虑规则{牛奶,尿布}–>{啤酒}
(1){牛奶,尿布,啤酒}的支持度计数为2
(2)事务总数N=5
(3){牛奶,尿布}前置出现项的次数为3
(4)支持度S=2/5=0.4,置信度C=2/3=0.67

2.4为什么使用支持度和置信度?

关联规则发现:给定事务的集合T,关联规则发现是指==找出支持度大于等于minsup(最小支持度)并且置信度大于等于minconf(最小置信度)==的所有规则。
但是根据上述规则挖掘关联规则的时候,计算的代价太高。我们在实际业务中通常采用的一种策略:将关联规则挖掘任务分解为两个子任务:

  • (1)频繁项集的产生:其目标是发现满足最小支持度阈值的所有项集,这些项集就是频繁项集(frequent itemset)。该任务开销也是最大的。
  • (2)规则的产生:其目标是从上一步发现的频繁项集中提取所有高置信度规则,这些规则称作强规则。

2.5.1频繁项集的产生

根据高中数学集合的基本知识,一个含有K个元素的集合,它的非空子集个数为
(不包括空集)。频繁项集也是在集合中寻找非空子集的过程,需要计算规模可能是指数级别的,复杂度高。

为了降低频繁项集产生的计算复杂度,采用两种方法:

  • (1)减少候选项集的数目(M):使用先验Apriori原理,无需计算支持度而删除某些候选项集的有效方法。也算是一种剪枝的方法。
  • (2)减少比较次数:将每个候选集与每个事务相匹配,同时,可以存储候选项集或压缩数据集减少比较次数。
    接下来解释先验原理:
    定理1:先验原理:如果一个项集是频繁的,则它的所有子集一定也是频繁的。同理,如果一个子集是非频繁的,则整个超集是非频繁的。

我们通过上述原理,立马可以对很多非频繁项集进行剪枝,这种剪枝方法也称作基于支持度的剪枝。依赖的原理为:一个项集的支持度绝不会超过他的子集的支持度。


图3:基于支持度的剪枝:如果{a,b}是非频繁的,则所有超集均为非频繁的

2.5.2Apriori算法

(1)算法介绍
  1993年美国学者Agrawal提出通过分析购物篮中的商品集合,从而找出商品之间关联关系的关联算法,并根据商品之间的关系,找出客户的购买行为。Agrawal从数学及计算机算法角度提出了商品关联关系的计算方法——Apriori算法。
  沃尔玛从上个世纪90年代尝试将Aprior算法引入到POS机数据分析中,并获得了成功,于是产生了“啤酒与尿布”的故事。
  如何寻找?
  在历史购物记录中,一些商品总是在一起购买。但人看上去不是那么的直观的,而是隐蔽的。让计算机做这事,设计算法让计算机自动去找,找到这样的模式(规律)。
  目标:寻找那些总是一起出现商品。
  如:购买mahout实战—>机器学习实战
  引出支持度和置信度
  《mahout实战》与《机器学习实战》一起该买的记录数占所有商品记录总数的比例——支持度(整体)
  买了《mahout实战》与《机器学习实战》一起该买的记录数占所有购买《mahout实战》记录数的比例——置信度==(局部)==
  需要达到一定的阈值

(2)举例
  Apriori算法是第一个且最重要的关联规则算法,使用基于支持度的剪枝技术,从而控制候选项集的指数级别的增长。
  我们把前面的商品的例子,假设最小支持度阈值是60%,相当于最小支持度计数为3。(根据支持度=x/5=0.6=>x=3)


分析:

  • (1)根据最小支持度阈值0.6,计算最小支持度为3,则根据最小支持度删去支持度低于3的候选集,此时我们称之为候选1-项集。如上图去掉了可乐和鸡蛋的两项。
  • (2)将得到的候选1项集合并为候选2项集,如上图,根据支持度计数将低于3的舍去,舍去{啤酒,面包}和{啤酒,牛奶},得到所有的候选2-项集。
  • (3)利用候选2项集得到候选3项集:{啤酒,尿布,面包}3,{啤酒,尿布,牛奶}3,{面包,尿布,牛奶}3,因为{啤酒,面包},{啤酒,牛奶}在候选二项集中已经被判定非频繁项集,因此根据先验原理,它的超集也是非频繁项集,最后得到{面包,尿布,牛奶}3的频繁项集。

算法描述:

  • (1)初始通过单遍扫描数据集,确定每个项的支持度。从而得到频繁1-项集的集合F1.
  • (2)使用上次迭代发现的频繁(k-1)项集,产生新的频繁k项集。(关键步骤)
  • (3)对候选集支持度计数,算法需要扫描一次数据集,使用子集函数确定包含在每一个事务t中所有候选k项集。
  • (4)计算候选项的支持度计数之后,算法将删去支持度计数小于minsup的所有候选集。
  • (5)当没有新的频繁项集产生,算法结束。

总结:Apriori算法的频繁项集产生的部分有两个重要特点:

  • (1)逐层计算,从频繁1-项集到最长的频繁项集,每次遍历项集格中的一层。
  • (2)使用“产生-测试”(geberate and test)策略来发现频繁项集。每次迭代后,新的候选项集都由前一次迭代发现的频繁项集产生,然后对每个候选的支持度进行计数,并与最小支持度阈值进行比较。

未完待续

关联规则 置信度与支持度以及Apriori算法简介相关推荐

  1. 支持度、置信度、提升度、apriori算法理解(简易版)

    关于支持度.置信度.提升度以及apriori算法的理解(简单版) 理解支持度 所谓支持度,就是比如说10个用户购买商品,有8个用户购买商品A,那么商品A的支持度就是80%.支持度越大,关联规则越重要, ...

  2. 关于apriori算法中置信度、支持度怎么理解的问题

    比如说啤酒和尿布的问题: TID是transaction ID 即交易编号,说白了就是有五个人在超市买了这样的东西(Iteams),现在我们统计一下,大家买的东西之间有没有什么规律,比如买面包的是不是 ...

  3. 关联规则之置信度,支持度,提升度

    [统计分析]关联规则之置信度,支持度,提升度_红芒果-CSDN博客_关联规则提升度一般使用三个指标来度量一个关联规则,根据这三个指标可以筛选出满足条件的关联规则. 这三个指标是:Support(支持度 ...

  4. Apriori算法简介---关联规则的频繁项集算法

    由啤酒和尿布引出: 在一家超市中,人们发现了一个特别有趣的现象:尿布与啤酒这两种风马牛不相及的商品居然摆在一起.但这一奇怪的举措居然使尿布和啤酒的稍量大幅增加了.这可不是一个笑话,而是一直被商家所津津 ...

  5. 大数据——频繁关联规则,置信度,支持度

    频繁关联规则: 以下面例子为例: 下面这个表格是代表一个事务数据库D,其中最小支持度为50%,最小置信度为70%,求事务数据库中的频繁关联规则. Tid 项目集 1 面包,牛奶,啤酒,尿布 2 面包, ...

  6. 关联规则中的支持度、置信度以及提升度

    支持度: 定义:简单解释其实就是某一物品/组合的曝光率,或者是出镜率,即:该物品/组合在队列中出现的次数占队列总数的比例. 计算方式: S u p p o r t = C ( A ) C ( T o ...

  7. 关联规则分析 Apriori 算法 简介与入门

    关联规则的几个概念: 关联规则是形如 X -> Y 的蕴含式,表示通过 X 可以推导出 Y,X称为关联规则的左部(Left Hand Side,LHS),Y 称为关联规则的右部(Right Ha ...

  8. Apriori算法简介及实现(python)

    Apriori这个词的意思是"先验的",从priori这个词根可以猜出来~;) .该算法用于从数据中挖掘频繁项数据集以及关联规则.其核心原理是基于这样一类"先验知识&qu ...

  9. 【实用算法教学】——Apriori算法,教你使用亲和性分析方法推荐电影

    本文学习如何用亲和性分析方法找出在什么情况下两个对象经常一起出现.通俗来讲,这也 叫"购物篮分析",因为曾有人用它找出哪些商品经常一起出售. 前一篇文章关注的对象为球队,并用特征描 ...

  10. Apriori算法(矩阵)

    陈老师Apriori算法整理(缺点:1.通用性不强,只解决3项集的问题未做推广2.算法程序为加上优化,封装.连接等操作3.置信度的计算不全,缺1->2 2->1等情况) 说明:支持度范围大 ...

最新文章

  1. 利用Procdump+Mimikatz获取Windows帐户密码
  2. 一个synchronized跟面试官扯了半个小时
  3. 加载Hadoop+spark镜像文件需要修改的配置文件
  4. linux下的系统调用函数到内核函数的追踪
  5. aba会导致问题_护发素会导致掉发?这个纠结多年的问题,真相原来是这回事
  6. 直播 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新
  7. 仿OpenStack开发云计算管理软件”--熟悉开发环境
  8. Asp.net ajax、Anthem.net、Ajax pro三大ajax框架那一种使用比较方便?易于配置?
  9. Java OCR tesseract 图像智能字符识别技术 Java实现
  10. Android网络优化--概括
  11. 5.4 图层样式面板的实例讲解 [原创Ps教程]
  12. u盘文件删除如何恢复呢?
  13. 《大秦赋》热血霸气台词场景记录
  14. 线程 、GCD、NSOperation用法总结,重复下载,线程之间的通信
  15. python倒计时定时器_使用python修饰器的定时器倒计时
  16. Ubuntu 20.04开启热点(连着wify开wify)
  17. “戏”说设计模式——单例模式
  18. moloch1.8.0简单操作手册
  19. 静态路由的基本原理讲解
  20. 毕业设计 - 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

热门文章

  1. 笔记本无线共享上网(网络是有线)
  2. centos7.3根目录空间扩展
  3. Activity利用Intent传递数据
  4. 【游戏开发进阶】玩转贝塞尔曲线,教你在Unity中画Bezier贝塞尔曲线(二阶、三阶),手把手教你推导公式
  5. MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded...
  6. 随身WIFI刷入debian
  7. opencv 场景文字识别
  8. 记一次CAD二次开发 (C#) -导出
  9. 关于Oracle删除永久表空间
  10. S3C2440原理图导读