数据挖掘之关联分析

最近由于项目的原因,需要对伴随车辆进行检查,因此了解和掌握了关联分析,现在抽空进行整理,本文将以简单例子开始,一步一步讲述关联分析的概念,过程及方法。

  • 购物篮分析
  • 关联分析
  • Aprior算法
  • FPGrowth算法

购物篮分析

关联分析中最为经典的用法:某超市通过对大量用户购物清单数据进行分析后发现:购买尿布的顾客,往往都会购买啤酒。因此重新调整尿布和啤酒的位置,结果使得两个商品的销量大增。

下面是购物清单示例:

单号商品
001尿布,啤酒,鸡蛋
002可乐,火腿
003尿布,啤酒,火腿
004尿布,啤酒,可乐

对此清单进行关联分析,发现关联规则 {尿布} –> {啤酒},就意味着“购买尿布的顾客,有很大的可能购买啤酒”,虽然这并不是必然的,但存在很大的可能性。

关联分析

在了解关联分析前,先了解下面的一些名词定义:

  • 事务: 每一项交易就是一个事务,上图中有4个事务。
  • 项: 交易中的每个元素就是一个项,如“尿布”就是项。
  • 项集: 包含至少一个项的集合,如{尿布},{尿布,啤酒}
  • K-项集: 包括K个项的集合,如{尿布}是1-项集,{尿布,啤酒}是2-项集
  • 支持度计数:某个项集出现在N个事务中,则其支持度计数为N,如{尿布,啤酒}的支持度计数为3
  • 支持度: 某个项集的支持度计数除以总事务数,则为支持度,如项集{尿布,啤酒}的支持度为 3/4 = 75%
  • 频繁项集:设定支持度阈值为N,那么支持度大于等于N的项集为频繁项集,假设阈值为50%,那么项集{尿布,啤酒}的支持度 75% > 50%,则该项集为频繁项集。
  • 前件和后件:对于规则{尿布} –> {啤酒},{尿布}是前件,{啤酒}是后件。
  • 置信度:对于规则{尿布} –> {啤酒},项集{尿布,啤酒}的支持度计数为N,项集{尿布}的支持度为M,则N/M为该规则的置信度。
  • 关联规则:设定一个置信度阈值N,置信度大于等于N的规则即为关联规则。

关联分析的主要目的是找到关联规则,主要分为两个步骤:
1. 设定支持度阈值,从数据集中找到所有的频繁项集。
2. 设定置信度阈值,从频繁项集中提取关联规则。

相信大家看完上面的介绍,应该基本了解关联分析的一些概念及原理了,下面介绍两种频繁集挖掘算法。

频繁项集挖掘

要从大量数据中挖掘出频繁项集来,光靠蛮力是不行的,数据挖掘届已经有了一些经典的算法,当前只介绍两个最经典的算法Aprior和FPGrowth,不过在介绍算法前,先介绍两个较为重要的规则:

  1. 频繁项集的子集,肯定也是频繁项集。
  2. 非频繁项集的超集,肯定也是非频繁项集。

Aprior算法

Aprior算法的思路是先找到候选集,然后在其中筛选出频繁集。它采用了分层迭代的方法,简单描述如下:

先找到1-项集作为候选集A1,然后在其中筛选出1-项集的频繁集B1;再根据B1选定2-项集的候选集A2,然后在A2中筛选出2-项集的频繁集B2,…….如此迭代下去。

由于Aprior算法需要频繁扫描数据集,因此在数据量较大的时候,该算法的效率较差。

FPGrowth算法

FPGrowth算法的思路是扫描数据集,将其映射成FP-Tree,然后从FP-Tree里面筛选出频繁集来。
FPGrowth需要扫描两次数据集,后续操作均在内存中,因此效率较高,但也存在问题是当数据量大到一定程度时,内存可能成为瓶颈,好在目前Spark的MLLib模块支持FPGrowth算法,我们可以利用Spark进行分布式并行计算。

说明

对于APrior算法和FPGrowth算法细节,后续有时间补上。
对于关联规则的提取方式,后续有时间补上。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值