1. 程式人生 > >手推FP-growth (頻繁模式增長)算法------挖掘頻繁項集

手推FP-growth (頻繁模式增長)算法------挖掘頻繁項集

att 相同 事務 支持 apr 一次 多個 什麽 統計

一.頻繁項集挖掘為什麽會出現FP-growth呢?

原因:這得從Apriori算法的原理說起,Apriori會產生大量候選項集(就是連接後產生的),在剪枝時,需要掃描整個數據庫(就是給出的數據),通過模式匹配檢查候選集合(為的是找到滿足最小支持度的項)。候選產生過程帶來的就是昂貴的代價開銷,所以FP-growth就出現了。

二.FP-growth(Frequent-Pattern Growth) :頻繁模式增長

1.數據庫(給出的數據)第一次掃描和Apriori一樣,找出頻繁1項集的集合,統計各個項的支持度計數(出現的次數)。設置最小支持度,需要將集合的各個項按支持度計數由(大->小

)排序。假設排序好的集合為L

2.構造FP樹。首先,創建根結點(為NULL)。第二次掃描數據,將每個事務中的項按L的順序,在FP樹上構建分支。這裏需要註意的是,在為新事務建分支的時候,沿共同前綴上的每個結點的計數加1,為後綴之後的項創建結點。例如:事務1:建的分支為:1,2,3。事務2:1,2,5。則FP樹新分支(為事務2)需要與事務1共用(1,2)前綴,5則新建結點。此時(1,2)的支持度都相應的變為了2。結點3和5依舊是1

3.當FP樹完成,數據頻繁模式的挖掘就變為了FP樹的挖掘。

4.FP數挖掘的核心流程:從L的最小支持度的項(後綴模式)開始---->構造它的條件模式基(由FP樹中與該後綴模式一起出現的前綴路徑集組成

)--->構造這項的條件FP樹,之後遞歸L中的各項------>產生頻繁項集(後綴模式和條件FP樹產生的頻繁模式連接實現

5.需要註意的問題:

條件模式基:需要註意--->各個項出現的支持度計數(這裏會出現多個集合,因為後綴模式可能會有多個分支)要和當前的後綴模式的支持度計數保持一致。

條件FP樹:需要註意--->將條件模式基產生的多個集合合並(將相同前綴路徑的各個結點的支持度累計加1,這裏去掉不符合最小支持度的結點)。

產生頻繁模式:將條件FP樹產生的各個集合與後綴模式連接。(如果多個集合中出現重復的項,需累加計數再與後綴模式連接)例如:條件FP數產生的集合:(a:4,b:3),(b:3),假設此刻的後綴模式為c 。則產生的頻繁項集為:(a:4,c:4),(b:6,c:6),(a:4,b:3,c:3)

  

手推FP-growth (頻繁模式增長)算法------挖掘頻繁項集