学习Apriori算法首先要了解几个概念:项集、支持度、置信度、最小支持度、最小置信度、频繁项集。
项集:顾名思义,即项的集合。eg:牛奶、面包组成一个集合{牛奶、面包},其中牛奶和面包为项,{牛奶、面包}为项集,称之为2项集。(说白了,其实就是集合)
支持度:项集A、B同时发生的概率称之为关联规则的支持度。
置信度:项集A发生的情况下,则项集B发生的概率为关联规则的置信度。
支持度与置信度的概念有些抽象,具体可以看下面的例子:
如图数据为顾客购物情况,每一个id对应的items都是一个项集,现在需要对{milk,diaper}与{beer}关联性进行研究,计算支持度与置信度。
计算如下:
计算支持度:计算{milk,diaper}{beer}同时发生的概率就相当于计算{milk,diaper,beer}出现的次数所占数据条的比重,即2/5.
计算置信度:计算{milk,diaper}发生的情况下,则{beer}发生的概率就相当于计算{milk,diaper,beer}出现的次数所占{milk,diaper}发生次数的比重,即2/3.
最小支持度:最小支持度就是人为按照实际意义规定的阈值,表示项集在统计意义上的最低重要性。
最小置信度:最小置信度也是人为按照实际意义规定的阈值,表示关联规则最低可靠性。
如果支持度与置信度同时达到最小支持度与最小置信度,则此关联规则为强规则。
频繁项集:满足最小支持度的所有项集,称作频繁项集。
(频繁项集性质:1、频繁项集的所有非空子集也为频繁项集;2、若A项集不是频繁项集,则其他项集或事务与A项集的并集也不是频繁项集)
了解了以上定义,那么如何从大量的数据中找出不同项的关联规则呢?下面具体看Apriori算法实现过程。
Apriori实现过程:首先,找出所有的频繁项集,再从频繁项集中找出符合最小置信度的项集,最终便得到有强规则的项集(即我们所需的项的关联性)。
例如:
数据如下
算法过程如下
首先计算出所有的频繁项集,这里最小支持度为0.2
得出L1、L2、L3的各个项集均为频繁项集,再进行计算每个频繁项集的置信度,其中L1不必计算。计算结果如下
(如果想了解寻找频繁项集的详细过程,可以研读张良均等著《python数据分析与挖掘实战》,里面有详细过程)
至此就完成了Apriori算法的全部过程。
接下来python实现Apriori算法
1 | #-*- coding: utf-8 -*- |
Apriori算法调用,进行关联性分析
数据如下
代码如下
1 | #-*- coding: utf-8 -*- |
结果如下
support confidence
e—a 0.3 1.000000
e—c 0.3 1.000000
c—e—a 0.3 1.000000
a—e—c 0.3 1.000000
c—a 0.5 0.714286
a—c 0.5 0.714286
a—b 0.5 0.714286
c—b 0.5 0.714286
b—a 0.5 0.625000
b—c 0.5 0.625000
a—c—e 0.3 0.600000
b—c—a 0.3 0.600000
a—c—b 0.3 0.600000
a—b—c 0.3 0.600000
本文主要参考书籍张良均等著《python数据分析与挖掘实战》
本文主要参考博客https://blog.csdn.net/baimafujinji/article/details/53456931
转载地址