FP-Growth可以高效地發(fā)現(xiàn)頻繁項集
發(fā)現(xiàn)事務(wù)數(shù)據(jù)中的公共模式
FP-Growth與Apriori相比,是基于Apriori的構(gòu)建,但是將數(shù)據(jù)集存儲在FP樹,這樣使得算法的執(zhí)行速度快于Apriori,通常性能要好兩個數(shù)量級以上。
FP-Growth只需要對數(shù)據(jù)庫進行兩次掃描,而Apriori對每個潛在的頻繁項集都會掃描數(shù)據(jù)集判定給定模式是否頻繁。FP過程如下:
1)構(gòu)建FP樹
2)從FP樹中挖掘頻繁項集
同搜索樹不同的是,一個元素項可以在一顆FP樹中出現(xiàn)多次,F(xiàn)P樹會存儲項集出現(xiàn)的頻率,相似元素的集合會共享樹的一部分,只有當(dāng)集合間完全不同時才會分叉
在FP樹中Z出現(xiàn)了5次,集合{r,z}出現(xiàn)了1次,那么可以推出一定是z本身或者其他符號一起出現(xiàn)了4次。
FP-growth的工作流程是,首先建立FP樹,然后利用它來挖掘頻繁項集。為構(gòu)建FP樹需要對原始數(shù)據(jù)掃描兩遍,第一遍對所有元素項的出現(xiàn)次數(shù)進行計數(shù),如果某元素是不頻繁的,那么包含該元素的超級也是不頻繁的,所以就不用考慮這些元素的超級。
第一遍掃描統(tǒng)計出現(xiàn)的頻率,第二遍掃描只考慮那些頻繁的元素
第一次遍歷數(shù)據(jù)集會獲得每個元素項的出現(xiàn)頻率。接下來,去掉不滿足最小支持度的元素項。再下一步構(gòu)建FP樹。在構(gòu)建時,讀人每個項集并將其添加到一條已經(jīng)存在的路徑中。如果該路徑不存在,則創(chuàng)建一條新路徑。每個事務(wù)就是一個無序集合。假設(shè)有集合{z,x,y}和比{y,z,r} ,那么在FP樹 , 相同項會只表示一次。
為了解決此問題,在將集合添加到樹之前,需要對每個集合進行排序。排序基于元素項的絕對出現(xiàn)頻率來進行。使用圖12-2中的頭指針節(jié)點值,對表12-1中數(shù)據(jù)進行過濾、重排序后的數(shù)據(jù)顯示在表12-2中
對事務(wù)記錄進行過濾和排序之后就可以構(gòu)建FP樹了,從空集開始,向其中不斷添加頻繁項集,過濾、排序后的事務(wù)添加到樹中,如果樹中已存在現(xiàn)有元素,則增加現(xiàn)有元素值,否則則添加分支
----從一顆FP樹中挖掘頻繁項集
1. 從FP樹中獲得條件模式基
2. 利用條件模式基,構(gòu)建一個條件FP樹
3. 迭代重復(fù)1)2)直到樹只包含一個元素
--條件模式基
---創(chuàng)建條件FP樹