大话数据科学:大数据与机器学习实战(基于R语言)
上QQ阅读APP看书,第一时间看更新

3.3 关联规则的算法

Apriori算法,是翻译为先的验算法,1994年由Agrawal & Srikant等首先提出,是最为著名且广泛运用的关联规则算法。Apriori算法是基于广度优先的算法。另外有Eclat算法,是基于深度优先的算法,还有FP成长树算法,不在此赘述。

3.3.1 Apriori算法

Apriori算法分成两部分:第一部分,计算所有的频繁项集;第二部分,计算所有的强关联规则。Apriori算法概念如下。

(1)设定关联规则:一个项集的最小支持度阈Minsupport;两个项集关联规则的最小支持度阈 Min_support和最小置信度阈 Min_confident。通常Minsupport = Min_support。

(2)根据最小支持度阈Minsupport,计算所有的频繁项集,k = 1。

1)找出k-项集所有频繁项集。

2)(剪枝步骤)若其中有非频繁项集,则其超项集为非频繁项集,予以删除。

3)k =k + 1,回到2),直到所有n-项集被计算或删除。

(3)根据最小置信度阈 Min_confident,计算的强关联规则。

根据频繁项集的规则,计算强关联规则。

剪枝步骤:根据下列定理。

如果规则 X→Y-X不是强关联规则,不满足置信度阈值,则Z→Y-Z也不是强关联规则,其中Z是X的子项集。

例如:Y=ABCD,X=BCD,Y-X=A,Z=B,Y-Z=ACD

如果BCD→A非强关联规则,则B→ACD非强关联规则。

非强关联规则有两个条件:

(1)S(BCD→A)=S(B→ACD)=S(ABCD)< Min_support

(2)C(B→ACD)= S(ABCD)/S(B)< S(ABCD)/S(BCD)= C(BCD→A)< Min_confident

因为 S(B) > S(BCD)

具体如图3-4和图3-5所示。

图3-4 Apriori算法计算频繁项集的剪枝步骤

图3-5 Apriori算法的计算强关联规则

3.3.2 关联规则其他测度值

项集关联的测度值,除了支持度,置信度,提升度,关联规则的测量还有许多测度值。(参考网站http://michael.hahsler.net/research/association_rules/measures.html)。

在R语言的关联规则包中arules的函数interestMeasure()可以有这些测量。如表3-2所示。

表3-2 事务频数表

下列关联规则测度值,没有前项后项(ABBA)的差别(交换律),只有关联,没有因果的规则。除了置信度有前项后项的差别。

(1)χ2期望值

如果a >χ2A,B),则提升度 > 1。

(2)互信息(mutual information):

(3) Jaccard系数

(4)全置信度(all_confidence):

All_conf(A,B)=min{PA|B),PB|A)}

(5)最大置信度

max_conf(A,B)=max{PA|B),PB|A)}

(6)余弦度量Cosine测度:

(7)杠杆率(leverage):

leverage(AB)= Support(AB)-Support(A)*Support(B

杠杆率类似提升度,leverage(AB)>1是正相关;leverage(AB)=1是独立;

leverage(AB)< 1是负相关。

(8)Phi相关系数Phi correlation coefficient :

(9) Kulczynski测度:

Kulc(A,B)=(0.5){PA|B)+PB|A)}

(10)确信度(conviction):

Conviction(AB)=[1 - Support(B)] / [1 - Confidence(AB)]

确信度或定罪率 Conviction(AB)= 1.2表示有20%的错误率。

(11)失调率(imbalance ratio)不平衡比:

以上测度值(1)~(9)测量值越高,表示A,B的关联越好,(10)确信度和(11)失调率是越低越好。

3.3.3 负关联规则

关联规则是计算两个项集的关联,以购物篮来说,(A→B)是已经买了项集A,会再买项集B的概率。例如,顾客买了面包,还会再买牛奶的概率。

负关联规则(¬A→B)是没有买项集A,会买项集B的概率。或者(A→¬B)是买项集A,不会买项集B的概率。例如,顾客买了豆浆,就不会再买牛奶的概率。

请见3.6.2节【R例3.4】商店数据有负关联规则的R程序代码。