主要采用递推(level-wise)的方式 用L(k-1)发现L(k),即已知k-1 item的频繁子集,发现k item的频繁子集。 规则:all nonempty subsets of a frequent itemset must also be frequent.
如果I不满足min_sup,即P(I) < min_sup,那么I+A必然不满足min_sup,即P(I+A) < min_sup,所以I+A肯定是不频繁的。所以,如果L(K)是频繁的,那么所有的L(k-1)都是频繁的。
主要分成两步:
1. the join step 已有L(k-1),P(i)为L(k-1)的第i个元组,P(i,j)表示第i个元组的第j个元素。假定元组以及每个元组的元素按照字典顺序排列。那么合并规则就是如果前k-2个元素相同,最后一个元素不同,那么这两个元组合并。P(1,1)=P(2,1) P(1,2)=P(2,2)…..P(1,k-2)=P(2,k-2) P(1,k-1)!=P(1,k-1),则合并P(1) P(2)形成C(k)
2. the prune step C(k)为所有可能的k-item,其中有些元组是不满足min_sup的,根据规则,c为C(k)的k-item,subset(c,k-1)为c的k-1 item子集,如果有一个subset(c,k-1)不属于L(k-1),那么c就不是频繁集,将c从C(k)中剔除。最后形成L(k)
给出一个例子以及apriori的伪代码。