FP-Growth算法及演示程序


FP-Growth算法

       FP-Growth(頻繁模式增長)算法是韓家煒老師在2000年提出的關聯分析算法,它采取如下分治策略:將提供頻繁項集的數據庫壓縮到一棵頻繁模式樹(FP-Tree),但仍保留項集關聯信息;該算法和Apriori算法最大的不同有兩點:第一,不產生候選集,第二,只需要兩次遍歷數據庫,大大提高了效率。

算法偽代碼

算法:FP-增長。使用FP-樹,通過模式段增長,挖掘頻繁模式。

輸入:事務數據庫D;最小支持度閾值min_sup

輸出:頻繁模式的完全集。

1. 按以下步驟構造FP-樹:

(a) 掃描事務數據庫D 一次。收集頻繁項的集合F 和它們的支持度。對F 按支持度降序排

序,結果為頻繁項表L。

(b) 創建FP-樹的根結點,以“null”標記它。對於D 中每個事務Trans,執行:

選擇 Trans 中的頻繁項,並按L 中的次序排序。設排序后的頻繁項表為[p | P],其

中,p 是第一個元素,而P 是剩余元素的表。調用insert_tree([p | P], T)。該過程執行

情況如下。如果T 有子女N 使得N.item-name = p.item-name,則N 的計數增加1;否

則創建一個新結點N,將其計數設置為1,鏈接到它的父結點T,並且通過結點鏈結構

將其鏈接到具有相同item-name 的結點。如果P 非空,遞歸地調用insert_tree(P, N)。

2. FP-樹的挖掘通過調用FP_growth(FP_tree, null)實現。該過程實現如下:

procedure FP_growth(Tree, α)

(1) if Tree 含單個路徑P then

(2) for 路徑 P 中結點的每個組合(記作β)

(3) 產生模式β ∪ α,其支持度support = β中結點的最小支持度;

(4) else for each a i 在 Tree 的頭部 {

(5) 產生一個模式β = a i ∪ α,其支持度support = a i .support;

(6) 構造β的條件模式基,然后構造β的條件FP-樹Treeβ;

(7) if Treeβ ≠ ∅ then

(8) 調用 FP_growth (Treeβ, β);}

點Build后生成的頭表和FP-Tree

點Step后生成再點Next會一次加入一個事務項進行生成FP-Tree

最后生成完了FP-Tree后點擊ConditionTreeMode進入FP-Tree挖掘模式,顯示當前頭表中選中項的條件FP-Tree

源碼下載

程序下載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM