關聯規則FP-Growth演算法
FP-Growth
本文詳細介紹FP-Growth構造FP-tree和找頻繁項集(筆者研究方向確認為關聯規則,作為初學者,若本筆記有錯誤,還望大家留言指出)
已知強關聯規則如下表所示
TID | Items |
---|---|
0 | a,b |
1 | c,d |
2 | a,c,d,e |
3 | a,d,e |
4 | a,b,c |
5 | a,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)
TID | Items |
---|---|
0 | a,b |
1 | c,d |
2 | a,c,d |
3 | a,d |
4 | a,b,c |
5 | a,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} |