apriori演算法實現 FP Growth演算法簡介

2021-10-13 18:56:37 字數 2244 閱讀 8464

由於apriori演算法在挖掘頻繁模式時,需要多次掃瞄資料庫,並且會產生大量的候選項集。所以apriori演算法的時間複雜度和空間複雜度相對都很高,演算法執行效率不高。而fp-growth演算法在進行頻繁模式挖掘時,只需要對資料庫進行兩次掃瞄,並且不會產生候選項集。它的效率相比於apriori演算法有很大的提高。

fp-growth演算法的主要思想是:將代表頻繁項集的資料庫壓縮儲存在頻繁模式樹中,每條事務資料中的項之間的關係被保留在頻發模式樹中。然後,將頻繁模式樹按照條件模式基拆分成一組條件fp樹,並分別挖掘這些條件fp樹。

第一次掃瞄資料庫,尋找頻繁1-項集,並按照由大到小的順序排序。

建立fp模式樹的根結點,記為「null」。

根據頻繁1-項集的順序對資料庫中的每條事務資料進行排序,並儲存在fp模式樹中,並建立項頭表。

為每乙個頻繁1-項集尋找字首路徑,組成條件模式基,並建立條件fp樹。

遞迴挖掘條件fp樹,獲得頻繁項集。

以表1中的資料解釋說明fp-growth演算法,最小支援度為2。

首先,掃瞄表1中的資料,根據最小支援度,獲得頻繁1-項集。按照支援度計數大小進行排序得到項集l=,,,,}。

然後,建立fp樹的根結點,記為「null」。第二次掃瞄資料庫,根據項集l對每條事務資料進行排序。例如事務t001經排序後得到,,},並將每一項作為結點鏈結到fp樹中,其中i2作為第乙個結點鏈結到根結點,其他的結點按照順序依次相互鏈結。接下來將排序好的t002事務資料,}鏈結到fp樹中,為,}建立分支,同樣i2作為第乙個結點鏈結到根結點,i4與i2鏈結。但是,由於這個分支與fp樹共享字首i2,所以,將結點i2合併,並且計數加1,為i4建立新結點鏈結到結點i2。一般的,當為乙個事務資料建立分支時,檢視是否含有相同的字首路徑,若含有相同的字首路徑,則字首路徑合併,並且相應的結點計數加1,為字首之後的項建立新結點並鏈結到共享字首路徑上。

建立項頭表可以在今後快速地遍歷fp樹,,使每項通過乙個結點鏈指向它在樹中的位置。根據該鏈可以找到fp樹中所有相同的結點。

根據表1資料建立的fp樹和項頭表如圖1所示:

接下來為每乙個頻繁1-項集尋找所有字首路徑,組成條件模式基,然後建立條件fp樹。例如i5在fp樹中的字首路徑有,}和,,},組成i5的條件模式基。使用這些條件模式基建立i5的條件fp樹,由於i3的支援度計數為1,小於最小支援度,所以i5的條件fp樹只包含單個路徑,},如圖2所示,該路徑產生的頻繁項集的所有組合為:,}、,}、,,}

演算法:fp-growth。使用fp樹,通過模式增長挖掘頻繁模式。

輸入:d:事務資料庫。

min_sup:最小支援度閾值。

輸出:頻繁模式全集。

方法:1、按以下步驟構造fp樹:

(a)掃瞄事物資料庫一次。收集頻繁項的集合f和它們的支援度計數。對f按照支援度計數排序,結果為頻繁項列表l。

(b)建立fp樹的根結點「null」,對於d中每一件transaction,執行:

選擇transaction中的頻繁項,並按照l中的次序排序。排序後的列表為[p|p]。其中p是第乙個元素,p是剩餘元素。呼叫inster_tree([p|p],t)。該過程的執行過程如下。如果t有子女n使得n.item-name = p.item-name,則n的計數增加1;否則,建立乙個新的結點n,將其計數記為1,鏈結到它的父結點t,並且通過結點鏈結構將其鏈結到具有相同item-name的結點。如果p非空,則遞迴地呼叫inster_tree(p,n)。

2、fp樹的挖掘通過呼叫fp-growth(fp_tree,null)實現。該過程實現如下。

procedure fp_growth(tree, α)

if tree 包含單個路徑p then

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

產生模式β∪α,其支援度計數support_count等於β中結點的最小支援度計數;

else for tree的頭表中的每個α_i {

5.產生乙個模式β= α_i∪α,其支援度計數support_count = α_i.support_count;

6.構造β的條件模式基,然後構造β的條件fp樹tree_β;

7.if tree_β != ∅ then

8.呼叫fp_growth(tree_β,β);

C 實現apriori演算法

include stdafx.h include include include define t 2 最小支援度 define m 9 樣本數 define n 5 資料項數 using namespace std 候選頻繁項集 維數,頻度,具體資料,獲取頻度 class freq item vo...

Apriori演算法Matlab實現

clc clear 最小支援度設定 min sup 2 最小置信度 min conf 0.7 讀取檔案,當前的檔案型別是txt檔案,事務資料用數字來表示的,測試資料可以用 資料探勘概念與技術 第三版中的資料為樣本 fid fopen d matlabfile apriori dataapriori....

Apriori演算法C 實現

最近剛上了資料探勘這門課,老師講了兩個演算法,即apriori演算法和fp growth演算法,然後布置了上機作業,挖掘乙個有8萬行的記錄的retail.dat,需要從中找出強規則,即同時滿足最小支援度和最小置信度的規則。在這裡給出乙個實現找出所有頻繁模式集的c 其中主要使用的儲存結構是二維陣列,有...