介绍
先验(Apriori)算法是挖掘关联式规则(Association Rules)的经典算法之一。
它的作用就是用来寻找数据当中的强关联式规则(Strong Association Rules)。
强关联式规则是满足最低支持度(minimum support)和最低置信度(minimum confidence)的规则。
规则:
X→Y;X和Y都属于I,且X和Y的交集为空。
支持度(support):
support(X → Y) = P(X U Y)
置信度(confidence):
confidence(X → Y) = P(Y | X)
算法
Step1:
遍历数据库,并且得出不同项(Item)的频数。
这个表被记为C1。
Step2:
假设这里的最低支持度为4(min_sup=4)。
表C1里的E就会被删除,得到表L1。
Step3:
利用L1,得出两个项在数据当中同时出现的频数(表C2)。
Step4:
频数低于4的项都会被删除。
Step5:
利用L2得出C3。
由于C3只有一个项集,而且频数还低于4,所以Apriori算法到此就会终止。
假如C3还有大于最低支持度的项集,那么Apriori算法会继续下去,得到L3,直到Cn不能再产生新的Ln为止。
Step6:
接下来就要从L2当中得到所有的规则。
A→C 和 C→D。
假如这里ACD大于4,可以得到三个不同的规则:
A→CD,C→AD和D→AC。
Step7:
计算不同规则的置信度(confidence)。
公式:
Confidence (X → Y) = P(Y|X) = Support_Count (X U Y) / Support_Count (X)
Confidence (A → D) = P(D|A) = Support_Count (A U D) / Support_Count (A) = 2 / 4
Confidence (C → D) = P(D|C) = Support_Count (C U D) / Support_Count (C) = 4 / 6
当置信度大于最低置信度的时候,规则才可以被称为强关联规则(Strong association rules)。
假如这里min_conf=60%,那么C→D是强关联规则,而A→C不是。
总结
Apriori算法不适合被用在大型数据库当中,因为它会产生巨量的候选集(candidate sets),如C2,L2等。
由于学习这个课程的时候是全英文的,因此可能很多翻译不是很准确,请大家随意喷。