FP growth 頻繁模式樹

2021-10-02 06:11:48 字數 2012 閱讀 7218

fp-growth(frequent pattern tree, 頻繁模式樹), 是韓家煒提出的挖掘頻繁項集的方法,是將資料集儲存在乙個特定的稱作 fp 樹的結構之後發現頻繁項集或頻繁項對,即常在一塊出現的元素項的集合 fp 樹。fp-growth 演算法比 apriori 演算法效率更高,在整個演算法執行過程中,只需遍歷資料集 2 次,就能夠完成頻繁模式發現,其發現頻繁項集的基本過程如下:(1)構建 fp樹(2)從 fp 樹中挖掘頻繁項集

fp-growth 的一般流程如下:1:先掃瞄一遍資料集,得到頻繁項為 1 的專案集,定義最小支援度(專案出現最少次數),刪除那些小於最小支援度的專案,然後將原始資料集中的條目按專案集中降序進行排列。2:第二次掃瞄,建立項頭表(從上往下降序),以及 fp 樹。3:對於每個專案(可以按照從下往上的順序)找到其條件模式基(cpb,conditional patten base), 遞迴呼叫樹結構,刪除小於最小支援度的項。如果最終呈現單一路徑的樹結構,則直接列舉所有組合;非單一路徑的則繼續呼叫樹結構,直到形成單一路徑即可。

tiditems

1i1, i2, i5

2i2, i4

3i2, i3

4i1, i2, i4

5i1, i3

6i2, i3

7i1, i3

8i1, i2, i3, i5

9i1, i2, i3

掃瞄資料集,對每個物品進行計數:

項集支援度i27

i16i36

i42i52

設最小支援度計數為2

掃瞄資料庫,統計支援度計數,得到頻繁1-項集,按支援度降序排列

tiditems

1i2,i1,i5

2i2, i4

3i2, i3

4i2,i1,i4

5i1, i3

6i2, i3

7i1, i3

8i2,i1,i3,i5

9i2,i1, i3

得到了fp樹和項頭表以及節點鍊錶,我們首先要從項頭表的底部項依次向上挖掘。對於項頭表對應於fp樹的每一項,我們要找到它的條件模式基。所謂條件模式基是以我們要挖掘的節點作為葉子節點所對應的fp子樹。得到這個fp子樹,我們將子樹中每個節點的的計數設定為葉子節點的計數,並刪除計數低於支援度的節點。從這個條件模式基,我們就可以遞迴挖掘得到頻繁項集了

從i

5i_5

i5​開始,對於頭表中的每個iii_

ii​,確定自身為頻繁模式,再挖掘以iii_

ii​為字尾的頻繁模式

將所有的祖先節點計數設定為葉子節點的計數

字首路徑/條件模式基:

,i1:

1>

,i1,

i3:1

>

、,i1:

1>

、,i1,

i3:1

>

頻繁模式:

\(

\(2的含義指的是i2,

i5

i_2,i_5

i2​,i5

​都是2)\\

提取以i4的字首路徑/條件模式基:

、(i1被砍掉了)

i4為字尾的頻繁模式:

\提取以i3為字尾的頻繁模式

有兩分支,則:

對於條件fp樹頭表中的每個ii,與i3連線確定頻繁模式ii,

i3

ii,i3​

,支援度等於ii的支援度。

遞迴挖掘條件fp樹,提取以ii,

i3

ii​,i3

​為字尾的頻繁模式

頻繁模式:\\

\以i

1i_1

i1​為字尾

\i

2i_2

i2​只有字首,沒有字尾

項條件模式基

條件fp樹

產生的頻繁模式

i5,

, ,

i4,

i3, ,

, , ,

i1

FP growth高效頻繁項集發現

fp growth 演算法優缺點 優點 一般快於apriori 缺點 實現比較困難,在某些資料上效能下降 適用資料型別 標稱型資料 演算法思想 fp growth演算法是用來解決頻繁項集發現問題的,這個問題再前面我們可以通過apriori演算法來解決,但是雖然利用apriori原理加快了速度,仍舊是...

頻繁序列模式挖掘

序列模式是頻繁模式的一種特殊情況,它們的應用範圍完全不一樣!如 購買物品 尿布 啤酒 可樂 麵包 尿布 啤酒 上述購物清單是兩個使用者的購物清單,根據上面的清單,我們可以發現尿布和啤酒組合起來一起購買的情況較多,因此超市可以根據這樣的頻繁項集分析,將尿布和啤酒放在較近的地方,或者將尿布和啤酒同時 等...

頻繁模式挖掘 Apriori演算法

dm實驗,寫的比較二,好多情況還沒有考慮,後續有時間會修改。開始的時候資料結構沒設計好導致寫到後面費了很大的勁 不過還好python的列表有起死回生的功效 資料集 database.txt i1,i2,i5 i2,i4 i2,i3 i1,i2,i4 i1,i3 i2,i3 i1,i3 i1,i2,i...