數據挖掘——關聯規則算法之FP-tree

數據挖掘——關聯規則算法之FP-tree

前言

Apriori算法需要生成大量的候選集而且需要進行多次的掃描,對於那些大數據量的數據集很耗費時間。基於此問題,FP-tree算法不用生成候選集,只進行兩次數據庫掃描。簡單來說是儘可能少得讀取數據,儘可能的對讀取到的數據進行壓縮,屬於空間換時間的算法。

FP-tree算法

FP-tree沒有候選集,直接壓縮數據庫成一個頻繁模式,通過這棵樹生成關聯規則。

FP-tree的具體步驟:

步驟一、構造FP-tree:
	(1)掃描數據庫一次,得到頻繁項集1項集;
	(2)把項按支持度遞減排序;
	(3)再一次掃描數據庫,建立FP-tree。
步驟二、頻繁模式的挖掘:
	根據事務數據庫D和最小支持度min_sup,調用建樹過程建立FP-tree;
	if(FP-tree爲簡單路徑):
		將路徑上支持度計數大於等於min_sup的節點任意組合,得到所需的頻繁模式;
	else:
		初始化最大頻繁模式集合爲空;
		
	按照支持頻率升序,以每個1頻繁項爲後綴,調用挖掘算法挖掘最大頻繁模式集;
	根據最大頻繁模式集合中最大頻繁式,輸出全部的頻繁模式。

上面的過程看的雲裏霧裏,下面來個例子來學習FP-tree:

舉例

事務數據庫如下:

Tid Items
1 a,b,e
2 b,d
3 b,c
4 a,b,d
5 a,c
6 b,c
7 a,b
8 a,b,c,e
9 a,b,c

那麼按照上面說的步驟來處理上表的數據庫:
步驟一:
1、掃描事務數據庫得到頻繁項集1項集F(每個項出現的次數):

a b c d e
6 7 6 2 2

2、定義min_sup = 20%,即最小支持度爲2,此時每一項最少出現90.229 * 0.2 \approx 2次;
3、重新排列1項集F,把項按照支持度遞減排序:

b a c d e
7 6 6 2 2

4、重新調整事務數據庫,使每一個事務中的項按照頻次遞減的順序排列:

Tid Items
1 b,a,e
2 b,d
3 b,c
4 b,a,d
5 a,c
6 b,c
7 a,b
8 b,a,c,e
9 b,a,c

這塊需要注意,FP-tree算法不是先把上面的這個整張表排序好再去生成樹,而是每排序好一個事務就構建一個樹。下面說明怎樣建立樹。
5、創建根節點和頻繁項目表
(1)創建根節點:
在這裏插入圖片描述
(2)加入第一個事務(b,a,e)
在這裏插入圖片描述
(3)加入第二個事務(b,d)
在這裏插入圖片描述(4)加入第三個事務(b,c):
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20191124191735137.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjIxMT
(5)加入第四個事務(b,a,d)
在這裏插入圖片描述
(6)按照上面的算法,直到加入第九個事務(b,a,c):
在這裏插入圖片描述
步驟二:
(1)此時按照支持度從小到大的順序來挖掘。首先考慮e,得到條件模式基(簡單理解就是以e爲節點的所有路徑分支), 同時把其經過的節點的個數設置爲1(爲什麼設置爲1?因爲對於節點e來說,b和a對e只貢獻一次作用,其他類似)

<b,a:1>、<b,a,c:1>

(2)利用上面得到的條件模式基,在此構建條件FP-tree:
在這裏插入圖片描述
(3)敲黑板了!!!這塊不好理解!!!前面已經聲明瞭最小支持度是2,然後上面由e得到的tree中c的支持度1是小於2的 ,所以和e結合起來也達不到支持度2,所以去掉:
在這裏插入圖片描述
那麼剩下的b和a是滿足要求的,他們與e結合起來可以有如下(兩兩組合)的三個頻繁項集:

{b,e:2},{a,e:2},{b,a,e:2}

(4)按照遞增的順序,接下來該處理d了,其條件模式基:
<b,a:1>,<b:1>
那麼構造d的FP-tree:
在這裏插入圖片描述
同樣,a的支持度小於2,剔除,那麼其tree如下:
在這裏插入圖片描述
得到d的頻繁項集:

{b,d:2}

(5)考慮c,得到其條件模式基:
<b,a:2>,<b:2>,<a:2>

同樣構造FP-tree:
在這裏插入圖片描述

注意:此樹與上面的樹都不同,此樹不是單一路徑的,因此需要遞歸挖掘c。
1)從a開始,考慮a,a的條件模式基<b:2>,構造a的條件FP-tree:
在這裏插入圖片描述
一定要轉過來這個彎哈,因爲這是遞歸的,該步得到的結構應該計入到5)裏面,所以得c的頻繁項集{b,c:4},{a,c:4},{b,a,c:2}

(6)考慮a(這不是上面遞歸裏面的a) ,其條件模式基<b:4>
在這裏插入圖片描述
得a的頻繁項集{b,a:4}。

FP-tree的優缺點

FP-tree結構的好處:
(1)完備:不會打破交易中的任何模式;包含了頻繁模式挖掘所需的全部信息
(2)緊密:去除不相關信息(不包含非頻繁項集);支持度降序排列,支持高的項在FP-tree中共享的機會也高;絕不會比原數據庫大(如果不計算樹節點的額外開銷)。

優點:

  • FP-tree算法只需對事物數據庫進行兩次掃描;
  • 避免產生大量候選集

缺點:

  • 要遞歸生成條件數據庫和條件FP-tree,所需內存開銷大;
  • 只能用於挖掘單維的布爾關聯規則
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章