• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
58
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學

碩 士 論 文

題目:植基於最小完美雜湊函數之漸進式關連法則探 勘演算法

A Novel Incremental Mining Algorithm for Association Rules based on Minimal Perfect Hashing and Pruning

系 所 別:資訊工程學系碩士班 學號姓名: E09502004 周恩聖 指導教授:曾秋蓉 教授

中華民國九十九年二月

(2)

摘要 摘要 摘要 摘要

經過許多學者的努力,關連法則探勘方法漸趨成熟;但在實際應用上,面對變化 快速的商業行為,仍有許多改善的空間。於是有學者提出漸進式關連法則探勘 ( Incremental Mining ),期望在資料更新後能快速產出探勘結果,降低掃描完整資料 庫的頻率。不過目前漸進式關連法則探勘演算法在執行效率上仍有進一步改進的空 間,同時針對交易項目新增的狀況,仍缺乏探討也缺乏適合的方法。

本論文提出一個植基於最小完美雜湊函數的方法,將其應用在關連法則探勘,主 要可改善兩個部份:1. 本文提出的方法可直接透過公式計算,使每個項目集在雜湊 表中擁有唯一且不碰撞的位址,無須查表進行運算可提升探勘的效率;2. 本文提出 的方法可支援新增項目,所有新增項目所組合出的項目集,皆會排列在雜湊表的最 後,不會影響原本項目集排列的順序;因此當本論文所提出之方法應用在漸進式關連 法則探勘時,不但可以快速產生新的頻繁項目集,並且可以同時支援新增項目,而不 需重新掃描交易資料庫,因此可以增進效能。透過實驗得到的結果證實,本研究提出 的方法的確在效能上有比較好的結果。在我們設計的實驗中,靜態資料探勘之效能平 均可提升約 20%,新增交易之動態資料探勘效能平均可提升約 68%,而新增項目之 動態資料探勘效能平均可提升約 10 倍。

關鍵字關鍵字

關鍵字關鍵字:資料探勘,關連法則探勘,漸進式探勘…

(3)

目錄 目錄 目錄 目錄

摘要...I

第 1 章 概論 ... 1

1.1 研究背景... 1

1.2 研究動機... 4

1.3 研究目的... 5

第 2 章 相關研究 ... 7

2.1 關連法則探勘... 7

2.2A

PRIORI

演算法... 8

2.3 直接雜湊修剪法 (D

IRECT

H

ASHING AND

P

RUNING

,DHP) ... 11

2.4 多階索引修剪法 (M

ULTI

-P

HASE

I

NDEXING AND

P

RUNING

,MPIP)... 15

2.5 快速更新法 (F

AST

UP

DATE

,

FUP) ... 18

第 3 章 漸進式最小完美雜湊修剪法 ... 23

3.1 最小完美雜湊函數... 23

3.2IMPHP 演算法... 30

3.3 實例說明... 33

第 4 章 實驗結果與評估 ... 40

4.1 實驗設計... 40

4.1.1 靜態資料探勘 ... 40

(4)

4.1.2 動態資料探勘 – 新增加交易資料 ... 41

4.1.3 動態資料探勘 – 新增加項目 ... 41

4.2 運算效能評估... 42

4.2.1 靜態資料探勘 ... 43

4.2.2 動態資料探勘 – 新增加交易資料 ... 44

4.2.3 動態資料探勘 – 新增加項目 ... 46

第 5 章 結論與未來研究方向 ... 49

參考文獻... 51

(5)

第 第

第 1 章 章 章 章 概論 概論 概論 概論

資料探勘 ( Data Mining ) 泛指從大量的資料中挖掘出有價值的資訊,或者挖掘 出專家未知的新事實的一個過程。此資訊可以作為管理人員決策時的參考依據,進而 達到改善決策的目的,甚至更進一步發現隱藏的知識。關連法則探勘 ( Association Rules Mining ) 是資料探勘的一種方法,目的是找出資料項目間有趣的關係,亦即關 係性較強的關連法則。而所謂關連法則即是項目或事件間的關連性,也代表項目或事 件同時出現或發生的關係強度。透過關連法則,可洞悉出原本不為人知的資訊,或是 隱藏在資訊背後的知識。傳統資料探勘的對象是靜態資料,若要針對動態資料作探 勘,則需要使用漸進式探勘的方法,當資料新增或異動時,可以快速掃瞄更新後的資 料得到探勘結果,此種探勘方法稱作漸進式探勘 ( Incremental Mining )。以此基礎發 展出所謂漸進式關連法則探勘 ( Incremental Association Rules Mining ) 適用於動態資 料的關連法則探勘方法,目的也是找出資料項目間的關係,發掘隱含的關連性。

本章將分成以下三個部份:首先1.1 節研究背景簡述關連法則探勘方法的應用與 演進;接著 1.2 節研究動機說明關連法則探勘在實際應用上的不足之處;最後在 1.3 節說明此研究之目的。

1.1 研究背景 研究背景 研究背景 研究背景

關連法則探勘在實際應用上,知名的案例不勝枚舉。一般最常被列為教科書案例 的莫過於“啤酒與尿布”的案例。美國大型國際連鎖量販店沃爾瑪 ( Wal-Mart Stores, Inc. ) 的資料分析師,使用關連法則探勘找到一條有趣的關連法則。當顧客購買尿布 時,有很高的機率他們也會同時購買啤酒。於是商店調整商品擺放的位置,將啤酒與 尿布放在相鄰的商品陳列架上,方便購買尿布的顧客可快速取得啤酒。這樣的調整造

(6)

成啤酒與尿布的銷售量都增加,商店的營收也增加了。這正是關連法則探勘,從大量 的資料中挖掘出有價值的資訊,或者挖掘出專家未知的新事實,將此資訊作為決策時 的參考,並且進而達到改善決策的目的,甚至更進一步發現隱藏的知識。“啤酒與尿 布”案例正是最好的應證。

而關連法則探勘的方法,自從 Apriori 演算法提出之後,在許多學者努力下,關 連法則探勘演算法多不勝數;但大多與 Apriori 有類似的架構 ( Cheung et al, 1996, Park et al, 1997 ),多半是在此架構下做改良而來。本文將探討幾個最常被其他學術論 文參考引用的方法,分別說明如下。

Apriori 演算法 ( Agrawal & Shafer, 1996 )。主要透過反覆掃描交易資料庫,以求

得項目長度最長的頻繁項目集 ( Large Itemset )。Apriori 演算法使用較直覺的方式,

掃描資料庫計算次數,篩選掉次數較少的項目集,然後結合 ( Join ) 產生下一回合的 項目集,再掃描資料庫計算次數,再次篩選掉次數較少的項目集。不斷重複上述步驟,

直到不再產生新的頻繁項目集為止。Apriori 的方法是很有貢獻的研究,但是有兩個 瓶頸,當項目很多時,結合的動作會花費許多時間,並且需要處理大量的候選項目集;

重複掃描資料庫也是另一個耗費時間的部份。所以後來的許多方法都致力於突破此兩 個瓶頸。

DHP ( Direct Hashing and Pruning ) 演算法 ( Park et al, 1997 ) 。基本架構與

Apriori 相同。特色是使用雜湊的方式大幅減少項目結合所耗費的時間,並且利用已

經產生的頻繁項目集修剪原始的交易資料庫,可大幅減少下一個循環掃描交易資料庫 的時間。DHP 演算法算是改良 Apriori 演算法相當出色的,大幅改善執行效率。但 是在特定的情況下某些 Worst Case 的情形,DHP 演算法所耗費的時間將非常接近

(7)

率過高而將造成使用雜湊表過濾候選項目集的效果不好。DHP 將會放棄使用雜湊表 過濾的方式,而是改以 Apriori 的方式產生頻繁項目集,這會使得 DHP 的效能大大 地降低,因此似乎仍有改善的空間。

MPIP ( Multi-Phase Indexing and Pruning ) 演算法 ( Tseng et al, 2006 )。架構上基 於 DHP 演算法,但是 MPIP 提出一個最小完美雜湊函數的方法,取代原本 DHP 的 雜湊函數。所謂最小完美雜湊函數,所有雜湊表的項目不會發生碰撞,且雜湊表的位 址不會有所浪費,因此可以使雜湊表的準確度提升;且每一個雜湊表的項目所計算的 次數,即是該項目的支持度。因此當交易資料有更新時,不需要重新掃描資料庫計算 支持度,所以可以應用在更新頻繁的資料庫,可快速獲得更新資料後的結果。但是若 有新增的項目,則需要重新掃描資料庫與重新配置雜湊表才能得到更新資料後的結 果。似乎也有可以再加強的地方。

FUP ( Fast UPdate ) 演算法 ( Cheung et al, 1996 )。屬於漸進式關連法則探勘演算 法。FUP 演算法被許多學術論文參考引用。漸進式探勘演算法的目的在於當資料有 更新時不需要每次重新掃描全部的資料庫。亦即減少掃描資料庫的次數,如此便能加 快執行的效率。FUP 演算法也是使用類似 Apriori 架構的方法,透過反覆掃描資料 庫與最小支持度門檻值的限制,得到最大頻繁項目集。兩者的差別在於針對更新交易 資料的處理。當新增交易資料使得原本頻繁的項目集變成非頻繁項目集,或者使得原 本的非頻繁項目集變成頻繁項目集時,FUP 演算法有一套定理處理這些情況並且可 以有效減少掃描資料庫的次數,所以也是非常出色的關連法則探勘方法。但同樣地若 有新增的項目,則可能需要重新掃描資料庫才能得到更新資料後的結果,似乎也有可 以再加強的地方。

在 一般 情 況 下 , 關 連 法 則 探 勘 的 問 題 是 一 個 NP-Complete 的 演 算 法 問 題

(8)

( Angiulli et al, 2001 ) 。於是需要藉助一些啟發式演算法 ( Heuristic algorithms ) 來解 決此類問題。如 Apriori:任一長度為 k 的頻繁項目集,其 k – 1 的子集合必定也是 頻繁項目集 ( Agrawal & Shafer, 1996 )。在許多學者的努力下發展出各式各樣的演算 法,基於 Apriori 發展出來的方法一般稱為 Apriori-like 的方法 ( Cheung et al, 1996 );也有以 Hash-Based 的方法 ( Park et al, 1997, Özel & Güvenir, 2001, Tseng et al, 2006, );另外後來也有 FP-Growth-like 的方法 ( Ezeife & Su, 2002, Shang et al, 2005 );而在近期關於漸進式關聯法則探勘的研究,多以樹狀資料結構來達到不需重 新掃描原始資料 ( Ahmed et al, 2009, Dai & Lin, 2009, Lin et al, 2009 )。

1.2 研究動機 研究動機 研究動機 研究動機

關連法則探勘的應用大多使用在商店交易資料的探勘,也就是商品的銷售資料 庫。然而在現實環境中商店所販售的商品項目,會根據受客戶歡迎的程度、銷售利潤 變化,或是供應商的供貨狀況,而有所變化;也就是商品項目可能變動,例如:商品 項目可能停止販售,或是有新的商品可以販售;隨著新增的交易資料越來越多,頻繁 項目集的項目,可能變成非頻繁項目集的項目,這將會影響資料探勘的結果以及資料 探勘進行的方式。因此我們試圖提出一個方法,可以適用在項目新增頻繁的銷售資料 庫,並可快速得到更新資料之後的探勘結果。

前面提到的幾個關連法則探勘方法,由於在設計上並沒有針對新增項目特別設 計,若要適用在項目新增頻繁的銷售資料庫皆須有所調整。分別描述如下:Apriori 的 方法在設計上原本就沒有考量漸進式探勘,所以不只無法適用新增資料更新,也無法 適用於新增加項目的探勘,只有將資料庫完整重新掃描才能獲得正確的結果。DHP 的 方法在設計的本質上類似 Apriori 也沒有考量漸進式探勘,所以也需要將資料庫完整

(9)

重新掃描才能獲得正確的結果。MPIP 的方法在設計的本質上類似 DHP,雖然 DHP 沒有辦法適用於漸進式探勘但 MPIP 卻可以。主要差異在於 MPIP 方法產生的雜湊 表其中的項目不會發生碰撞,所以每一個雜湊表的位址就是一個項目集,故可以很容 易地適用在漸進式探勘。但是 MPIP 卻無法適用在新增加項目的探勘,主要原因是 新增加的項目,無法在不影響其他項目在雜湊位址的情況下加入雜湊表中。FUP 的 方法,因為原本就是設計用來處理漸進式探勘,所以可用於更新的資料;同時本研究 也發現,FUP 也可以適用於新增的項目。由於新增加的項目對於原始資料庫來說,

是次數為 0 的非頻繁項目集,因此只有當新增加的項目在更新資料的部份高於門檻 值,才有可能成為頻繁項目集。由於 FUP 會先掃描更新資料的部分,當某個項目在 更新資料的部份大於或等於最小支持度時,才會去掃描原始資料庫的該項目的支持 度,當兩邊的支持度加起來符合最小支持度的門檻值時,該項目才會成為頻繁項目集。

本研究期望找出一個新的方法,如何在資料新增加項目時不需要重複掃描資料 庫,即可得到新增後的結果。取法 MPIP 使用最小完美雜湊函數,可以得到最佳的 雜湊表配置,並且不僅要適用於漸進式探勘,更要適用在新增加項目的漸進式探勘,

而且要有較好的效能。

1.3 研究目的 研究目的 研究目的 研究目的

資料探勘可以為決策者洞悉從來不為人知的銷售模式,找出潛在性的商品搭配銷 售方式。在資訊爆炸的時代,在知識即是力量的時代,資料探勘從一片資料中擷取出 資訊透過分析萃取成知識,幫助決策者達成目標。關連法則探勘的應用,大多使用在 企業交易資料的探勘,也就是商品的銷售資料庫。因應現實環境中商品項目的快速變 化,新增的交易資料越來越多且越來越快速。因此我們試圖提出一個方法可以適用在

(10)

項目新增頻繁的銷售資料庫,並可快速得到更新資料之後的探勘結果。

本 研 究 提 出 一 個 使 用 最 小 完 美 雜 湊 函 數 之 漸 進 式 關 連 法 則 探 勘 演 算 法 (Incremental Minimum Perfect Hashing and Pruning, IMPHP),主要期望改善兩個部分:

(1) 提出一個最小完美雜湊函數,希望可直接透過公式計算,使每個項目集在雜湊表 中擁有唯一且不碰撞的位址。(2) 當新增加交易資料或項目時,不需要改變原本雜湊 表的位址,且不需重新掃描交易資料庫。這樣的改良使得在新增加項目時,不需要重 複掃描資料庫,僅需針對更新部分掃描即可得到新增後的結果;同時在新增加的項目 時亦不影響原本雜湊表的位址,所以在處理新增加資料及項目的漸進式探勘時,會有 較好的效能。

本論文將架構如下,第 1 章:針對本論文的研究背景、研究動機與研究目的簡 介說明;第 2 章:針對與本論文的相關研究探討,分別介紹其內容與演算法,並且 舉例說明;第 3 章:詳細說明本研究所提出的方法,進行步驟與演算法,並且舉實 例說明;第 4 章:針對本論文提出的方法,設計實驗,以實驗數據應證本研究提出 的方法;第 5 章:結論。

(11)

第 第

第 2 章 章 章 章 相關 相關 相關 相關研究 研究 研究 研究

在本章節會針對資料探勘方法中的「關連法則探勘」與「漸進式關連法則探勘」

做說明。2.1 節先介紹「關連法則探勘」的基本概念;2.2 節介紹最為人所知的 Apriori 演算法 ( Agrawal & Shafer, 1996 );2.3 節介紹藉由改良 Apriori 演算法後所提出的 Direct Hashing and Pruning ( DHP ) 演算法 ( Park et al, 1997 );接著 2.4 節則進ㄧ步介 紹改善 DHP 效能所提出的 Multi-Phase Indexing and Pruning ( MPIP ) 演算法 ( Tseng et al, 2006 );最後,在 2.5 節介紹知名的漸進式關連法則探勘方法: Fast Update ( FUP ) 演算法 ( Cheung et al, 1996 )。

2.1 關連 關連 關連法則探勘 關連 法則探勘 法則探勘 法則探勘

關連法則探勘目的是找出資料項目間的關係,發掘隱含的關連性。而所謂的關連 法則,簡言之即是當某個事件或是項目 A 出現或發生時,事件或項目 B 同時出現 或發生的機率 ( 信心水準 ) 與案例數比例 ( 支持度 )。一組商品項目或是事件所成 的集合稱為項目集 (Itemset),而 A 與 B 皆為此項目集的子集合,假設 T 代表一筆 交易,若所有 A 中的項目皆被包含於 T 之中,則稱交易 T 支持 ( Support ) 項目集

A。而項目集 A 出現的交易個數稱為項目集 A 的支持個數 ( Support Count )。而項

目集 A 的支持度 ( Support ) 則是項目集 A 的交易個數佔全部交易總數的比例。如 前面所述,A 出現或發生時,B 同時出現或發生的案例數比例即是 A 與 B 的支持 度,而發生的機率即是信心水準。信心水準是指 A 與 B 的支持度佔全部 A 支持度 的比例。關連法則必須滿足事先設定的兩個參數值,最小支持度 ( Minimum Support ) 與最小信心水準 ( Minimum Confidence ) ( 曾等人,2007 )。 關連法則探勘大致可以 分為以下兩個步驟:

(12)

1. 找出大於等於最小支持度門檻值 ( Threshold or Minimum Support ) 的項 目集,通過最小支持度篩選的項目集即是頻繁項目集 ( Large Itemsets ) 。 2. 透過找到的頻繁項目集,找出大於等於最小信心水準的關連法則。如前

面所述,我們將此表示為 A ⇒ B 有 c% 的信心水準 ( 機率 ) 與 s%

的支持度 ( 案例數比例 ),此描述的語句稱為一條關連法則。而 A 被稱 為條件句,B 被稱為結論句。

本章會探討幾個與本研究相關的關連法則探勘方法,針對關連法則使用到的符 號定義如下:令 I = {i1, i2, i3,…ik} 為項目集合 ( Itemset ),DB 為交易資料庫,交易 資料庫中的每一筆交易 T 是一個項目集合且

T ⊆ ,令一個項目集合 I X ⊆ ,一筆 I

交 易 T 包 含 X 若 且 唯 若

X ⊆ T

, 關 連 法 則 是 一 個蘊 含

X ⇒ Y

其 中

I Y I

X

⊆ , ⊆ 且

X ∩ Y

= ∅,假如 DB 中有 c% 的交易中同時包含 X 也包含 Y,

我們可以說

X ⇒ Y

這條關連法則保有 c 的信心水準,假如 DB 中有 s% 的交易中 包含

X ∪ Y

,我們可以說

X ⇒ Y

這條關連法則保有 s 的支持度,n 表示項目 ( Item ) 的總數, k 表示項目集的長度,Ck 表示項目集長度為 k 的候選項目集 ( Candidate itemset ),Lk 表示項目集長度為 k 的頻繁項目集 ( Large itemset ),Hk 表 示項目集長度為 k 的雜湊表 ( Hash table ),Dk 表示經過 Lk 修剪過後的交易資料 庫。

2.2 Apriori 演算法 演算法 演算法 演算法

Apriori 演算法於 1996 年提出 ( Agrawal & Shafer, 1996 )。我們幾乎可以說目前

所有關連法則探勘的方法都是由 Apriori 改良而來,由此可以看出 Apriori 演算法在

(13)

關連法則探勘研究上的地位。

Apriori 演算法主要透過重複掃描交易資料庫以求得項目長度最長的頻繁項目集

( Large Itemset ) 。Apriori 的主要定理是,一個頻繁項目集的任何子集合必定也是頻 繁項目集。因此 Apriori 使用前一回合得到的頻繁項目集來產生下一回合的頻繁項目 集。首先掃描交易資料庫,將所有找到的項目當成候選項目集,得到候選項目集 C1, 並計算各個候選項目集的次數,也就是支持度 ( Support );再過濾掉低於最小支持度 門檻 ( Minimum Support ) 的項目集,得到頻繁項目集 L1;再透過 L1 * L1 的結合,

得到下一階段的候選項目集 C2,再掃描資料庫計算 C2 中各個項目集的次數。最後 再重複以上步驟,直到不再產生候選項目集為止,詳細步驟下面將舉例說明。

假設交易資料庫 DB 有 4 筆交易資料,TID 表示交易資料的唯一識別代號,

TID 分別為 100,200,300 與 400,每一筆交易資料中,包含數量不一的項目,分 別為:TID 100 的項目為 {A},{C},{D};TID 200 的項目為 {B},{C},{E};TID 300 的項目為 {A},{B},{C},{E};TID 400 的項目為 {B},{E};最小支持度的 門檻設定為 2,如圖 2.1 所示。

(14)

BE 400

ABCE 300

BCE 200

ACD 100

Items TID

BE 400

ABCE 300

BCE 200

ACD 100

Items TID

1 {D}

3 {E}

3 {C}

3 {B}

2 {A}

Support Itemset

1 {D}

3 {E}

3 {C}

3 {B}

2 {A}

Support Itemset

3 {E}

3 {C}

3 {B}

2 {A}

S upport Itemset

3 {E}

3 {C}

3 {B}

2 {A}

S upport Itemset

{B C}

{B E}

{C E}

{A E}

{A C}

{A B}

Itemset

{B C}

{B E}

{C E}

{A E}

{A C}

{A B}

Itemset

3 {B E}

2 {B C}

2 {C E}

1 {A E}

2 {A C}

1 {A B}

Support Itemset

3 {B E}

2 {B C}

2 {C E}

1 {A E}

2 {A C}

1 {A B}

Support Itemset

2 {C E}

3 {B E}

2 {B C}

2 {A C}

Support Itemset

2 {C E}

3 {B E}

2 {B C}

2 {A C}

Support Itemset

{B C E}

Itemset {B C E}

Itemset

2 {B C E}

Support Itemset

2 {B C E}

Support Itemset

2 {B C E}

Support Itemset

2 {B C E}

Support Itemset

DB C1 L1

C2 L2

C3 L3

Scan DB

Scan DB

Scan DB

Minimum support s = 2

圖 2.1 Apriori 演算法步驟示意圖 ( Agrawal & Shafer, 1996 )

首先,掃描交易資料庫 DB 得到候選項目集 C1,並且計算各個候選項目的次 數,分別是:{A} 2 次、{B} 3 次、{C} 3 次、{D} 1 次、{E} 3 次。接著將次數小 於最小支持度門檻的項目刪去,於是得到頻繁項目集 L1,分別是:{A},{B},{C},

{E};然後將 L1 與自己做結合,也就是 L1 *

L

1,可以得到候選項目集 C2,並且計算 各個候選項目的次數,分別是:{A, B} 1 次、{A, C} 2 次、{A, E} 1 次、{B, C} 2 次、

{B, E} 3 次、{C, E} 2 次;再次將次數小於最小支持度門檻的項目刪去,於是得到頻 繁項目集 L2,分別是:{A, C},{B, C},{B, E},{C, E};再次將 L2 與自己做結合,

也就是 L2 *

L

2,可以得到候選項目集 C3,並且計算各個候選項目的次數,分別是:

{B, C, E} 2 次;因為 {B, C, E} 也是頻繁項目集 L3,且因為 L3 只有一個項目集,

無法產生其他的候選項目集,所以到此即停止。

由以上範例得知,Apriori 的方法其實相當直覺。藉由不斷地掃描、篩選、結合

(15)

的過程求得頻繁項目集。然而,Apriori 的方法在效能上會碰到以下瓶頸:(1) 當 L1 的 項目很多時,找出 L1 *

L

1 的動作會花費許多時間。(2) 重複掃描資料庫也是一個相當 耗費時間的動作。有鑑於此,後來學者提出的方法,大多針對這兩個效能上的瓶頸作 改善。

2.3 直接雜湊修剪法 直接雜湊修剪法 直接雜湊修剪法 (Direct Hashing and Pruning, DHP) 直接雜湊修剪法

Direct Hashing and Pruning ( DHP ) 演算法是在 1997 年提出 ( Park et al, 1997 ),主要目的在改善 Aprioir 在產生頻繁項目集時的效能。特別是在產生 2-項目 集 ( 2-itemset ) 的候選項目集時,DHP 有效地使用雜湊 ( hashing ) 與修剪 ( pruning ) 技術來改善其效能。

DHP 演算法主要有三個特點:

1. 有效率地產生頻繁項目集。

2. 有效率地減少交易資料庫的大小。

3. 減少掃描資料庫的次數。

DHP 使用雜湊 ( hash ) 的技術有效地過濾非頻繁項目集,以快速產生候選項目 集 ( candidate itemset ) 。並且根據候選項目集修剪交易資料庫,因此下一個循環只 要掃瞄修剪之後的資料庫,可進而縮短掃描資料庫所大量耗費的時間。 DHP 演算 法,主要分成三個部份: 1. 找出頻繁的 1-項目集 ( 1-itemset ) 並且建立 2-項目集 ( 2-itemset ) 的雜湊表 ( hash table )。2. 利用(k–1)-項目集產生的雜湊表 Hk-1,產生 k- 項目集 ( k-itemset ) 的候選項目集 Ck,並且根據設定的最小支持度 s ( minimum support ),從候選項目集中得到頻繁項目集 Lk,減少資料庫大小以便下一個循環使 用,並且建立( k+1 )-項目集的雜湊表 Hk+1; 3. 第三部份除了沒有使用雜湊表之外,

(16)

其餘都與第二部分一樣。DHP 在一開始的循環中,有較好的效能,但是到了後面的 循環,因為候選項目集的個數將變得較少,此時若使用雜湊的方式,將比直接用

Apriori 的方法產生候選項目集要多一些運算。故當雜湊表中有次數的籃子 ( bucket )

數量小於預先設定的門檻值 LARGE 時,DHP 將放棄使用雜湊的方式,而是直接使 用 Apriori 的方法產生候選項目集 (Park et al, 1997)。

DHP 使用與 Apriori 同樣的方法,先掃描交易資料庫 D1,產生1-項目集的候選 項目集 C1,並且計算各個1-項目集的支持度 ( Support ),根據預先設定的最小支持 度的門檻值 ( Minimum Support ) 決定 1-項目集的頻繁項目集 L1 ( Large Itemset )。接 著根據交易資料,建立雜湊表 ( Hash Table ),先將 C1 各個項目給予一個序號值,此 序號值將在計算雜湊表的位址時使用,接著將交易資料拆解成 2-項目集的格式,例 如:{A C D} 可拆解成 {A C}, {A D}, {C D},以此放入雜湊函數計算出各個項目在 雜湊表的位址,範例中的雜湊函數為: h(x,y) = ((order of x) * 10 + (order of y)) mod 7。

例如: 以 {A C} 代入雜湊函數,即可得到 h(A, C) = ((order of A) * 10 + (order of C)) mod 7 = (10 + 3) mod 7 = 6。{A C} 在雜湊表中的位址即是 6,故將 {A C} 放入雜湊 表的位址 6 的雜湊表元素 ( Entry ) 中,並且將次數加 1。依此類推將得到一個完整 的雜湊表,雜湊表中元素項目集的次數若大於或等於最小支持度的門檻值,則將數量 指標 ( Bit Vector ) 記為 1,代表該位址的項目可能是頻繁項目集的候選項目,請參 見圖 2.2 所示。

(17)

3 1 3 0 2 1

3 1 2 0 3 1 3

3

{A C}

{C D}

{A C}

{A B}

{B E}

{B E}

{B E}

{B C}

{B C}

{A E}

{C E}

{C E}

{A D}

{A C}

{C D}

{A C}

{A B}

{B E}

{B E}

{B E}

{B C}

{B C}

{A E}

{C E}

{C E}

{A D}

h(x,y) = ((order of x)*10 + (order of y)) mod 7

1 0 1 0 1 0

1 0 1 0 1 0 1

1

{A C},{A D},{C D}

{B C},{B E},{C E}

{A B},{A C},{A E}, {B C},{B E},{C E}

{B E}

100 200 300 400

Making a hash table {A C},{A D},{C D}

{B C},{B E},{C E}

{A B},{A C},{A E}, {B C},{B E},{C E}

{B E}

100 200 300 400

Making a hash table

Hash Table

Bit Vector→

6 5 4 3 2 1

0 1 2 3 4 5 6

Hash Address → 0 A C D B C E A B C E B E 100 200 300 400

Items TID

Database D1

A C D B C E A B C E B E 100 200 300 400

Items TID

Database D1

2 3 3 1 3 {A}

{B}

{C}

{D}

{E}

Sup.

Itemset C1

2 3 3 1 3 {A}

{B}

{C}

{D}

{E}

Sup.

Itemset C1

Minimum support, s=2 1 2 3 4 5 Order

1 2 3 4 5 Order

圖 2.2 DHP 演算法的雜湊過程 ( Park et al, 1997 )

DHP 如同 Apriori 相同,需要透過 Lk-1 來產生 Ck,但不同的是,DHP 使用雜 湊表來做過濾 ( Filter ),因此不需要將 Lk-1 *

L

k-1 所有的結果放入 Ck ,而是只放入 通過雜湊表過濾的項目,也就是在雜湊表元素項目集的次數大於或等於最小支持度,

也就是數量指標 ( Bit Vector ) 記為 1 的項目,若雜湊表與雜湊函數配置得當,如此 可以大幅地減少 Ck 的數量,減少掃描資料庫的次數與時間。但是如同先前提過的,

只有在一開始的循環中才有較好的效果,特別是在2-項目集的循環,在較後面的循環 中,建立雜湊表的方式不一定有比較好的效果。因為原本的候選項目集的數目就比較 少,反而直接使用 Apriori 的方式會比較節省時間。得到候選項目集之後,再掃描資 料庫以求得各個項目實際的次數 ( Support 支持度 ),再根據最小支持度決定頻繁項 目集 Lk

DHP 的另一個重要的特點,即是根據每個循環得到的頻繁項目集 Lk,來修剪交 易資料庫 Dk,減少資料庫的大小,以便在下次掃描時減少所需的時間。如範例中,

L

2 = {A C}, {B C}, {B E}, {C E},以此做為依據,來修剪交易資料。TID 100 包含 {A C D} 比較 L2 則 {A C} 因 {A} 與 {C} 各出現 1 次,因為小於最小支持度 2,

(18)

故 TID 100 被排除;TID 200 包含 {B C E} 比較 L2 則 {B C}, {B E}, {C E} 因 {B}、{C} 與 {E} 各出現 2 次,大於或等於最小支持度 2,故 TID 200 保留 {B C E}。依此類推,將所有交易做修剪,最後留下修剪過後的資料庫,留待下一個循環使 用。請參見圖 2.3 所示。之後再重複以上步驟,直到不再有新的頻繁項目集產生為 止。

B C E B C E 200 300

Items TID

Database D3

B C E B C E 200 300

Items TID

Database D3

A C D B C E A B C E B E

Items Database D2

100 200 300 400 TID

A C D B C E A B C E B E

Items Database D2

100 200 300 400 TID

A C 1 1 B C E 2 2 2 A B C E 1 2 3 2 B E 1 1

Discard

Keep {B C E}

Keep {B C E}

Discard 100

200

300

400 A C 1 1 B C E 2 2 2 A B C E 1 2 3 2 B E 1 1

Discard

Keep {B C E}

Keep {B C E}

Discard 100

200

300

400 {A C}

{B C}{B E}{C E}

{A C}{B C}{B E}{C E}

{B E}

Reduce Database {A C}

{B C}

{B E}

{C E}

C2or L2 {A C}

{B C}

{B E}

{C E}

C2or L2

圖 2.3 DHP 演算法的修剪過程 ( Park et al, 1997 )

DHP 的方法有一個缺點,如果雜湊表與雜湊函數的設置不佳,將導致碰撞的機 率過高;太高的碰撞率將造成使用雜湊表過濾候選項目集的效果不好,DHP 將會放 棄使用雜湊表過濾的方式,而是改以 Apriori 的方式產生頻繁項目集,這會使得 DHP 的效能大大地降低。DHP 的另外一個缺點,當交易資料有所更新時,需要重新設置 雜湊表與雜湊函數,以求得更好的過濾候選項目集的效果;這會需要將原本的交易資 料與更新的交易資料一起重新執行所有步驟,才能獲得更新資料加入之後的結果。為 了改善以上缺點,Tseng 等學者 2006 年提出 Multi-Phase Indexing and Pruning ( MPIP ) 的方法 ( Tseng et al, 2006 )。

(19)

2.4 多階索引修剪法 多階索引修剪法 多階索引修剪法 (Multi-Phase Indexing and Pruning, MPIP) 多階索引修剪法

MPIP 提出一個最小完美雜湊函數的方法,取代原本 DHP 的雜湊函數。所謂的 最小完美雜湊函數,是指所有雜湊表的項目不會發生碰撞,且雜湊表的位址不會有所 浪費的雜湊函數。藉由最小完美雜湊函數,可以使雜湊表的準確度提升;且利用雜湊 表的每一個元素 ( Entry ) 來計算其所代表的項目集之支持度,可避免重複掃描資料 庫以計算支持度。

首先,MPIP 使用與 Apriori 同樣的方法,先掃描交易資料庫 D1產 1-項目集的 候選項目集 C1,並且計算各個1-項目集的支持度 (Support),根據預先設定的最小支 持 度 的 門 檻 值 ( Minimum Support ) 決 定 1- 項 目 集 的 頻 繁 項 目 集 L1 ( Large Itemset )。接著根據交易資料建立雜湊表 ( Hash Table ),先將 C1 各個項目給予一個 序號值,此序號值將在計算雜湊表的位址時使用。如圖 2.4 中,{A} 的序號值 ( order ) 為 1,{B} 的序號值為 2,依此類推。以 P(A) 表示項目 {A} 的序號值,故 P(A)_

= 1, P(B) = 2,…依此類推。接著將交易資料拆解成 2-項目集的格式。例如:{A C D} 可 拆解成 {A C}, {A D}, {C D},以此放入雜湊函數計算各個項目在雜湊表的位址。MPIP 使用最小完美雜湊函數,計算各個項目在雜湊表的位址。如果一個雜湊函數,對於所 有項目可以給予唯一的位址,不會發生碰撞,稱做完美雜湊函數。若一個完美雜湊函 數,對於所有項目可以分配相同長度的空間放置,不會有空間浪費,稱做最小完美雜 湊 函 數 ( Chang, 1984 ) 。 MPIP 所 使 用 的 最 小 完 美 雜 湊 函 數 稱 為 Multi-Phase Indexing,其雜湊位址是以查表的方式計算而得的,且其項目集與雜湊位址的對應是 依循列順序 ( row major ) 排序。以 3-項目集的項目 {A D E} 為例,其雜湊位址計算 表如表 2.1 所示。P(A) 表示項目 A 的序號值,在此範例中,P(A) = 1, g 表示群 組總數,其群組名稱 ( Group Name ) 為 A D,群組編號 r ( Group Number ) 為 3,

(20)

其群組間偏移量 ( Inter-Group-Offset ) 為 (g - 1) - P(B) + (g - 1) - P(C) = (6 - 1) - 2 + (6 - 1) - 3 = 5,其群組內偏移量 ( Intra-Group-Offset ) 為 P(E) - P(D) = 5 - 4 = 1,其最終 計算出雜湊位址 ( Hash Address ) 為群組間偏移量加上群組內偏移量的結果,即 5 + 1 = 6。以此最小完美雜湊函數,可以得到各個項目在雜湊表中的唯一位址。重複上述 動作將所有項目集建立出表 2.1,之後以查表的方式來取得雜湊位址。依此類推,將 所有項目集放入雜湊表並且計算各項目的次數,也就是各項目的支持度;同時若該項 目的次數,大於或等於最小支持度,則將數量指標 ( Bit Vector ) 記為 1,表示該雜 湊表元素的項目是頻繁項目 ( Large Item )。接著,再挑選出雜湊表中數量指標為 1 的 項目,產生頻繁項目集 Lk 。如圖 2.4 所示。

1

3 2 0

0 2 1 1 2

1 2 1 1 2 0 3 1 2 0

1 {A B}

{A C}

{A C} {A D} {D E}

{C E}

{C E}

{C D}

{B E}

{B E}

{B E}

{B D}

{B C}

{B C}

{A E}

{A B}

{A C}

{A C} {A D} {D E}

{C E}

{C E}

{C D}

{B E}

{B E}

{B E}

{B D}

{B C}

{B C}

{A E}

1 0 1 0

0 1 0 0 1

0 1 0 0 1 0 1 0 1 0

0

{A C},{A D},{C D}

{B C},{B E},{C E}

{A B},{A C},{A E}, {B C},{B E},{C E}

{B E}

100 200 300 400

Making a hash table {A C},{A D},{C D}

{B C},{B E},{C E}

{A B},{A C},{A E}, {B C},{B E},{C E}

{B E}

100 200 300 400

Making a hash table

Hash Table

Bit Vector→

6 7 8 9

5 4 3 2 1

0 1 2 3 4 5 6 7 8 9

Hash Address → 0

A C D B C E A B C E B E 100 200 300 400

Items TID

Database D1

A C D B C E A B C E B E 100 200 300 400

Items TID

Database D1

2 3 3 1 3 {A}

{B}

{C}

{D}

{E}

Sup.

Itemset C1

2 3 3 1 3 {A}

{B}

{C}

{D}

{E}

Sup.

Itemset C1

Minimum support, s=2 1 2 3 4 5 Order

1 2 3 4 5 Order

圖 2.4 MPIP 演算法的雜湊過程 ( Tseng et al, 2006 )

(21)

表 2.1 MPIP 演算法的雜湊函數範例 ( Tseng et al, 2006 ) 3-itemset Group

Name Group

Number γ Inter-group-offset Intra-group-offset Hash address ABC ABD

ABE

AB 1 0 P(C)-P(B)=1

P(D)-P(B)=2 P(E)-P(B)=3

1 2 3 ACD ACE AC 2 (6-1)-P(B)=3 P(D)-P(C)=1

P(E)-P(C)=2 4 5 ADE AD 3 (6-1)-P(B)+5-P(C)=

5 P(E)-P(D)=1 6 BCD BCE BC 4 5-P(B)+5-P(C)+5-P

(D)=6 P(D)-P(C)=1

P(3)-P(C)=2 7 BDE BD 5 5-P(B)+5-P(C)+5-P 8

(D)+5-P(C)=8 P(E)-P(D)=1 9 CDE CD 6 5-P(B)+5-P(C)+5-P

(D)+5-P(C)+5-P(D)

=9

P(E)-P(D)=1 10

同時 MPIP 也使用修剪 ( Pruning ) 的概念,根據前一個步驟產生的頻繁項目 集 Lk 修剪交易資料庫 Dk,以減少下次掃描資料庫所需的時間。修剪的目的主要是 為了減少產生不必要的候選項目集以增加效率,SIT ( Sorting-Indexing-Trimming ) 演 算法也使用類似的概念 ( Chiou & Tseng, 2007 )。以圖 2.4 中的 L2 = {{A C}, {B C}, {B E}, {C E}}為例來看如何修剪交易資料:TID 100 包含 {A C D}, 與 L2中的{A C}做 比較, A 與 C 各出現 1 次,因為小於最小支持度 2,故 TID 100 被排除;TID 200 包含 {B C E},比較 L2,{B C}, {B E}, {C E} 因 B、C 與 E 各出現 2 次, 大於 或等於最小支持度 2,故 TID 200 保留 {B C E}。以此方法,將所有交易做修剪,

最後留下修剪過後的資料庫,留待下一個循環使用。重複以上步驟,直到不再有新的 頻繁項目集產生為止。

MPIP 的特色在於改善了 DHP 在雜湊時碰撞的問題。DHP 如果雜湊函數與雜湊 表因設置不良發生碰撞機率過高,將導致雜湊表的過濾效果不佳;DHP 便會放棄使 用雜湊表來產生頻繁項目集,而是改以類似 Apriori 的方式來產生頻繁項目集。這樣 得到的執行效率將接近傳統的 Apriori。MPIP 使用最小完美雜湊函數,故每個項目

(22)

可以得到一個唯一的位址,且該雜湊表元素 ( Entry ) 的項目集次數即是該項目的支 持度,不需要掃描資料庫即可得到支持度;且數量指標 ( Bit Vector ) 不再只是用來 過濾候選項目集,而可以直接指出哪些項目是頻繁項目。故只要建立出雜湊表,就可 以得到頻繁項目集。MPIP 只要稍加修改也可以處理頻繁更新的資料,只要將雜湊表 留存,未來若交易資料有所更新,只需掃描更新的資料,將結果與先前留存雜湊表合 併,即可得到最更新的結果,而不需要重新掃描全部的資料。但是若項目有所新增,

因為會影響雜湊表的位址,所以可能導致需要重新掃描全部的交易資料庫,如此將花 費更多時間與運算成本。

2.5 快速更新法 快速更新法 快速更新法 (Fast UPdate, FUP) 快速更新法

關連法則探勘在交易資料有更新時,由於資料筆數增加,將影響最小支持度篩選 的門檻,以致於頻繁項目集將有所變動。是故傳統關連法則探勘的方法當資料增加 時,需要掃描原始資料加上更新資料的完整資料庫,才能得到較正確的資料探勘結 果。但前面有提到,掃描資料庫所耗費的時間是關連法則探勘的效能瓶頸之ㄧ。有鑑 於此,有學者提出漸進式關連法則探勘 ( Incremental Association Rules Mining ) 。目 的在於當資料庫更新之後,可減少掃描資料庫的次數,以期得到更好的效率。

在漸進式關連法則探勘演算法中,目前最多學術論文參考的,可以算是 FUP 演 算法。FUP 演算法 ( Fast UPdate ) 是 1996 年提出的 ( Cheung et al, 1996 ),是

Apriori-like 的方法,但是加入了漸進式探勘 ( Incremental Mining ) 的概念。目的在

於當資料有更新時,不需要每次重新掃描全部的資料庫,亦即減少掃描資料庫的次 數,如此便能加快執行的效率。

當資料庫有更新時,對所有項目集來說,可能有以下四種變化:

(23)

1. 原本非頻繁的項目集,因為更新的資料而變成了頻繁項目集 ( Small → Large )。

2. 原本是頻繁項目集,因為更新的資料而變成了非頻繁項目集 ( Large → Small )。

3. 原本非頻繁項目集,即使更新資料之後仍然是非頻繁項目集 ( Small → Small )。

4. 原本頻繁項目集,即使更新資料之後仍然是頻繁項目集 ( Large → Large )。

以上描述的四種變化,第 3 種與第 4 種,因為不會影響結果,所以不納入考慮,

但針對第 1 種與第 2 種,FUP 的方法有因應方案,以下將詳細說明。

FUP 演算法的架構與 Apriori、DHP 類似,透過重複掃描資料庫,與最小支持 度門檻值的限制,得到最大頻繁項目集;差別僅在於,針對更新交易資料的處理。FUP 演算法所使用的符號定義如同本章一開始所述,另外定義其特有符號如下:令 DB 為 原始交易資料庫,db 為新增交易資料庫,D 為 DB 的交易資料數量,d 為 db 的交 易資料數量,X 的支持度記為 X.support,X 在 db 的支持度記為 X.supportd,X 在

DB 的支持度記為 X.support

D,X 在 DB ∪ db 的支持度則記為 X.supportUD,同時

X.support

UD =

X.support

D +

X.support

d,DB ∪ db 為原始交易資料庫 DB 與新增交易資 料庫 db 的聯集,若 X.support ≥ s * ( D + d ),則 X 是為頻繁項目,L 為 DB 的頻 繁項目集,L’ 則為 DB ∪ db 的頻繁項目集,第 1 個循環在 DB ∪ db 的頻繁項目集 則記為 L’1,而第 k 個循環在 DB ∪ db 的頻繁項目集則記為 L’k,losers 表示經過 演算法定理所淘汰的項目集,winners 表示經過演算法定理篩選之後,勝出的頻繁項 目集,演算法的定理 ( Lemma ) 將於稍後說明;其演算法流程與步驟描述如下,以 下步驟的示意圖請參照圖 2.5 所示:

(24)

1. 掃描新增交易資料庫 db,假如 X ∈ L,則判斷 X.supportUD

≥ s * ( D + d ),

若為真,則 X 為 winners,則 X ∈ L’,若為假,則 X 為 losers,X 則被淘 汰。

2. 掃描新增交易資料庫 db,假如 X ∉ L,則判斷 X.supportd

≥ s * d,若為真,

則 X ∈ C1,若為假,則 X 為 losers,X 則被淘汰。

3. 若 X ∈ C1 則進入下一步驟,掃描原始交易資料庫 DB,求得 X.supportD,判 斷 X.supportUD

≥ s * ( D + d ),若為真,則 X 為 winners,則 X ∈ L’,若為

假,則 X 為 losers,X 則被淘汰。

4. 若 X 在第 k – 1 循環為 losers,則 X 將不會在第 k 循環成為頻繁項目集,

因此可以直接從 db 將 X 修剪掉,以減少 db 的大小,如此可加快之後掃瞄 資料庫的速度,參見 FUP 演算法的定理 3。

5. 重複上述步驟,掃描所有項目集,直到不再有新的頻繁項目集產生為止。

db

X.supportd

>= sd ?

X.supportUD

>= s(D+d) ?

L’1: large 1-itemsets

DB

X.supportUD>=

X(D+d) ? scan

db

losers

losers

winners winners

candidate set C1 scan DB Find X.supportD

For all X C

1

Find X.supportD

For all X C

1

圖 2.5 FUP 演算法流程示意圖 ( Cheung et al, 1996 ) 關於 FUP 演算法的定理,列式如下:

(25)

1-項目集 X 是輸家 ( loser ) 將被從頻繁 1-項目集 L1 中淘汰。

定理 2:假如 X.supportd

≥ s * d,則在被更新的資料庫 ( DB ∪ db ) 中 1-項目集 X 是贏家 ( winner ) 將被加入頻繁 1-項目集 L

1 中。

定理 3:假如 {X1,..Xk-1} 在第 ( k – 1 ) 回合是輸家,則 k-頻繁項目集 Lk 在第 k 回合不會包含 {X1,..Xk-1}。

定理 4:假如 {X1,..Xk}.supportUD

≥ s * ( D + d ),則在被更新的資料庫 ( DB ∪ db )

中 k-項目集 {X1,..Xk} 是輸家 ( loser ) 將被從頻繁 k-項目集 Lk 中淘 汰。

定理 5:假如{X1,..Xk}.supportd

≥ s * d,則在被更新資料庫 ( DB ∪ db ) 中 k-項

目集 {X1,..Xk} 是贏家 ( winner ) 將被加入頻繁 k-項目集 Lk 中。

FUP 演算法之於漸進式關連法則探勘的地位,如同 Apriori 演算法之於關連法 則探勘的地位。同樣是最早提出,且有許多學術論文參考引用,只是 FUP 演算法仍 然是建構於 Apriori 的基礎上。

DHP、MPIP 與 FUP 都無法妥善地處理,更新的交易資料中包含新的項目;在 現實的狀況中,商品項目可能隨時增加。DHP 處理更新資料,需要重新掃描原本的 資料以及掃描更新的資料;若更新資料中含有新的項目時,需要重新設置雜湊表與雜 湊函數,否則可能造成碰撞機率過高的問題。MPIP 雖然可以處理更新資料,但是若 更新的資料中含有新的項目時,則需要重建雜湊表,才可容納新的項目。FUP 若新 增加項目為頻繁項目時,需要回去掃描原始資料庫,這樣將會額外耗費一些時間及運 算成本。

針對以上提到的幾個問題,我們試著提出一個新的方法,除了保有 DHP 與 MPIP 的特色之外,也改善處理更新資料中包含新的項目,不需要重建雜湊表,也不

(26)

需重新設置雜湊函數;針對更新資料,也不需重新掃描原本的資料,只需掃描更新資 料即可;這些將在第 3 章有詳細的描述。

(27)

第 第

第 3 章 章 章 章 漸進式最小完美雜湊修剪法 漸進式最小完美雜湊修剪法 漸進式最小完美雜湊修剪法 漸進式最小完美雜湊修剪法

綜觀前一章節中所提到的幾個著名的關連法則探勘演算法,其中 MPIP 因使用 了最小完美雜湊函數,故可得到較佳的執行效能。然而其方法中的雜湊位址無法直接 運用一個雜湊函數計算得到,必須藉由查表方式才能找出,因而在執行效率上應該還 有進一步加強的空間。此外,MPIP 的雜湊空間較無彈性,當交易資料增加時,所有 交易的雜湊位址必須重新計算,因此應用於漸進式關連法則探勘時效能不彰。有鑑於 此,我們提出一個使用最小完美雜湊函數之漸進式關連法則探勘演算法 (Incremental Minimum Perfect Hashing and Pruning, IMPHP),此方法不僅可使用最小完美雜湊函數 來取得雜湊位址,還可以同時支援新增加交易資料,與新增加項目兩種漸進式關連法 則探勘的應用。

本章節中,將詳細針對本論文所提出的方法做說明,主要分成三個部份依序說明 之:3.1 節先介紹本論文所提出的最小完美雜湊函數,說明其公式以及運算步驟;3.2 節說明 IMPHP 演算法以及其虛擬程式碼;3.3 節舉一個簡單的實例說明 IMPHP 產 生最大頻繁序列的過程。

3.1 最小完美雜湊函數 最小完美雜湊函數 最小完美雜湊函數 最小完美雜湊函數

為了改善 MPIP 使用的雜湊函數兩項美中不足的地方:1. 使用查表的方式來取 得雜湊表的位址,而非單純使用公式直接運算出雜湊位址;2. 在資料更新的狀況下,

新增加的資料中若含有新的項目時,原本的雜湊表的位址需要重新計算,才能納入新 的項目。這會導致必須重新掃描交易資料,才能得到更新的結果。針對以上這兩點,

我們試圖找出一個最小完美雜湊函數,希望能克服這些問題。於是我們從“二維陣列 轉換成一維陣列”這樣的問題開始著手,接下來的內容將詳細說明。

(28)

本章會使用到的符號,定義如同 2.1 節所述。其中將項目集合定義為 I = {i1, i2,

i

3,…, ik}主要的目的是,在我們所提出的最小完美雜湊函數中,可以用項目的編號來 計算項目集的雜湊位址。然而為了方便讀者理解本論文所提出的方法,在本文中舉例 說明時,將會按慣例以 {A, B, C,…} 來代表 { i1, i2, i3,…}。

關連法則探勘的第一個步驟會先找出次數相對較高的項目集 ( itemset ),稱作

“頻繁項目集”( Large Itemsets )。而頻繁項目集的產生方式,則是先產生包含一個項 目的候選項目集稱為 1-項目集,再利用 1-項目集中的頻繁項目做組合來產生 2-項目 集。假設1-項目集的項目有 {A}, {B}, {C}, {D}, {E}, {F} ,如果 A, B, C, D, E, F 都 是頻繁項目,則2-項目集的組合就有 {A, B}, {A, C}, {B, C}, {A, D}, {B, D}, {C, D}, {A, E}, {B, E}, {C, E}, {D, E}, {A, F}, {B, F}, {C, F}, {D, F}, {E, F},總共 15 個項目 集。將所有的2-項目集以二維矩陣來表示,可以得到表 3.1。

表 3.1 排列在二維上三角矩陣的 2 項目集 - 循欄順序(Column-major)

FF FE

FD FC

FB FA

F

EF EE

ED EC

EB EA

E

DF DE

DD DC

DB DA

D

CF CE

CD CC

CB CA

C

BF BE

BD BC

BB BA

B

AF AE

AD AC

AB AA

A

F E

D C

B A

1 2 4 7 11

3 5 8 12

6 9 13

10 14

15

FF FE

FD FC

FB FA

F

EF EE

ED EC

EB EA

E

DF DE

DD DC

DB DA

D

CF CE

CD CC

CB CA

C

BF BE

BD BC

BB BA

B

AF AE

AD AC

AB AA

A

F E

D C

B A

FF FE

FD FC

FB FA

F

EF EE

ED EC

EB EA

E

DF DE

DD DC

DB DA

D

CF CE

CD CC

CB CA

C

BF BE

BD BC

BB BA

B

AF AE

AD AC

AB AA

A

F E

D C

B A

1 2 4 7 11

3 5 8 12

6 9 13

10 14

15

由於集合中的元素無順序性,因此表3.1 中只需要考慮上三角矩陣的部分,也就 是白色格子標示的部分。在本方法中,需要一個最小完美雜湊函數,可以在不發生碰

(29)

撞的前提下,將候選項目集的全部項目放到雜湊表中。因此我們可以想像每一個 2- 項目集的項目,在雜湊表中都有一個獨一無二的位址;而且這個位址是經過公式計算 而來的,並且必須與項目中的元素有關連性的。在此例中假設項目 {A} 的位址編號 表示為 P(A),則 P(A) = 1,P(B) = 2,則 P(C) = 3,P(D) = 4…依此類推;而 2-項目 集的各個項目的編號,若以循欄順序 ( Column-major ) 排列,則 P(A, B) = 1,P(A, C)

= 2,P(B, C) = 3,P(A, D) = 4,P(B, D) = 5,P(C, D) = 6…依此類推。

表3.1 是採用循欄順序將項目集編號,若是採用循列順序(Row-major) 將項目集 編號,則編號後的結果如表3.2 所示。

表 3.2 排列在二維上三角矩陣的 2-項目集 – 循列順序 (Row-major)

FF FE

FD FC

FB FA

F

EF EE

ED EC

EB EA

E

DF DE

DD DC

DB DA

D

CF CE

CD CC

CB CA

C

BF BE

BD BC

BB BA

B

AF AE

AD AC

AB AA

A

F E

D C

B A

1 2 3 4 5

6 7 8 9

10 11 12

13 14

15

FF FE

FD FC

FB FA

F

EF EE

ED EC

EB EA

E

DF DE

DD DC

DB DA

D

CF CE

CD CC

CB CA

C

BF BE

BD BC

BB BA

B

AF AE

AD AC

AB AA

A

F E

D C

B A

FF FE

FD FC

FB FA

F

EF EE

ED EC

EB EA

E

DF DE

DD DC

DB DA

D

CF CE

CD CC

CB CA

C

BF BE

BD BC

BB BA

B

AF AE

AD AC

AB AA

A

F E

D C

B A

1 2 3 4 5

6 7 8 9

10 11 12

13 14

15

觀察表 3.1 及表 3.2,我們發現使用循欄順序當有新增項目時,其新增的項目集 編號不會從中間插入,而影響原本排列的順序;反之新增的項目會從原本的最後位址 開始繼續往下增加,不會影響原本的排列順序。從這一點觀察發現:雜湊位址採用循 欄順序的方式較有利於漸進式的關連法則探勘。而在後續的推導過程中我們也同時發 現,使用循欄順序所推導出的最小完美雜湊函數公式較為簡單。基於上述兩點,我們

(30)

決定選擇循欄順序的方式來排列項目集的雜湊位址。

接下來,我們觀察不同項目數所產生的2-項目集其循欄順序的排列順序是否有規 則性的變化,結果如圖 3.1 所示。當 n = 3 時,其中的 {A, B} 項目集的位址,與 n

= 2 當中的 {A, B} 項目集的位址相同;當 n = 4 時,其中的 {A, B}, {A, C}, {B, C}

項目集的位址,與 n = 3 當中的{A, B}, {A, C}, {B, C} 項目集的位址相同;依此類推 可以得知項目總數 n 的項目集位址,可以從項目總數 n – 1 的項目集位址得到,而

n – 1 的項目集位址,可以從 n – 2 的項目集位址得到,依此類推最後可以得到 n = 2

時,只有一個項目集,其位址是 1。

n=2

AB →1

n=3

AB →1 AC →2 BC →3

n=4

AB →1 AC →2 BC →3 AD →4 BD →5 CD →6 n=4

AB →1 AC →2 BC →3 AD →4 BD →5 CD →6

n=5

AB →1 AC →2 BC →3 AD →4 BD →5 CD →6 AE →7 BE →8 CE →9 DE →10

n=6

AB →1 AC →2 BC →3 AD →4 BD →5 CD →6 AE →7 BE →8 CE →9 DE →10 AF →11 BF →12 CF →13 DF →14 EF →15

圖 3.1 不同項目數在二維上三角矩陣之循欄順序

接著觀察項目數為 n 相較於項目數為 n-1 多出的項目集,可以發現其第二個項目 都是相同的,而第一個項目則是依序排列。以 n=4 為例,其比 n=3 時多出{A, D}、{B, D}、{C, D}等三個項目集,剛好是依照第一個項目的編號順序由小到大排列。而當 項目數為 n 時,其2-項目集的總數是

C

2n

(31)

為了方便列出公式以便推導出本論文所需要的最小完美雜湊函數,定義符號如 下:令{ ij1,

i

j1,…, ijk} 代表一個 k-項目集,其中 k 為一任意正整數, j1, j2,…, jk 為項 目之編號,且 j1 < j2 < j3 <… < jk 。令

F

n(

j

1,

j

2,...,

j

k) 為 k-項目集{ ij1,

i

j1,…, ijk}的雜湊 位址,其中 n 為項目的總個數;例如:當 j1 = 1, j2 = 2 時,Fn(j1,

j

2) = Fn(1, 2) 表示項 目集 { i1, i2} 的雜湊位址,當 j1 = 1, j2 = 3, j3 = 5 時,Fn(j1,

j

2

j

3) = Fn(1, 3, 5) 表示為項 目集 { i1, i3, i5} 的雜湊位址。

根據觀察 2-項目集的循欄順序排列順序所得到的規則性,我們可以列出下列公 式:

 

 

= +

<

=

=

=

) 3 (

) 2 (

) 1 ( )

1 ( 2

) , (

2 , 1 1

) , (

2 1

1 2

2 2

1 1

2 1 2

1

2

A

A A

n j for j

C

n j for

j j F

j j for j

j F

j n n

當 j2 = n,代入公式 (A3) 得

F

n(

j

1,

j

2)=

C

2n1 +

j

1

j2 = n – 1,代入公式 (A2) 得

F

n(

j

1,

j

2)=

F

n1(

j

1,(

n

−1)),再代入公式 (A3) 得

1 2 2 1 1 ) 1 ( 2 1

1 2

1, ) ( ,( 1))

(

j j F j n C j C j F

n = n − = n + = n +

當 j2 = n – 2,代入公式 (A2) 兩次得

F

n(

j

1,

j

2)=

F

n1(

j

1,(

n

−2))=

F

n2(

j

1,(

n

−2)),再 代入公式 (A3) 得

F

n(

j

1,

j

2)=

F

n2(

j

1,(

n

−2))=

C

2(n2)1+

j

1 =

C

2n3 +

j

1

由上述推導過程發現,當 k=2 時,若是 j2 為小於 n 且大於 2 的任意正整數時,

反覆代入公式 (A2) 之後,最終都會符合代入公式 (A3) 的條件,故可以忽略公式 (A2),因此得到 2-項目集的最小完美雜湊函數公式如下:

 

 = =

=

+

otherwise

j j for

j j C

j

F

n

1

j

1 , 2

) ,

(

1 2

1 1 2 2

1 2 (B)

(32)

我們接著觀察不同項目數所產生3-項目集,觀察其循欄順序的排列順序是否有規 則性的變化。結果如圖 3.2 所示。由圖 3.2 可以看出與三維上三角矩陣存在相同的 規律性,也就是同一個項目集在項目數為 n - 1 和 n 時的循欄順序是相同的。例如:

n = 6 時項目集 {A B E} 所對應的位址,與 n = 5 時項目集 {A B E} 所對應的位址

同樣都是 5。根據此規律性可得知,項目總數 n 的項目集位址,可以從項目總數 n – 1 的項目集位址得到,而 n – 1 的項目集位址,可以從 n – 2 的項目集位址得到。最 後可以得到 n = 3 時,只有一個項目集其位址是 1。

n=3 ABC →1

n=4 ABC →1 ABD →2 ACD →3 BCD →4

n=5 ABC →1 ABD →2 ACD →3 BCD →4 ABE →5 ACE →6 ADE →7 BCE →8 BDE →9 CDE →10

n=6 ABC →1 ABD →2 ACD →3 BCD →4 ABE →5 ACE →6 ADE →7 BCE →8 BDE →9 CDE →10 ABF →11 ACF →12 ADF →13 AEF →14 BCF →15 BDF →16 BEF →17 CDF →18 CEF →19 DEF →20

圖 3.2 不同項目數在三維上三角矩陣之循欄順序

接著觀察項目數為 n 比項目數為 n-1 多出的項目集,可以發現其第三個項目都 是相同的,且多出 3-項目集是依照第 1 個項目和第 2 個項目所組成 2-項目集的循 欄順序排列。以 n = 5 為例,其比 n = 4 時多出{A, B, E}、{A, C, E}、{A, D, E}、

參考文獻

相關文件

動態時間扭曲:又稱為 DTW(Dynamic Time Wraping, DTW) ,主要是用來比

利潤指數 (PI) = 投資現值 (PV) / 投資成本 (IC)。..

sort 函式可將一組資料排序成遞增 (ascending order) 或 遞減順序 (descending order)。. 如果這組資料是一個行或列向量,整組資料會進行排序。

參加者有權要求查閱和改正有關的個人資料,包括在支付費用 後索取表格內個人資料部分的副本。如欲改正或查閱本表格內 所填報的個人資料,可向教育局提出申請(地址:香港灣仔皇

大學教育資助委員會資助大學及絕大部分專上院 校接納應用學習中文(非華語學生適用)的「達 標」

Grant, ed., The Process of Japanese Foreign Policy (London: Royal Institute of International Affairs, 1997), p.119.

有關資料可參閱教城

發行單位: 中華電子佛典協會 (CBETA) cbeta@ccbs.ntu.edu.tw 資料底本: