第一步是要产生所有的频繁项集合,即满足一定支持度的项的集合。
依次递归产生1项,2项,...,n-1项,n项。所有的k项由k-1项得到,并不需要列举所有的k项可能的组合,由于如果某k项为频繁项,则其所有的一个k个子k-1项必为频繁项。可按k-1项排序,只对相邻的两项做处理。如果相邻两项的前k-2项都相等,只有第k-1项不相等,则合并两项,得到新的k项为候选k项。如果相邻两k-1项的前k-2项不相同,即便此两个k-1项仍然有相同的k-2个元素,两者合并得到一个新的k项,则可以证明一定存在新k项的某一个子k-1项不是频繁集,或者此k项已经加入了候选k项集合中。
得到候选k项,如果满足支持度并且其所有一个k个k-1子项都是频繁项,则此k项也是频繁项。
第二步由频繁项集合,得出关联规则。对于长度为k的频繁项,其可能产生的规则一共为2的k次方个。简单分析可以得到,对于两个规则:A1->B1和A2->B2,如果A1是A2的子集合(自然B2也是B1的子集了),则可以得出,如果A1->B1成立,则A2->B2也成立。
对每一个频繁项,首先产生1项规则,即规则的后置条件的长度为1。所有的m项规则由所有的m-1项规则得到。把频繁项看成整个商品集合,把m-1项规则看成是m-1项频繁项,把最小置信度看成是最小支持度,把本频繁项的数量与m项规则的前置条件项的数量看做是支持度,这个算法雷同于第一步的算法了。
注:对于频繁项挖掘,需要满足最小支持度,不过有一些冷门商品,由于销量很小,不能满足最小支持度,但是利润很大,仍然需要发现可以与之搭配出卖的商品。这就需要引入可变的最小支持度,即对于不同的频繁项,要求满足不同的最小支持度。可对每一个商品定义最小支持度,频繁项的最小支持度即为各个商品最小支持度的最小值。但是这又引入了新的问题,因为有可能存在子项不是频繁项而父项是频繁项,不满足上面算法的闭包规则。解决本问题的方法是所有商品按照满足的最小支持度升序排列,这样能够保证频繁项A是频繁项B的子项,则二者的最小支持度一样的,都是最开始的商品的最小支持度。