关联规则浅谈以及Apriori算法matlab实现

关联规则分析也叫做购物篮分析,最早是为发现超市销售数据库中不同商品之间的关联关系。例如一个超市的经理想要更多的了解顾客的购物习惯,比如“哪组商品可能会在一次购物中同时被购买?”或者“某顾客购买了个人电脑,那该顾客三个月后购买数码相机的概率有多大?”他可能会发现如果购买了面包的顾客同时非常有可能会购买牛奶,这就导出了一条关联规则“面包->牛奶”,其中面包称为规则的前项,而牛奶则称为规则的后项。通过对面包降低售价进行促销,而适当提高牛奶的售价,关联销售出的牛奶就有可能增加超市整体的利润。

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

1、常用的关联规则算法
这里写图片描述

以下重点介绍Apriori算法。

2、Apriori算法
以超市销售数据为例,提取关联规则的最大困难在于当存在很多商品时,可能的商品的组合(规则的前项和后项)的数目会达到一种令人望而却步的程度。因而各种关联规则分析的算法从不同方面入手减小可能的搜索空间的大小,以及减小扫描数据的次数。Apriori算法是最经典的挖掘频繁项集的算法,第一次实现了在大数据集上可行的关联规则提取,其核心思想是通过连接产生候选项与其支持度,然后通过剪枝生成频繁项集。

3、关联规则和频繁项集
1)关联规则的一般形式
项集A、B同时发生的概率称为关联规则的支持度(也称相对支持度):

这里写图片描述

项集A发生,则项集B发生的概率为关联规则的置信度:

这里写图片描述

2)最小支持度和最小置信度
最小支持度是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性;最小置信度是用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性,同时满足最小支持度阈值和最小置信度阈值的规则称作强规则。

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

项集的出现频率是所有包含项集的事务计数,又称做绝对支持度或支持度计数。如果项集I的相对支持度满足预定义的最小支持度阈值,则I是频繁项集。频繁k项集通常记作这里写图片描述

4)支持度计数
项集A的支持度计数是事务数据集中包含A的事务个数,简称为项集的频率或计数。

已知项集的支持度计数,则规则这里写图片描述的支持度和置信度很容易从所有事务计数、项集A和项集这里写图片描述的支持度计数推出:

这里写图片描述
这里写图片描述

也就是说,一旦得到所有事务的个数,A、B和这里写图片描述的支持度计数,就可以导出对应的关联规则这里写图片描述这里写图片描述,并可以检查该规则是否是强规则。

4、Apriori算法——使用候选产生频繁项集
Apriori算法的主要思想是找出存在于事务数据集中最大的频繁项集,利用得到的最大频繁项集与预先设定的最小置信度阈值生成强关联规则。

1)Apriori的性质
频繁项集的所有非空子集也必须是频繁项集。根据该性质可以得出:向不是频繁项集I的项集中添加事务A,新的项集这里写图片描述一定也不是频繁项集。

2)Apriori算法实现的两个过程
a)找出所有的频繁项集(支持度必须大于等于给定的最小支持度阈值),在这个过程中连接步和剪枝步互相融合,最终得到最大的频繁项集这里写图片描述

连接步:连接步的目的是找到K项集。对给定的最小支持度阈值,分别对1项候选集这里写图片描述,剔除小于该阈值的项集得到1项频繁项集这里写图片描述;下一步由这里写图片描述自身连接产生两项候选集这里写图片描述,保留这里写图片描述中满足约束条件的项集得到两项频繁集,记为这里写图片描述;再下一步由这里写图片描述这里写图片描述连接产生三项候选集这里写图片描述,保留这里写图片描述中满足约束条件的项集得到三项频繁集,记为这里写图片描述,等等。这样循环下去,得到最大频繁项集这里写图片描述

剪枝步:剪枝步紧接着连接步,在产生候选项这里写图片描述的过程中启到减小搜索空间的目的。由于这里写图片描述这里写图片描述这里写图片描述连接产生的,根据Apriori的性质频繁项集的所有非空子集也必须是频繁项集,所以不满足该性质的项集将不会存在于这里写图片描述中,该过程就是剪枝。

b)由频繁项集产生强关联规则:在过程a)可知未超过预定的最小支持度阈值的项集已被剔除,如果剩下这些规则又满足了预定的最小置信度阈值,那么就挖掘出了强关联规则。

下面根据实例来讲解Apriori关联规则算法挖掘的实现过程。

数据如下所示

a,c,e
b,d
b,c
a,b,c,d
a,b
b,c
a,b
a,b,c,e
a,b,c
a,c,e

以上有10个事务数据集,设支持度为0.2(支持度计数为2),则Apriori算法的实现过程如下。

这里写图片描述
这里写图片描述
这里写图片描述

过程一:找最大k项频繁集

a)Apriori算法简单地扫描所有的事务,事务中的每一项都是候选1项集的集合这里写图片描述的成员,计算每一项的支持度。比如这里写图片描述

b)对这里写图片描述中各项集的支持度与预先设定的最小支持度阈值作比较,保留大于或等于该阈值的项,得一项频繁集这里写图片描述

c)扫描所有事务,这里写图片描述这里写图片描述连接得候选2项集这里写图片描述,并计算每一项的支持度。如
这里写图片描述
接下来是剪枝步,由于这里写图片描述的每个子集(即这里写图片描述)都是频繁集,所以没有项集从这里写图片描述中被剔除;

d)对这里写图片描述中各项集的支持度与预先设定的最小支持度阈值作比较,保留大于或等于该阈值的项,得两项频繁集这里写图片描述

e)扫描所有事务,这里写图片描述

评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值