FPTree演算法筆記

2021-08-04 02:28:23 字數 1297 閱讀 4243

fptree演算法筆記:

fptree演算法引入一些資料結構來臨時的儲存資料

資料結構分為三個部分

第一部分是乙個項頭表:記錄所有1項頻繁項集出現的次數,按照次數降序排列

第二部分是fp tree: 將原始資料對映到一顆fp樹。

第三部分是節點鍊錶: 所有項頭表裡的1項頻繁集都是乙個節點鏈頭的表,它依次指向fp

樹中該1頻繁項集出現的位置。(是一根線)方便項頭表和fp tree之間的聯絡查詢和

更新。項頭表的建立:

第一次掃瞄:統計所有頻繁1項集,支援度降序排列將其放入項頭表中

第二次掃瞄:將源資料的每條資料中的非頻繁1項集剔除,並將該資料中的元素按支援度

大小進行排序,存放回源資料中(可以盡可能的共用祖先節點)

fp tree的建立

開始時fp樹無資料,即根節點為空,建立fp樹時我們一條一條的讀入排序後的資料集

,插入fp樹,插入時按排序後的順序插入,排序靠前的是祖先節點,靠後的是子孫節點

。(源資料在第二次掃瞄的時候,已經將排序考前的節點放在了前面,因此祖先節點

排序考前,而子孫節點排序靠後)。如果有共用的祖先節點,則祖先節點數加1。如果

有新節點出現,則項頭表對應的節點會通過節點鏈結上新的節點。

所有資料都插入到fp樹後,fp樹建立完成。

fptree的挖掘

得到了fp樹和項頭表以及節點鍊錶

首先從項頭表的底部向上一次挖掘,對於項頭表對應fp樹的每一項,我們要找到條件

模式基。條件模式基是以我們要挖掘的節點作為葉子節點所對應的fp子樹。

其次將得到的fp子樹的每個節點的計數設定為葉子節點的而計數,並刪除計數低於

支援度的節點。我們就可以得到頻繁項集。

fptree演算法歸納

1) 掃瞄資料,得到所有頻繁1項集的計數。然後刪除支援度低於閾值的項,將頻繁1項

集放入項頭表,並按照支援度降序排列。

2)掃瞄資料,將讀到的資料剔除非頻繁1項集,並按支援度降序排列

3)讀入排序後的資料集,插入fp樹,序靠前的節點是祖先節點,而靠後的是子孫節點。

如果有共用的祖先,則對應的公用祖先節點計數加1。插入後,如果有新節點出現,則

項頭表對應的節點會通過節點鍊錶鏈結上新節點。直到所有的資料都插入到fp樹後,

fp樹的建立完成。

4)從項頭表的底部項依次向上尋找條件模式基。從條件模式基遞迴挖掘得到項頭表

項項的頻繁項集。

5)如果不限制頻繁項集的項數,則返回步驟4所有的頻繁項集,否則只返回滿足

項數要求的頻繁項集。

Apriori演算法與FP Tree演算法

apriori演算法是常用的用於挖掘出資料關聯規則的演算法,它用來找出資料值中頻繁出現的資料集合,找出這些集合的模式有助於我們做一些決策。比如在常見的超市購物資料集,或者電商的網購資料集中,如果我們找到了頻繁出現的資料集,那麼對於超市,我們可以優化產品的位置擺放,對於電商,我們可以優化商品所在的倉庫...

Apriori演算法分析以及FP tree演算法

提高apriori演算法的有效性 主要的挑戰 1.要對資料進行多次掃瞄 2.會產生大量的候選集 3.對候選項集的支援度計算會非常繁瑣 解決思路 1.減少對資料的掃瞄 2.縮小產生的候選項集 3.改進對候選項集的支援度的計算方法 方法1 基於hash表的項集計數 將每個項集通過相應的hash函式對映到...

資料結構和演算法系列 FP Tree演算法的實現

在關聯規則挖掘領域最經典的演算法法是apriori,其致命的缺點是需要多次掃瞄事務資料庫。於是人們提出了各種裁剪 prune 資料集的方法以減少i o開支,韓嘉煒老師的fp tree演算法就是其中非常高效的一種。嚴格地說apriori和fp tree都是尋找頻繁項集的演算法,頻繁項集就是所謂的 支援...