摘要:
搜索引擎中,输入一个单词或者单词的一部分。搜索引擎就会自动补全查询的单词项。用户甚至实现都不知道搜索引擎推荐的东西是否存在。搜索引擎公司研究元需要查看互联网上的词找出经常出线一起的词对。
它是基于Apriori算法,但是比它快。这里的任务是将数据集存储在一个特定的FP树结构中发现频繁项集或者频繁项对。
过程简化如下:会两次扫描数据集
1)构建FP树
2)从FP树中挖掘频繁项集
下面的例子是:基于Twiter文本流中挖掘常用词
FP-growth算法就是将数据存储在一个称作FP树的紧凑的数据结构中。FP代表的是频繁模式。它通过link来链接相似的元素,被连起来的元素看作一个链表。同搜索树不同的是,一个元素项可以在FP树中出现很多次。FP树会存储项集的出线频率,而每个项集会以路径方式存储在树中。树节点上给出集合中单个元素以及序列的出线次数,路径会给出这个序列的出线次数。
相似项链接就是节点链接,用于快速发现相似项的位置。我们生成上图树的事务数据
FP-growth算法工作流程如下:首先构建FP树,对原始数据集合扫描两次。第一次所有元素出现次数进行计数,如果某个元素不频繁那么超集肯定不频繁。
第二遍只考虑那些频繁元素
FP树的数据结构
class treeNode:
def __init__(self,nameValue,numOccur,parentNode):
self.name = nameValue
self.parent = parentNode
self.count = numOccur
self.nodeLink = None
self.children={}
def inc(self,numOccur):
self.count+=numOccur
#树文本形式打印
def disp(self,ind=1):
print ' '*ind,self.name, ' ',self.count
for child in self.children.values():
child.disp(ind+1)
我们测试一下这个数据结构
import fpGrowth rootNode = fpGrowth.treeNode('pyramid',9,None) rootNode.children['eye'] = fpGrowth.treeNode(