论文题目:CLOSET+: Searching for the Best Strategies for Mining Frequent Closed Itemsets
论文地址:http://hanj.cs.illinois.edu/pdf/kdd03_closet+.pdf
论文大体内容:
这是数据挖掘界的知名学者韩家炜教授的系列文章之一。作者提出了CLOSET+的算法进行frequent closed pattern mining(闭频繁项集挖掘),相比以前的FP-TREE[1][5],CLOSET[4],CHARM[3]等算法在运行时间以及占用内存方面能有不少的提升。
1、frequent closed pattern mining(FCP mining)主要目的是挖掘出经常一起出现的模式,比如通过人们逛超市的购物单,可以挖掘出“纸尿片”跟“啤酒”是人们比较多一起买的,所以挖掘出这些模式有利于超市做出相应的决策以提高销售额。衡量frequent pattern的标准可以看一个itemset的support(支持度)以及length(长度),因为A、B、C是frequent pattern,那么可以推出A、B也是frequent pattern,B、C也是frequent pattern,所以我们一般考虑的是frequent closed pattern,就是A、B、C(相同support最长的那个)。
2、CLOSET+算法是在FP-TREE[1]的基础上实现的,它采用的DFS+divide-and-conquer(分而治之),对数据分稀疏与密集两种情况分别采用不同的策略:密集数据根据f_list采用bottom_up(由下到上)+两层hash存储与过滤候选结果;稀疏数据根据f_list采用top_down(由上到下)+pseudo-projection(伪投影,实际使用了已经建好的FP-TREE),从而实现更好的剪枝(提高运行速度)以及更有效的候选集筛选(降低内存)。
3、Subset checking剪枝:
若当前的itemset不属于任一个已知的候选,那它一定是FCP。即当发现A、B的support为2且已知A、B、C的support>=2,那么A、B可以剪枝(不是FCP)。
4、两层hash(密集数据):
建立一个two-level的hash树(类FP-TREE),每个结点包含id,support,深度,通过判断候选结果X,Y,若X,Y具有相同的support且X是Y的子集,那么X必定不是FCP。
5、pseudo-projection(稀疏数据):
不建立新的树,直接使用之前建立好的global FP-TREE,通过它检查是否存在某个元素在每个itemset X前都有出现且不属于X,如果是就可以推出X不closed。
6、本文对比了CLOSET+与OP(opportunistic projection)[2],CHARM[3],CLOSET[4]三种算法的效果,发现在运行时间、内存及可扩展性方面都超过这三种算法。
7、思考:
这是一篇纯算法性的paper,跟我之前读的机器学习类paper完全不一样。机器学习paper主要看的是feature selection,结果看precision,recall,F1。而这篇paper由于结果必须要100%正确,所以看重的是运行时间以及运行内存,而涉及到树结构,相应的就是往怎样剪枝,怎样减少searching space的方向去考虑,所以正如Data mining课老师所说,“它上面的剪枝方法都很简单,很显而易见,但问题是我们怎么没能归纳出来呢”,所以要多思考,把可行解都列出来,或者画出来,然后进行归纳,最后就会发现结果是那么的简单,那么的显然,而这也正是算法之美。
参考资料:
[1]、http://hanj.cs.illinois.edu/pdf/dami04_fptree.pdf
[2]、http://hanj.cs.illinois.edu/pdf/kdd02jliu.pdf
[3]、http://www.cs.rpi.edu/tr/99-10.pdf
[4]、https://www.cs.sfu.ca/~jpei/publications/dmkd00.pdf
[5]、http://www.cnblogs.com/zhangchaoyang/articles/2198946.html
以上均为个人见解,因本人水平有限,如发现有所错漏,敬请指出,谢谢!