之前写了一篇关于Apriori关联算法,FP-growth算法也是一种经典的频繁项集和关联规则的挖掘算法,但在较大数据集上Apriori需要花费大量的运算开销,而FP-growth不会有这个问题。因为FP-growth只扫描整个数据库两次。由于FP-growth算法比较复杂,我主要简单做一下笔记。
打开你的搜索引擎,输入一个单词或一部分,例如“程序员”,搜索引擎可能会去检索和“程序员”一块出现得频繁的词,然后返回。本质是去找频繁项集,而且需要相当地高效,像Apriori的效率太低了,同时也很耗费算力资源。
(5博主的说法节选)这个算法挺冷门的,至少比Apriori算法冷门。很多数据挖掘的教材还会提一提Apriori,但是提到FP-growth的相对要少很多。原因也简单,因为从功能的角度上来说,FP-growth和Apriori基本一样,相当于Apriori的性能优化版本。但不得不说有时候优化是一件很尴尬的事,因为优化意味着性能要求很高。但是反过来说,对于性能有着更高要求的应用场景,无论是企业也好,还是学术研究也罢,现在早就有了更好的选择,完全可以用更强大的算法和模型,没必要用这么个古老算法的优化版。对于那些性能要求不高的场景,简单的Apriori也就够了,优化的必要也不是很大。但是不管这个算法命运如何,至少从原理和思路理念上来说的确有为人称道的部分。下面我们就来看看它的具体原理吧。
(来自链接1与4博主的说法)FP-growth被用于挖掘频繁项集,它把数据集存储为一个叫FP树的数据结构里,这样可以更高效地发现频繁项集或频繁项对。相比于Apriori对每个潜在的频繁项集都扫描数据集判定是否满足支持度,FP-growth算法只需要遍历两次数据库,因此它在大数据集上的速度显著优于Apriori。,FP-growth由于只遍历数据集两遍,因此其时间复杂度不会很高。但是对于海量数据在内存中建立一份统一的 FP 树结构是不大现实的。这就需要考虑采用并行计算的思路来并发实现 FP-growth。
FP-growth理论讲解请看4,说的清楚,但配的图很少,理解较难,请去往5。(我认为就5是相对原理这方面是讲明白了的),这里贴上国科大刘莹老师的部分PPt。
条件模式基 conditional pattern base
参考资料
FP-growth算法理解和实现_木百栢的博客-CSDN博客_fp-growth算法 wFP-growth 算法与Python实现_songbinxu的博客-CSDN博客_fp growth【FP-growth算法理解和实现_木百栢的博客-CSDN博客_fp-growth算法‘
从零实现机器学习算法(十四)FP-growth - 知乎精品4
嫌弃Apriori算法太慢?使用FP-growth让你的数据挖掘快到飞起 - 知乎精品5比1好点