資料探勘 FP增長

2021-06-28 09:14:44 字數 2899 閱讀 9110

**:

fp-tree演算法

fptree演算法:在不生成候選項的情況下,完成apriori演算法的功能。

fptree演算法的基本資料結構,包含乙個一棵fp樹和乙個項頭表,每個項通過乙個結點鏈指向它在樹中出現的位置。基本結構如下所示。需要注意的是項頭表需要按照支援度遞減排序,在fptree中高支援度的節點只能是低支援度節點的祖先節點。

另外還要交代一下fptree演算法中幾個基本的概念:

fp-tree:就是上面的那棵樹,是把事務資料表中的各個事務資料項按照支援度排序後,把每個事務中的資料項按降序依次插入到一棵以null為根結點的樹中,同時在每個結點處記錄該結點出現的支援度。

條件模式基:包含fp-tree中與字尾模式一起出現的字首路徑的集合。也就是同乙個頻繁項在pf樹中的所有節點的祖先路徑的集合。比如i3在fp樹中一共出現了3次,其祖先路徑分別是,和。這3個祖先路徑的集合就是頻繁項i3的條件模式基。

條件樹:將條件模式基按照fp-tree的構造原則形成的乙個新的fp-tree。比如上圖中i3的條件樹就是:

1、 構造項頭表:掃瞄資料庫一遍,得到頻繁項的集合f和每個頻繁項的支援度。把f按支援度遞降排序,記為l。

2、 構造原始fptree:把資料庫中每個事物的頻繁項按照l中的順序進行重排。並按照重排之後的順序把每個事物的每個頻繁項插入以null為根的fptree中。如果插入時頻繁項節點已經存在了,則把該頻繁項節點支援度加1;如果該節點不存在,則建立支援度為1的節點,並把該節點鏈結到項頭表中。

3、 呼叫fp-growth(tree,null)開始進行挖掘。偽**如下:

procedure fp_growth(tree, a)

iftree 含單個路徑pthen else

}

fp-growth是整個演算法的核心,再多囉嗦幾句。

fp-growth函式的輸入:tree是指原始的fptree或者是某個模式的條件fptree,a是指模式的字尾(在第一次呼叫時a=null,在之後的遞迴呼叫中a是模式字尾)

fp-growth函式的輸出:在遞迴呼叫過程中輸出所有的模式及其支援度(比如的支援度為2)。每一次呼叫fp_growth輸出結果的模式中一定包含fp_growth函式輸入的模式字尾。

我們來模擬一下fp-growth的執行過程。

1、 在fp-growth遞迴呼叫的第一層,模式前後a=null,得到的其實就是頻繁1-項集。

2、 對每乙個頻繁1-項,進行遞迴呼叫fp-growth()獲得多元頻繁項集。

下面舉兩個例子說明fp-growth的執行過程。

1、i5的條件模式基是(i2 i1:1), (i2 i1 i3:1),i5構造得到的條件fp-樹如下。然後遞迴呼叫fp-growth,模式字尾為i5。這個條件fp-樹是單路徑的,在fp_growth中直接列舉的所有組合,之後和模式字尾i5取並集得到支援度》2的所有模式:。

2、i5的情況是比較簡單的,因為i5對應的條件fp-樹是單路徑的,我們再來看一下稍微複雜一點的情況i3。i3的條件模式基是(i2 i1:2), (i2:2), (i1:2),生成的條件fp-樹如左下圖,然後遞迴呼叫fp-growth,模式字首為i3。i3的條件fp-樹仍然是乙個多路徑樹,首先把模式字尾i3和條件fp-樹中的項頭表中的每一項取並集,得到一組模式,但是這一組模式不是字尾為i3的所有模式。還需要遞迴呼叫fp-growth,模式字尾為,的條件模式基為,其生成的條件fp-樹如右下圖所示。這是乙個單路徑的條件fp-樹,在fp_growth中把i2和模式字尾取並得到模式。理論上還應該計算一下模式字尾為的模式集,但是的條件模式基為空,遞迴呼叫結束。最終模式字尾i3的支援度》2的所有模式為:

本人新增備註說明:對於上面的例子,呼叫tree_growth(fp_tree,null)函式過程如下:

由於fp_tree包含多支,遍歷頭表:tree_growth(tree_i2,i2),  tree_growth(tree_i1,i1),  tree_growth(tree_i3,i3),  tree_growth(tree_i4,i4),  tree_growth(tree_i5,i5)

tree_growth(tree_i2,i2) 中i2的支援度是7,tree_i2的條件模式基為空,所以只產生乙個頻繁模式

tree_growth(tree_i1,i1)中i1的支援度是6,tree_i2的條件模式基為,所以遍歷所有可能的子集合後產生頻繁模  

tree_growth(tree_i4,i4),  

tree_growth(tree_i5,i5) 類似,

這裡重點講一下tree_growth(tree_i3,i3):

tree_growth(tree_i3,i3)中i3的支援度是6,tree_i2的條件fp樹為,,接著呼叫tree_growth(tree_i3^i1,i3^i1) 其中i3^i1計數為4 ,和tree_growth(tree_i3^i2,i3^i2) 其中i3^i2計數為4

tree_growth(tree_i3^i1,i3^i1) 的條件模式基為,產生頻繁模式,

tree_growth(tree_i3^i2,i3^i2) 的條件模式基為空

,產生頻繁模式

根據fp-growth演算法,最終得到的支援度》2頻繁模式如下:

item

條件模式基

條件fp-樹

產生的頻繁模式

i5i4

i3i1

, i2 i5:2, i1 i5:2, i2 i1 i5:2

i2 i4:2

i2 i3:4, i1 i3:4, i2 i1 i3:2

i2 i1:4

fp-growth演算法比apriori演算法快乙個數量級,在空間複雜度方面也比apriori也有數量級級別的優化。但是對於海量資料,fp-growth的時空複雜度仍然很高,可以採用的改進方法包括資料庫劃分,資料取樣等等

以智慧型資料架構,挖掘增長金礦

對很多技術團隊來說,在搭建智慧型資料架構的過程中,或多或少會遇到一些疑惑和挑戰,經過多次實踐後,有些團隊已經破除疑惑,成功探索出一條搭建智慧型資料架構之路,那麼他們是如何實現這一技術的呢?在近日的個推技術沙龍成都站,幾位架構大師在現場開啟了資料技術的 腦暴時間 諾基亞網路成都研發中心研發經理 企業在...

第六章(2) 關聯分析 FP增長演算法

fp增長演算法 使用fp樹的緊湊資料結構組織資料,並從中提取頻繁項集 fp樹表示法 fp樹是一種輸入資料的壓縮表示,把每個事務對映到fp樹中的一條路徑來構造 步驟 掃瞄一次資料集,確定每個項的支援度,事務資料去除非頻繁項,將事務中的項按支援度降序 第二次掃瞄資料集,構建fp樹,讀入第乙個事務,路徑上...

SPSS Modeler資料探勘 資料探勘概述

資料探勘 是一種通過數理模式來分析大量資料,以找出不同的客戶或市場劃分,分析出消費者喜好和行為的方法。可以描述為 是按企業既定業務目標,對大量的企業資料進行探索和分析,揭示隱藏的 未知的 或驗證已知的規律性,並進一步將其模型化的先進的有效的方法。資料探勘 data mining 在技術上的定義是從大...