关联规则是一种基于规则的机器学习算法,利用一些度量指标来分辨数据中存在的强规则,也就是说,关联规则挖掘是用于知识发现而非预测,所以是属于无监督学习。

0 关联规则的主要学习内容

1)关联规则的基本思想

2)关联规则的度量指标

3)关联规则的应用场景

1关联规则定义

        “啤酒与尿布”的例子相信很多人都听说过吧,故事是这样的:在一家超市中,人们发现了一个特别有趣的现象,尿布与啤酒这两种风马牛不相及的东西居然摆在一起,但这一奇怪的举措居然使尿布和啤酒的销量大幅增加,为什么有这么奇怪现象呢?看了资料后发现是因为美国丈夫回家前买尿布时顺手买了自己喜欢的啤酒,所以发生了这么有趣的事情。

这就存在一种关联性,而我们今天就来分析数据集间的有趣的关联。下面我们根据表来解释关于关联分析中的一些定义:

1. 事务:每一条交易称为一个事务,如表,有十个交易号,代表有10条交易,即十条事务。

2. 项:交易的每一个物品称为一个项,例如交易号T1中有bread,cream,milk,tea,四样物品,即有四个项。

3. 项集:包含零个或多个项的集合叫做项集,例如交易号T1中有bread,cream,milk,tea,四样物品,即为一个项集

4. k-项集:包含k个项的项集叫做k-项集,例如交易号T1中有bread,cream,milk,tea四样物品,即加做4-项集

5. 支持度计数:一个项集出现在几个事务当中,它的支持度计数就是几。表1中,有十个事务,项集bread,cream,milk,tea出现了2次,即支持度计数为2.

6. 支持度:支持度计数除以总的事务数。表1中,有十个事务,项集bread,cream出现了4次,即支持度为4/10。

7. 频繁项集:支持度大于或等于某个阈值的项集就叫做频繁项集。例如,阈值设为30%时,因为项集bread,cream的支持度是40%,所以它就是频繁项集。

8. 前件和后件:对于规则bread到cream,bread叫做前件,cream叫做后件

9. 置信度:对于规则bread到cream,bread,cream的支持度计数除以bread的支持度计数,为这个规则的置信度

10. 强关联规则:大于或等于最小支持度阈值和最小置信度阈值的规则叫做强关联规则。

          关联分析的最终目标就是要找出强关联规则。下面我们主要介绍关联分析中的Apriori算法算法。

2 Apriori算法

         在电子商务中常用一种数据挖掘方法就是用户交易数据集中寻找商品之间的关联规则。关联规则中常用的一种算法是Apriori算法。该算法主要包含两个步骤:首先找到数据集中所有的频繁项集,这些项集出现的频繁性要大于或等于最小支持度;然后根据频繁项集产生关联规则,这些规则必须满足最小支持度和最小置信度。

支持度

        支持度揭示了A与B同时出现的概率。如果A与B同时出现的概率小,说明A与B的关系不大,如果A与B同时出现的非常频繁,则说明A与B总是相关的。

置信度

       置信度揭示了A出现时,B是否也会出现或有多大概率出现。如果置信度为100%,则A和B可以捆绑销售,如果置信度太低,则说明A的出现与B是否出现关系不大。

算法步骤:

1. 找出出现频率最大的项L1。

2. 根据L1找频繁“2-项集”的集合C2。

3. 剪掉不满足支持度阈值的项,得到L2。

4. 根据L2找频繁“3-项集”的集合C3。

5. 根据性质和支持度阈值进行剪枝。

6. 循环上述过程,直到得到空集C,即直到不能发现更大的频集L。

7. 计算最大频集L的非空子集,两两计算置信度,得到大于置信度阈值的强关联规则。

举例说明:

       假设给定电子网站的用户交易数据集,其中,定义最小支持度为3/10,即支持度计数为3,最小置信度为70%,现在要计算该数据集的关联规则,如下表1所示。

步骤一:根据Apriori算法计算频繁项集

1)计算频繁1项集,扫描交易数据集,统计每种商品出现次数,选取大于或等于最小支持度的商品,得到候选项集。

       由于我们定的支持度为3/10,即支持度计数至少为3,故cake和beer不满足支持度的阈值。则候选项集为bread,cream,milk,tea。

2)根据频繁1项集,计算频繁2项集,首先将频繁1项集和频繁1项集进行连接运算,得到2项集,如下所示

图1 2项集

扫描用户交易数据集,计算包含每个候选2项集的记录数

根据最小支持度,得到频繁2项集为

3)根据频繁2项集,计算频繁3项集,首先将频繁2项集进行连接,得到{bread,cream,milk},{bread,cream,tea},{bread,milk,tea},{cream,milk,tea},然后根据频繁项集性质进行剪枝,即频繁项集的非空子集必须事频繁的。

(1){bread,cream,milk}的2项子集{bread,cream},{bread,milk},{cream,milk},都在频繁2项集中,则保留;

(2){bread,cream,tea}的2项子集{bread,cream},{bread,tea},{cream,tea},由于{cream,tea}不是频繁2项集,移除该候选集;

(3){bread,milk,tea}的2项子集{bread,milk},{bread,tea},{milk,tea},都在频繁2项集中,则保留;

(4){cream,milk,tea}的2项子集{cream,milk},{cream,tea},{milk,tea},由于{cream,tea}不是频繁2项集,移除该候选集;

通过该剪枝,得到候选集{bread,cream,milk},{bread,milk,tea},扫描交易数据库,计算包含候选3项集的记录数,得

4)根据频繁3项集,计算频繁4项集,重复上述思路,得到{bread,cream,milk,tea},根据频繁项集定理,它的子集{bread,cream,tea}为非频繁项集,所以移除该候选集,从而频繁4项集为空,至此,计算频繁项集的步骤结束。

步骤二:根据频繁项集,计算关联规则。

这里以频繁3项集{bread,cream,milk}为例,计算关联规则。

{bread,cream,milk}的非空子集为{bread},{cream},{milk},{bread,cream},{bread,milk}和{cream,milk}

规则1,{bread,cream}=>{milk},置信度为{bread,cream,milk}的支持度除以{bread,cream}的支持度,即4/4=1,置信度大于70%,则该规则为强关联规则。

同理,计算,

{bread,milk}=>{cream},置信度为4/5=80%,大于70%,则为强关联规则。

{cream,milk}=>{bread},置信度为4/4=1,为强关联规则

{milk}=>{cream},置信度为4/8=50%,小于70%,故删除该规则。

这样的计算还有几个,这里就不一一计算了。

3 Apriori算法总结

Apriori算法的优点:简单,易理解,数据要求低,使用先验性质,大大提高了频繁项集逐层产生的效率。是一种无监督学习方法。

Apriori算法的缺点:1)在验证候选频繁k项集时需要对整个数据库进行扫描,非常耗时;2)在每一步产生候选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;3)每次计算项集的支持度时,都对数据库中的全部记录进行了一遍扫描比较,需要很大的I/O负载,4)商品并不是全部平等销售的,仅使用支持度衡量,容易导致出现假性关联。

4 Apriori算法的应用场景

1)优化货架商品摆放,或优化邮寄商品目录的内容

2)交叉销售和捆绑销售

3)推荐系统

参考文献

[1] https://www.jianshu.com/p/469dff109fae

[2] https://blog.csdn.net/cdknight_happy/article/details/83539457

[3] https://www.cnblogs.com/Allen-win/articles/7638557.html

[4] https://blog.csdn.net/guoguo_dreamfly/article/details/50707364

[5] https://blog.csdn.net/wsp_1138886114/article/details/80921905

注:部分文字、图片来自网络,如涉及侵权,请及时与我们联系,我们会在第一时间删除或处理侵权内容,电话:4006770986。