• 沒有找到結果。

第二章 相關研究工作

第二節 相關規則探勘

相關規則探勘問題是屬於資料探勘的範疇,最常以商店交易記錄資料庫為其 應用領域,針對顧客的交易行為做分析,以增加商店的業績。其後陸續引入其他 領域為研究主題應用,在不同領域時所採用的演算法和設計方式亦有些許差異。

在本篇論文中,我們將相關規則探勘應用在圖書館上,探討讀者借閱的共同性問 題。

2.2.1 簡介

從交易資料庫裡發掘出相關規則這個問題在[1]中首先被提出。例如:40%買 牙刷的顧客也會買牙膏,這就是一個典型的相關規則。找出相關規則之後便可以 採取適當的行銷策略促使顧客購買這些商品。

Logical Database

Selected Data

Preprocessed Data

Transformed Data

Extracted Information

Assimilated Knowledge

Select Preprocess Transform Mine Analyze and Assimilate

相關規則探勘的正規敘述 (Formal Statement) [1]如下:

令 I={i1,i2, … , im} 為一個文字符號 (Literal) 組成的集合,每個文字符號稱為 一 個 項 目 (Item) , 由 一 個 或 一 個 以 上 的 項 目 所 組 成 的 集 合 稱 為 項 目 集 (Itemset)。令資料庫 D 是由一群交易 (Transaction) T 所組成的集合,每個 T 為一 項目集,代表交易記錄,T ⊆ I ,每個交易記錄有其唯一的識別碼,稱為 TID。

如果 X ⊆ I 且 X ⊆ T,則定義為 T 包含(Contain) X。一個相關規則 (Association Rule) 表示成 X ⇒ Y,其中 X ⊆ I ,Y ⊆ I,X ∩ Y = ∅ 。若 D 中包含 X 的交易裡有 c%也同時包含了 Y,我們就說規則 X⇒Y 的確信值 (Confidence) 為 c;如果 D 裡包含 X∪Y 的交易記錄有 s%,我們就說規則 X⇒Y 的支持度 (Support) 為 s。

相關規則探勘的問題為給定一個交易記錄資料庫 D,在當中找出所有確信值和支 持度大於最小確信值 (minconf) 跟最小支持度 (minsup) 的規則,其中 minconf 與 minsup 的值由使用者給定。

[1]將本問題分成兩個子問題:

1. 子問題 1:找到所有支持度大於最小支持度的項目集。為了探勘方便起 見,有時把某一項目集的支持度定義為包含此項目集的交易個數,而不 是原來的交易百分率。支持度大於最小支持度的項目集稱為大項目集 (Large Itemset),反之稱為小項目集 (Small Itemset)。

2. 子問題 2:用子問題 1 中所找到的大項目集來產生所期望的規則。此步 驟的演算法非常直接,即:對於任一大項目集 L,找出其所有非空子集 合 。 對於每個非空子集合 a, 如果規則 a⇒(L-a)的 確 信 值 (也 就 是 support(L)/support(a))大於最小確信值,則此規則即符合所求。

由於在[2]中針對子問題 2 提出了直接且有效率的演算法,所以通常並不對 它做進一步的探討,而是集中在探討子問題 1,亦即如何快速地找出所有大項目 集,文獻上將此問題稱為”探勘大項目集”。

2.2.2 相關規則探勘演算法之相關研究

Itemsets Suppoet {1}

Itemsets Suppoet {1}

Itemsets Suppoet {1 2}

Itemsets Suppoet {1 2}

Itemsets Suppoet {2 3 5} 2

Itemsets Suppoet {2 3 5} 2 Database D

C1 L1

C2 L2

C3 L3

minisup=2

圖 2 - 2 - 2:Apriori 演算法

圖 2 - 2 - 2中的 apriori_gen 函數是用來產生候選集。由於任何大項目集的子 集合也都是大項目集,因此 apriori-gen 以所有大 (k-1)-項目集(Lk-1)為參數,傳回 大 k-項目集的候選集(Ck)。apriori-gen 分為兩個步驟來產生 Ck

1. 連結(Join):用 Lk-1來連結 Lk-1

insert into Ck

select p.item1,p.item2,…,p.itemk-1, q.itemk-1

from Lk-1 p, Lk-1 q

where p.item1=q.item1,…, p.itemk-2=q.itemk-2, p.itemk-1<q.itemk-1

2. 刪除(Prune):對於所有的 c∈Ck,只要任何一個子集合不在 Lk-1中就刪 除它

for all itemsets c∈Ck do for all (k-1)-subsets s of c do If (s∉Lk-1)then

delete c from Ck;

圖 2 - 2 - 2中的 subset 函數用來找出一個交易紀錄中所有包含於 Ck的子集 合。在實作上,Ck儲存在雜湊樹 (Hash Tree) 資料結構,如圖 2 - 2 - 3所示。將 Ck儲存在雜湊樹使得比對候選項目集更有效率,此亦是 Apriori 重要的關鍵。

L1 = {large 1-itemsets};//產生長度為 1 的大項目集 for (k=2;Lk-1≠∅;k++) do begin

Ck = apriori-gen(Lk-1);//產生 k-項目集之候選集 for all transactions t∈D do begin

Ct = subset(Ck,t);//計算支持度 for all candidates c∈Ct do

c.count++;

end

Lk = {c∈Ck|c.count ≥ minsup};//產生長度為 k 的大項目集 end

Answer =∪k(Lk);

圖 2 - 2 - 3:雜湊樹[10]

雜湊樹的內部節點 (Interior Node) 是一個雜湊表 (Hash Table),外部節點 (Exterior Node) 是一個陣列。雜湊樹根的深度 (Depth) 定義為 1,深度 d 的內部 節點指向深度 d+1 的節點,項目集儲存在外部節點裡。

當要新增一個項目集 c 時,從根開始一直往下找,找到 c 落在的外部節點裡,

然後加入。當在深度 d 時,以項目集中第 d 個項目來執行雜湊 (Hashing) 的動作,

決定要走哪個樹枝 (Branch)。當外部節點裡儲存之項目集超過一給定的數量時,

外部節點就變成內部節點。

subset 這個函數從雜湊樹的根開始遞迴處理,傳回所有包含於交易記錄 t 的 項目集,處理方法如下:(A) 如果正在處理的節點為外部節點,則將該節點中包 含於 t 的項目集加入答案中。(B) 如果正在處理的節點為內部節點,且此節點是 藉由雜湊項目 i 來的,則項目 i 後面所有的項目都須執行雜湊的動作,並將所得 到的節點再遞迴,運用上面所說的方式繼續執行。圖 2 - 2 - 4用圖例說明 subset 的運作方式。

Hash Function

1,4,7 2,3,5

3,6,9

Candidate Hash Tree

2 3 4

1 4 5 1 3 6

1 2 4 1 2 5 1 5 9

3 4 5 3 5 6 3 6 7 5 6 7

4 5 7 4 5 8

3 5 7 3 6 8 6 8 9

圖 2 - 2 - 4:subset 函數[10]

在[2]中也提出 AprioriTid 演算法。AprioriTid 演算法跟 Apriori 相同,運用 apriori- gen 函數來決定下一次疊代的候選集。不同處為,Apriori 是每一次疊代都 是以 D 對候選集來計算支持度,而 AprioriTid 是以Ck來擔任這個工作。Ck裡每 個元素都是<TID,{Xk}>形式,Xk是識別碼為 TID 的交易記錄中所有可能出現的

Hash Function

1,4,7

Hash Function

1,4,7

大項目集,此大項目集長度為 k。如圖 2 - 2 - 5的C2,當 TID=200 時,其交易記 AprioriTid 會比 Apriori 慢,但是到後期因為Ck的記錄變少變短,所以 AprioriTid 就比 Apriori 快許多。有鑑於此,作者提出了一個前幾次疊代用 Apriori,後幾次 疊代用 AprioriTid 的演算法,稱為 AprioriHybrid。

TID Items

TID Set-of-Itemsets 100

Itemsets Suppoet {1}

Itemsets Suppoet {1 2}

TID Set-of-Itemsets 100

Itemsets Suppoet {1 3}

Itemsets Suppoet {2 3 5} 2

TID Set-of-Itemsets 200

300

{ {2 3 5} } { {2 3 5}

Itemsets Suppoet {2 3 5} 2

Database C1 L1

L2

C2 C2

C3 C3 L3

綜合以上的說明,我們可以了解:Apriori 演算法減少候選集的數目,並利 用雜湊樹使得交易和候選集的比對時間較之前的演算法減少許多,缺點為資料庫 搜尋次數仍然太多;AprioriTid 改進 Apriori 的缺點,在探勘後期減小資料庫,以 降低磁碟讀取增加速度,但在初期因為項目集較多的關係會較慢。

相關文件