1. 程式人生 > 實用技巧 >關聯規則FP-Growth演算法

關聯規則FP-Growth演算法

FP-Growth

本文詳細介紹FP-Growth構造FP-tree和找頻繁項集(筆者研究方向確認為關聯規則,作為初學者,若本筆記有錯誤,還望大家留言指出)

已知強關聯規則如下表所示

TIDItems
0a,b
1c,d
2a,c,d,e
3a,d,e
4a,b,c
5a,b,c,d

假設定信度為70%,支援度為50%

則最小支援度為:50%*6(6為集數個數)=3(表示Items中的元素滿足≥3才為頻繁項集)

FP-growth構造FP-tree時需要進行兩次處理:

首先進行分類,求出F-list

我們先看錶格,遍歷一次資料集,統計每個元素出現的次數

a:5(出現5次)

b:3

c:4

d:4

e:2

然後把出現次數較小的濾掉(最小支援度3,將出現次數小於3的元素濾除)

再進行排序,將頻率高的放於首位

F-list(a:5),(c:4),(d:4),(b:3)

則新的關聯規則為(去除e)

TIDItems
0a,b
1c,d
2a,c,d
3a,d
4a,b,c
5a,b,c,d

開始構造FP-tree,對0項集{a,b}進行處理,元素首次出現,需要將頭結點賦予它。
在這裡插入圖片描述
再對1項集{c,d}處理,c為新元素出現,建立新的分支。並將頭結點賦予新節點。
在這裡插入圖片描述
再對2項集{a,c,d}處理,a已經出現,則a的次數加一,再對a進行分支。
在這裡插入圖片描述
再對3項集{a,d}處理
在這裡插入圖片描述
再對4項集{a,b,c}處理在這裡插入圖片描述
再對5項集{a,b,c,d}處理在這裡插入圖片描述
最後,從d、c、b、a元素找相同元素出現在哪?連線同一元素

連線d
在這裡插入圖片描述
連線c
在這裡插入圖片描述
連線b:b只有一個,不需要新增連線

連線a:a只有一個,不需要新增連線

最終連線:在這裡插入圖片描述
頻繁項集:

(先找二元項集)

**第一步:**從底往上看在這裡插入圖片描述
d出現一次,c出現兩次,都不滿足最小支援度,則不構成頻繁項集。在這裡插入圖片描述
c出現兩次,b出現三次,但c不滿足最小支援度,也不構成最小項集。在這裡插入圖片描述
b出現三次,a出現5次,都滿足最小支援度,則{a,b}為頻繁項集。

其他分支依次類推。

**第二步:**從整棵樹找{a,b,c,d}的組合方式:{a,b}、{a,c}、{a,d}、{b,c}、{b,d}、{c,d}

其中{a,b}在第一步就證明了他是頻繁項集,這裡就不用考慮。

{a,c}:
在這裡插入圖片描述
{a,c}從整棵樹中找,發現只出現兩次,不滿足最小支援度,則不屬於頻繁項集。

{a,d}:
在這裡插入圖片描述
{a,d}從整棵樹找,發現出現的次數為3,滿足最小支援度。

{b,c}:
在這裡插入圖片描述
{b,c}從整棵樹找只出現一次,這不是頻繁項集。

{b,d}:
在這裡插入圖片描述
{b,d}從整棵樹找只出現一次,這不是頻繁項集。

{c,d}:
在這裡插入圖片描述
{c,d}從整棵樹找,我們發現其中三個分支都含有{c,d},滿足最小支援度3,則{c,d}為頻繁項集。

依次類推找三元項集

從底往上找{b,c,d}
在這裡插入圖片描述
從分支中找{b,c,d},發現不滿足最小支援度…(依次類推)

從整棵樹找:找{a,b,c,d}的組合方式:{a,b,c}、{a,b,d}、{a,c,d}、{b,c,d}。發現並沒有滿足條件的項集

則這棵樹不存在三元頻繁項集

依次類推找四元頻繁項集(三元都不存在,更何況四元,無意義)

綜上所述

頻繁項集為

頻繁項集
{a,b}、{a,d}、{c,d}