之前的章节分析了如何从原始数据集合中获取频繁项集,并且给出了代码演示,如需要请访问以下链接
【机器学习】【无监督学习】【算法01-理论1】Apiori算法-筛选频繁集
【机器学习】【无监督学习】【算法01-代码实现】Apiori算法-筛选频繁集
接下来进行关联分析的第二个步骤讲解:关联规则获取
1 理论解释
在筛选频繁集的理论部分,我们已经提到关联分析其实总共就是两个步骤:频繁项集发现、关联规则获取。
对于频繁项集的“频繁”,我们使用支持度来定义,同样的,我们也有一个量化的标准来定义“关联”-----置信度(Confidence),且一条规则的置信度计算可以通过相关项集的支持度来得到。
首先,我们需要搞清楚,什么叫做“关联”?
我个人喜欢称一条关联规则为一个伴随关系。对于一条规则A---->B来说,即当A发生时,总有B的发生。当然,这个总有的程度,则由刚刚所提出的置信度来定义。
那么,对于已经挖掘好的频繁项集来说,怎么挖掘其中的关联规则呢?我们已知,频繁项集的集合L有以下关系成立:
L = { L 1 , L 2 , L 3..... L N } L=\{L1,L2,L3.....LN\} L={
L1,L2,L3.....LN}
即由一项到N项元素的集合层构成。我们在寻找关联关系的时候,首先应该去掉的就是L1,因为在L1层,每个项集只有一个元素,因此无法产生一条规则。因此,关联规则寻找的第一个要点:从频繁项集的L2层开始寻找关联规则。
1.1 关联规则寻找
明确第一个要点后,已经成功了一半,现在可以开始正式寻找关联规则了。假设对于L2层项集{1,2},{2,3}进行寻找,那么应该先产生规则1—>2,2—>1,2—>3,3—>2。然后根据在频繁项集生成时存储的支持度列表中寻找需要的支持度,进行置信度的计算。
那么试想,如果需要对一个频繁集合{0,1,2,3}进行关联规则的寻找呢?
应该有如下图所示的关联规则组合:
这是一个L4层的一个频繁项集所产生的规则,按照我们的思路或者说实际要求,我们必须要对每条规则进行计算。因此,对于一个L4层项集我们需要计算15次置信度计算。随着项集内部元素增多,我们需要面对的规则计算次数也越来越多。
**在寻找频繁集合的时候,我们也碰到过差不多的问题,因此在此处我们也可以同样的应用Apriori算法进行剪枝。**例如上图,其中,假设深色部分{0,1,2}—>3.是一条不满足置信度的规则,那么其前件{0,1,2}的子集作为前件的规则,均不会符合置信度要求。
(此规则可以转为:任意一条不是关联规则的规则,其右边的后件及其父集,均不符合关联规则的置信度要求,可以观察到图中{3}作为元素出现的后件,均不符合规则)
量化解释如下:
1.2 量化解释
对于任意一个集合{a,b,c,d},如果它所产生的一条关联规则{a,b,c}–>{d}的置信度S1<S,那么一定有:任意集合 { x , y } ⊂ { a , b , c } , 产 生 的 规 则 ( 例 如 { a , b } − > { c , d } ) 的 置 信 度 S 2 < = S 1 < S \{x,y\} \subset\{a,b,c\},产生的规则(例如\{a,b\}->\{c,d\} )的置信度S2<=S1<S { x,y}⊂{ a,b,c},产生的规则(例如{ a,b}−>{ c,d})的置信度S2<=