Apriori算法以及MS-Apriori算法中生成频繁项目集步骤的个人理解

    Apriori算法以及MS-Apriori算法均采用逐级搜索的方法来生成k阶频繁项目集,k阶频繁项目集仅由k-1阶频繁项目集两两合并而来。我要说明的是:为什么k-1阶频繁项目集两两合并的结果就一定是k阶频繁项目集的超集(算法后续步骤还会对这个超集进行剪枝)

    首先对于Apriori算法,任意一个项集都满足向下封闭属性,若该项目是频繁项目集,那么他的任何子集都是频繁项目集;反之若该项目不是频繁项目集,那么他的任意超集均不是频繁项目集。假设我们现在有全部的k-1阶频繁项目集(项目集中的项按照字典序排序),对于任意一个k阶频繁项目集U,设其前k-2个项目组成的集合为I,剩余两个项依次为a、b,则集合I+{a}以及集合I+{b}必定均在已有的k-1阶频繁项目集中(向下封闭属性)。而Apriori算法合并的策略是,取k-1阶频繁项目集中所有满足条件——两集合中只有最后一个元素不相同——的两两组合进行合并,得到的必定是k阶频繁项目集的超集。

    然后是MS-Apriori算法,该算法对每个项目引入了不同的最小支持度,判断某个项目集是否是频繁项目集的标准是:该项目集的支持度是否大于项目集中最小的最小支持度。假设我们现在有全部的k-1阶频繁项目集(项目集中的项目按照最小支持度从小到大排序),对于任意一个k阶频繁项目集U,设其前k-2个项目组成的集合为I(此处I不能为空,即k>2。否则就不存在后文的项目a了),剩余两个项依次为b、c,I中最小支持度最小的项目为a,设a的最小支持度为m。则有:

集合I+{b}的支持度>=集合U的支持度>m

集合I+{c}的支持度>=集合U的支持度>m

    因此集合I+{b}和集合I+{c}必定均在已有的k-1阶频繁项目集中,MS-Apriori算法合并的策略与Apriori算法一致,故MS-Apriori算法中k-1阶频繁项目集合并的结果也必定是k阶频繁项目集的超集。

猜你喜欢

转载自blog.csdn.net/qq_37720278/article/details/79563744