• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
70
0
0

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

全文

(1)

中 華 大 學 碩 士 論 文

題目:應用排序-索引-修剪技術之高效率關聯 式法則演算法之研究

A Sorting–Indexing-Trimming Approach for Mining Association Rules

系 所 別:資訊工程學系碩士班 學號姓名:E09002014 羅仙旺 指導教授:曾秋蓉 博士

中華民國 九十二 年 七 月

(2)
(3)
(4)
(5)

目次

目次...

I

中文摘要...

III

A

BSTRACT

...

IV

誌謝...

V

圖目錄...

VI

表目錄...

VIII

第 1 章 概論 ...1

1.1 研究背景...1

1.2 研究動機...3

1.3 研究目的...4

第 2 章 相關研究 ...6

2.1 資料探勘的簡介...6

2.2 關聯性法則...9

2.3A

PRIORI

演算法...12

2.4DHP 演算法...16

2.5MPHP 演算法...19

第 3 章 SIT(SORTING INDEXING TRIMMING)演算法...26

3.1 排序(S

ORTING

) ...26

3.1.1

交易物項的排序對於關聯式演算法的益處

...26

3.1.2

交易物項依出現頻率的方式排序對於演算法的益處

...28

3.1.3 SIT

排序的方法

...29

(6)

3.2 索引(I

NDEXING

)...30

3.2.1 Apriori

的索引改良法

...31

3.2.2 MPHP

的索引改良方法

...36

3.3 修剪(T

RIMMING

) ...39

3.4SIT 演算法...42

第 4 章 實驗結果與分析 ...46

4.1 實驗設備及資料說明...46

4.2 實驗設計...47

4.3 實驗數據與效能評估...49

4.3.1 SIT

演算法與

Apriori

MPHP

演算法的效能比較

...49

4.3.2 SIT

MPHP

演算法在不同的交易量的效能比較

...50

4.3.3 SIT

MPHP

演算法在不同的交易長度的效能比較

...52

第 5 章 結論與未來方向 ...53

5.1 結論...53

5.2 未來方向...54

5.2.1

資料更新未來可改進的方向

...54

5.2.2

交易長度較長未來可改進的方向

...54

(7)

中文摘要

隨者資訊科技的進步,企業對電腦的需求越來越高,然而資料的電子化,導致 資料的累積呈爆炸性的成長,企業有強烈的需求要將這龐大的資料轉換成真正 有用的決策資訊,促成資料探勘的技術日益蓬勃的發展,其中關聯式法規則即 便是被廣泛應用的探勘技術之一。

目前關聯式法則的探勘大都是以Apriori 演算法為基礎,雖然簡單易於明瞭,節 省記憶體空間,但執行效率不好,尤其在第2 階層含有大量的候選物項集合,

所以大部分的演算法都是著重於如何刪除不可能成為高頻物項集合的候選物項 集合,所能刪除的物項集合數量並不多,另外在以雜湊函數為基礎的關聯式法 則,改良自DHP 演算法的 MPHP 演算法乃是使用最理想的完美雜湊函數,其函 數運算簡單,且保證不會碰撞,所以無需候選物項集合,但是此種演算法對記 憶體的需求呈指數型態成長,因此只適用於處理第2 階層的高頻物項集合。

針對以上所描述的缺失,本論文提出以排序-索引-修剪

(Sorting-Indexing-Trimming,簡稱 SIT)的方法來改善關聯式法則演算法的效能,

SIT 演算法於階層 2 使用排序-索引-修剪加以改良的 MPHP 的演算法,於階層 2 以後則使用以排序-索引加以改良的 Apriori 演算法,經實驗分析發現 SIT 演算法 的效能較傳統的Apriori 演算法速度能有效的提昇效益,並且也比 MPHP 演算法 效率要較好,特別於階層3 以後仍有大量的候選物項集合。

關鍵字:資料探勘(Data mining)、關聯式法則(Association rule)、Apriori 演算法、

MPHP 演算法

(8)

Abstract

With the fast advent of network and information technologies, the time needed

for enterprises to collect data is shortened significantly. In the mean while, the large amount of data also become a burden for enterprises to interprete them. In order to assist enterprises to make decisions efficiently, researchers have tried to propose methodologies to extract useful information from a large amount of data, and data mining is one of the most popular approaches to cope with the problem, especially the association rule approach.

So far, most data mining methods for finding association rule originated from the “Apriori” algorithm. However, as Apriori algorithm is not efficient, especially when the number of data items increases, researchers tried to propose methods to eliminate impossible frequent item sets. In addition, some hash function-based algorithms were proposed to improve the performance of Apriori algorithm. For example, DHP algorithm employs hash function to filter the impossible candidate item sets. MPHP, a revised version of DHP, employs minimal perfect hashing functions (non-collision hashing functions) to generate frequent item sets directly without the need of generating candidate item sets, and hence the performance can be improved However, the memory space needed for MPHP will increase significantly for finding k-frequent item sets in the later phases for k > 2.

To cope with this problem, this thesis proposes an Sorting-Indexing-Trimming (SIT) algorithm, which employs a revised MPHP to find 1-frequent item sets and

2-frequent item sets, and a revised Apriori algorithm to find k-frequent item sets for k

> 2. From the experimental results, we find that SIT algorithm is much more efficient than Apriori algorithm and MPHP algorithm.

(9)

誌謝

在中華大學這兩年研究所辛苦而充實的研究,是很多的同事與與同學的幫 助以及家人全力的支持,在此要先致上最深、最誠摯的一聲謝謝!

首先,最要感謝的是我的指導教授-曾秋蓉 老師,老師總是適時的給予我非 常精闢的指導,尤其當研究方向不正確時,老師會很適時的的提醒,讓我少走很 多的冤枉路,論文研究老師給我很大的研究空間,讓我在專業的研究上,或自己 的興趣所在,都能盡情的發揮,讓我體會論文研究雖然過程是痛苦但成果卻是滿 足與甜美的。更要感謝黃國禎 教授、洪宗貝 教授與俞旭昇 教授,對於論文的 諸多指正與建議,使得本篇論文能更趨嚴謹與完整。

要感謝的是我的公司主管家緯的全力支持,讓我能在工作之餘仍有時間完 成學業,也要感謝國倍、逢華、正志、豐裕、玉忠、富芳在工作上適時的減輕我 不少工作的負擔,最後也要感謝我的老婆春芳作我最後一道的精神支柱,也讓我 在家裡享受不少特權。

最後要感謝的還有志祥,盛哥等同學還有很多、很多沒辦法一一打上名字 的人,在這邊,僅以本篇論文,獻給你們全部。

(10)

圖目錄

圖 2.1

資料探勘與知識工程之完整過程與架構...7

圖 2.2

A

PRIORI

找尋高頻物項集合範例(P

ARK

,

ET

.

AL

1995)...14

圖 2.3

DHP 利用雜湊法產生候選物項集合 C2(P

ART

,

ET

.

AL

,1995)...17

圖 2.4

MPHP 的雜湊函數

BUCKET

數量分配方法...20

圖 2.5

MPHP 的雜湊函數找尋高頻物項集合流程圖 ...21

圖 3.1

交易物項未排序與排序的搜尋方式...27

圖 3.2

資料庫依照物項出現的頻率由高至低排序...28

圖 3.3

交易物項依出現頻率的方式排序的搜尋方式...29

圖 3.4

SIT 排序的流程圖...30

圖 3.5

A

PRIORI

演算法找尋高頻物項集合至少須比對的次數範例圖...31

圖 3.6

依各物項的於資料庫出現的頻率由高至低排序...32

圖 3.7

依據SIT 方法排序建立索引編號對映矩陣...34

圖 3.8

使用SIT 的方法,找尋高頻物項集合...35

圖 3.9

MPHP 的 H

ASH TABLE

...37

圖 3.10

MPHP 的雜湊函數分佈圖...38

圖 3.11

MPHP 索引矩陣計算方法 ...39

圖 3.12

物項未經排序之修剪範例...40

圖 3.13

物項經排序之修剪範例...41

圖 3.14

MPHP 使用 SIT 的方法所節省的雜湊函數計算成本...42

圖 4.1 不同支持度的效能比較...49

圖 4.2 不同的交易量掃描與排序資料庫的所需時間...50

圖 4.3 支持度在 0.75%下不同交易量的效能比較...51

圖 4.4 支持度在 0.5%下不同交易量的效能比較...51

(11)

圖 4.5 支持度在 0.25%下不同交易量的效能比較...51 圖 4.6 支持度在 0.5%下不同交易長度的效能比較...52

(12)

表目錄

表 2.1

表關聯式法則範例資料庫...10

表 2.2

A

PRIORI

演算法中所使用的符號代表意義...12

表 2.3

MPHP 雜湊函數在不同的階層所需的成本...24

表 4.1

實驗資料庫的各種參數...47

表 4.2

SIT、MPHP 與 A

PRIORI

演算法於效能比較實驗資料庫的參數設定值...47

表 4.3

SIT 與 MPHP 演算法於不同交易量的實驗資料庫的參數設定...48

表 4.4

SIT 與 MPHP 演算法於不同交易長度的實驗資料庫的參數設定...48

(13)

第1章 概論

隨者資訊科技的進步,企業對電腦的需求越來越高,然而資料的電子化,導致 資料的累積呈爆炸性的成長,企業有強烈的需求要將這龐大的資料轉換成真正 有用的決策資訊,於是資料探勘的技術日益蓬勃的發展,其中關聯式法規則即 便是被廣泛應用的探勘技術之一。

本論文中將提出一套新的關聯式法則演算法,稱作”應用排序-索引-修剪技術 之高效率關聯式法則演算法”(A Sorting-Indexing-Trimming Approach for Mining Association Rules,簡稱 SIT),來改進關聯式法則探勘的效率,因此在本章中 1.1 研究背景將探討資料探勘(Data mining)對於現代化的企業的重要性;1.2 研究動 機將進一步探討資料探勘中應用最多的關聯式法則演算法,並且討論目前有關 關聯式法則的演算法一些問題以及改善的方式;而1.3 研究目的則說明本論文所 提出的SIT 演算法之基本概念。

1.1 研究背景

現在的企業在競爭壓力與日俱增以及與資訊科技不斷的進步,企業為了不斷的 保持競爭優勢,所以經營方式除了一直不斷的研發新的產品,改善產品品質,

還要提昇生產效率,甚至還要傾聽客戶的心聲,朝客戶導向來滿足所有的客戶,

所以愈來愈多的企業,期望能電子化借助電腦科技來提昇企業的競爭力,然而 企業在不斷的將所有的東西不斷朝電子化的目標前進時,往往專注於如何經由 各種管道收集大量的資料,或是將平面的資料轉化成電子化的資料庫,然而近 幾年來資料產生及收集的技術快速提昇,關於資料庫軟體如甲骨文的Oracle、

微軟的SQL server、IBM 的 DB2,在電腦硬體的快速成長,不斷的推陳出新,

使得企業不斷的將所有的資料儲存於電腦上,於是企業內部快速產生大量的資 料,雖然這些龐大的資料對於企業來說是非常重要,但是相信所有的企業經營

(14)

者都有一強烈的感覺,花了這麼多錢電子化,除了方便以外,多了這麼多的資 料,只是紀錄備查嗎?所以部分企業逐漸感受到,如果無法將這些龐大的紀錄 資料,轉換成有用的資訊,進一步成為企業所累積的知識,電腦只不過是快速 的搜尋機器而已,即使擁有龐大的資料庫,仍無法替企業創造更多的利潤,反 而要維護這些軟硬體需要花更多的金錢維護。

基於前面所描述的狀況,於是有資料探勘的技術開始被提出討論,期望能將企 業所擁有的龐大資料庫,經過一定程序的處理轉換成一些有助於公司的資訊,

便於企業經營者作決策,換句話說,企業期望能夠從巨大資料庫中採礦到濃縮、

先前不知、可理解的資訊,並從使用中獲利。目前資料探勘的應用在許多不同 的產業如行銷、財務、銀行、製造廠、通訊等。這些資料採礦的系統,例如有 一個應用在行銷領域的例子[19]:經由記錄客戶的消費記錄與採購路線,超級市 場可以設計出更吸引顧客購買的環境。根據資料採礦出特別的資訊來,因此現 在超級市場的廚房用品,是按照女性的視線高度來擺放。根據研究指出:美國 婦女的視線高度是150 公分左右,男性是 163 公分左右,而最舒適的視線角度 是視線高度以下15 度左右,所以最好的貨品陳列位置是在 130 至 135 公分之間。

在商業上,有非常多的特徵很難去理解,但如對這些訊息加以瞭解,必能增加 企業競爭能力。下面是一些資料探勘的在科學、行銷、工業、商業、體育、醫 學…等各方面運用的類型:

z 在商業方面

找出那一類型顧客最有可能購買新產品及那些產品通常會一起被購買,便於 產品的儲架的擺設與促銷。

z 在財務金融方面

根據以往審核的資料,找尋核發信用卡的規則。

從消費及繳費資料中,預警信用卡呆帳可能。

從通話記錄資料中,預警盜打電話可能。

(15)

z 直銷行銷方面

於郵寄活動上,藉由資料探勘可以預測出那些人最有可能回覆郵寄活動和購 買產品,企業針對較少、更有可能消費的潛在客戶,和郵寄資料庫中所有人 員名單的作法相比較,節省了巨量的成本費用。

z 在工業方面

製程的分析、最佳的機台組合、派工的方式。

z 在醫學方面 基因工程研究。

生活區域、工作內容與特殊疾病的關係。

z 體育方面

在NBA 球賽資料中,找出球員的強弱點。

z 科學方面

從太空船拍攝的影像資料,找尋星球上的火山。

氣象預測。

星際星體分類。

1.2 研究動機

資料探勘包含許多的技術如關聯式法則(Association rule)[1]、分類式法則 (Classification rule)、群集式法則(Clustering rule)、預測(Predication)、推估 (Estimation)等等,其中關聯式法則的方法,是一直是研究的焦點,且廣為企業 應用。

目前有關關聯式法則的演算法很多,大部分都以Apriori 的演算法為基礎,但是 Apriori 演算法因於執行過程中會產生大量的候選物項集合,導致執行的效率太 差,所以有很多的研究改進Apriori 的演算法如 DHP(Direct Hashing and

Pruning)[4] 、 Partition[7]、Princer-Search[17]等演算法,但是這些演算法無法

(16)

解決在低支持度的時候,會產生大量候選物項集合的困擾。

目前有一些較新的改善關聯式法則的演算法有提出無須候選物項集合的演算法 就能找出高頻物項集合的演算法如FP-Tree(Frequent-Pattern tree )[8]、

MPHP(Minimal Perfect Hashing & Pruning)[18] ,其中 FP-Tree 雖然能直接找出 高頻物項集合,但是因於執行過程中有太多的物項時,會容易產生很多的分支,

其改善效果仍然有限,至於MPHP 的雜湊函數簡單且保證不會產生碰撞,是最 好的演算法之一,尤其對於所有關聯式法則演算法最頭痛的候選2-物項集合,

能在非常短的時間處理完,但在高頻2-物項集合以後的找尋,所需的記憶體是 呈指數型成長,所以MPHP 雖然改善的效率很好,但是只能僅限於高頻 2-物項 集合的產生。

針對以上描述關於關聯式法則演算法的一些缺失,期望能提出更好、更有效率 的關聯式法則演算法是本研究最大的動機。

1.3 研究目的

綜觀目前所使用的關聯式法則演算法,都有其缺失,因此本論文將提出一套新 的演算法”應用排序-索引-修剪技術之高效率關聯式法則演算法”能更進一步改 善關聯式法則演算法的執行效率。

SIT 使用與 FP-Tree 相同的排序方式,先將所有的物項依據出現的頻率排序,但 是FP-Tree 是將出現頻率越高的排在越前面,SIT 的排序則是將出現頻率越高的 排在越後面。排序是為了將來使用索引及修剪的方法能更有效率;索引的技巧 類似資料庫的索引用來加快資料搜尋的速度,但是SIT 的索引因為有事先的排 序,所以索引的物項資料是連續性的,於找尋資料物項時,可避開不可能的物 項的搜尋,而索引的技巧也能應用於MPHP 的雜湊函數上面;最後要說明的是 修剪,排序後的修剪對於Apriori 是沒有效益的,因為索引的功能已經避開不可 能的物項搜尋,所以不適用於Apriori,但是對於 MPHP 則能減少其計算的量。

(17)

綜合前面所提的SIT 的方法,能大量增加關聯式法效率的新演算法是於階層 2 物項集合使用以排序索引修剪改良的MPHP 雜奏函數 (SIT + MPHP)找尋高頻 物項集合,於階層3 物項集合以後使用以排序索引改良的 Apriori(SI + Apriori),

經實驗分析發現SIT 演算法的效能較傳統的 Apriori 演算法有效的提昇效益,並 且也較MPHP 演算法好。

本篇論文共分為5 個章節,在第 2 章將會介紹資料探勘及關於關聯式法則以及 各種常用的演算法,並且分析比較他們的優缺點,而第3 章則會詳細介紹 SIT 演算法,包含詳細的步驟與及範例,第4 章則會將 SIT 演算法與其他相關演算 法作在不同的條件下實驗作效率比較報告,第5 章則是會對於本論文提出一些 方法作個回顧,並且提出後續可以應用與研究的方向。

(18)

第2章 相關研究

關於資料探勘的關聯式法則,目前有許多的研究報告提出許多新的技術及方 法,但是都以Apriori 演算法為基礎,然後延伸推導出新的演算法,但是 Apriori 演算法執行過程中產生大量的候選物項集合,造成執行效率的不佳,所以之後 提出的演算法都會以減少大量候選物項集合為目標,如利用雜湊函數(Hash function),來減少候選物項集合,所以本章介紹的演算法會主要與雜湊函數相關 的關聯式法則演算法為主,於2.1 將介紹資料探勘的簡介,於 2.2 介紹關聯式法 則,於2.3 介紹關聯式法則最基礎的演算法 Apriori,於 2.4 介紹以雜湊函數來減 少後選物項集合的DHP 演算法,於 2.5 介紹雜湊函數完全不會碰撞的 MPHP 演 算法。

2.1 資料探勘的簡介

資料探勘是近年來非常受矚目的技術,這些相關的研究主要的目的是從大量的 資料中萃取出隱藏且有用的資訊,由於這些資訊事先不為人所知,透過這些被 萃取出的資訊將有助於資訊的管理,並提供決策者作為決策的參考。

資料探勘為知識探勘的一部分,知識探勘完整的流程包括了資料蒐集與資料倉 儲之建置、資料選擇與處理、資料轉換、資料探勘、結果之詮釋與評估等5 個 步驟如圖2.1

(19)

圖 2.1 資料探勘與知識工程之完整過程與架構

1. 資料蒐集與資料倉儲之建置

利用資料倉儲系統將所有資料彙集在一起,經由系統內部轉換,將資料形式 規格化,並且建立一個統一介面、多維度儲放且採開改式的架構來將巨量資 料依主題、時間序列整合起來儲存與管理。

2. 資料選擇與處理

依特定之應用領域及使用者需求,由資料倉儲系統中篩選合適資料,再特定 的前置加工處理之後,形成規模較小、為特定主題量身訂做的資料超市(data mart)。

3. 資料轉換

將資料超市中之缺漏資料(missing data)與雜訊(noisy data)加以處理與淨化,並 將不同的資料格式依特定主題或某些資料探勘技術運作之需求來作必要的轉 換處理。

4. 資料探勘

根據所處理問題之特性,選用適當之資料探勘技術進行智慧型資料分析、尋 找巨量資料內隱含之邏輯規則與知識樣模。

Target Data

3

1 2

5 4 Data

Data

Pre-processed data

Pattens Transfered Data

Knowledge

Selection Pre-Processing

Transformation

Data mining Pattern

Evaluation

(20)

5. 結果之詮釋與評估

由領域專家共同參與決定所擷取得到的規則及知識樣模之呈現方式及解讀以 供後續決策支援之用。

我們知道資料探勘的目的是由大量的資料中找尋有用的資訊,但對於不同的企 業或使用者因需求不同所採取的方法亦不同,目前主要的資料探勘技術有關聯 式法則(Association Rule)、分類式法則(Classification Rule) 、群集式法則

(Clustering Rule) 、預測(Prediction) 、推估(Estimation)等五種技術,其說明如下

1. 關聯式法則

從所有物件決定那些相關物件應該放在一起。例如超市中相關之盥洗用品(牙 刷、牙膏、牙線),放在同一間貨架上。

2. 分類式法則

按照分析對象的屬性分門別類加以定義,建立類組(class)。例如,將信用申 請者的風險屬性,區分為高度風險申請者,中度風險申請者及低度風險申請 者。

3. 群集式法則

將異質母體中區隔為較具同質性之群組(clusters)。同質分組相當於行銷術語 中的區隔化(segmentation),但是,假定事先未對於區隔加以定義,而資料中 自然產生區隔。

4. 預測

根據對象屬性之過去觀察值來推估該屬性未來之值。例如由顧客過去之刷卡 消費量預測其未來之刷卡消費量。

5. 推估

根據既有連續性數值之相關屬性資料,以獲致某一屬性未知之值。例如按照 信用申請者之教育程度、行為別來推估其信用卡消費量。

(21)

2.2 關聯性法則

所謂的關聯性是什麼,若是以行銷的角度為例子;在購買A 牌鋼筆的消費者中,

有90%的消費者也同時購買了 B 牌的墨水;這兩者關係的描述就是一種關聯,

而且很清楚的表現出消費者行為所要注目的焦點。目前已有很多種技術已支援 尋找出這些關聯式的規則,而企業決策者將可很輕鬆的從資料庫中,找出許多 的資訊供做參考。

關聯式法則的建立,基本上可以依照Agrawal & Srikant(1994)所設計的流程來看 可以分為兩個步驟:

1. 在資料庫中尋找出所有可能的高頻物項集合(Frequent Itemsets),並且要大

於所設定的最低支持度(Support)。

2. 分析所產生的高頻物項集合,產生適當的法則。例如:假設找出的高頻物

項集合為 AB,則將可能產生一條法則是 A→B 這時我們就可以計算當 A 發生時,也發生B 的信賴度(Confidence);支持度(AB) / 支持度(A),而若 是算出的C%大於所設定的最低信賴程度,則此條法則就可以被確立。

現在就以超級市場的例子,再將整個流程內容做一詳細解說 ,假設商品物項集 合I (Itemset) ,包含了所有超級市場所有可能的商品物{i1,i2,..,im},並設 D 爲 超級市場所有商品交易紀錄的集合,且每一筆顧客交易紀錄T 所包含的就是一 群物項的集合,所以所有在T 出現的物項都是可以被 I 所涵蓋的,此時定義一 個唯一的紀錄代號TID 來代表每一筆交易紀錄 T。而在一般的關聯式法則表示 上,設定A 和 B 都是一群商品物項的集合且包含在交易紀錄 T 中,而 A 和 B 所包含的商品物項都是可以在I 中所找到,但 A∩B 必須爲 Ø,如此將可以設定 一法則格式A⇒B。而若要使法則 A⇒B 成立,必須滿足下列兩項條件限制

1. 包含 A∪B 的交易 T,存在於 D 中所占的比例稱爲支持度(Support) ,以 S%

(22)

表示之,而S%必須大於或等於使用者自訂的最小支持度。

2. 發生 A 的交易時,也發生了 B 的交易,這種交易存在於 D 所占的比例稱爲

信賴度(Confidence),以 C%表示之,而 C%必須大於或等於使用者自訂的最 小信賴度。

從以上的定義可以看出在此架構中必須要注意兩個實驗因素(Agrawal & Srikant, 1994):

z 支持度:

代表實驗因子也就是資料物項集合(Data Itemsets)在資料庫中所佔有的比例 (S%),若佔的比例較高,則顯示此物項集合應是一個值得重視的討論要項。

z 信賴度:

代表被實驗的因子在主要因子中所佔有的條件比例程度,例如若要探討購買 某家庭月刊的人是否會同時購買某汽車雜誌,可能會發現家庭月刊的消費者 中有10%會同時購買汽車雜誌,這就代表兩因子之間的信賴程度。也可以用 條件機率的概念來看,假如有一條法則是A⇒B,則信賴度 C%代表 P(B|A)。

現在以一個實際例子說明支持度與信賴度,假設一資料庫如表2.1

TID ITEM 100 A,C,D 200 B,C,E 300 A,B,C,E 400 B,E

表 2.1 表關聯式法則範例資料庫

資料庫共有4 筆交易紀錄,有 A、B、C、D、E 等 5 種物項,4 筆交易當中含物 項A 的共有 2 筆,物項 C 的共有 3 筆,其 A、C 的支持度與信賴度如下

(23)

C⇒A 的支持度 S=2/4=50%,信賴度 C=2/3=66.6%

A⇒C 的支持度 S=2/4=50%,信賴度 C=2/2=100%

目前的高頻物項集合產生方式,從單一物項開始,先利用一些演算法找出所有 可能的候選物項集合(Candidate Itemsets),在從這些候選物項集合中找出真正的 高頻物項集合(Frequent Itemsets),而下一階段的開始就是將上一階段的高頻物項 集合排列組合,再重新分析,往後就如此循環下去,所以當重複n 次之後,就 會出現n+1 個物項的高頻物項集合;而目前研究的方向上會因為效率的需求,

而著重在如何將候選物項集合進行簡化,也就是只產生出高度相似性的候選 集,以降低對高頻物項集合的處理需求,或是利用其他的方式以減少對資料庫 的存取時間等,但實驗證明往往在前幾次的循環過程中就已經幾乎消耗掉所有 的執行成本。

關聯式法則簡單容易了解,目前企業界應用在許多領域。例如,行銷、財務、

銀行、製造廠、通訊等。並且產學合作下發展出許多實用的系統,這些資料採 礦的系統,應用非常廣泛,以下就列舉企業一些應用

1. 增加單一顧客的消費金額,利用資料探勘的關聯式法則找出那一類型顧客最

有可能購買新產品及那些產品通常會一起被購買。

2. 於商品促銷方面,分析顧客的消費習性,寄出特別設計的廣告郵件,除了可

以促進其銷售成長並節省大量的廣告成本。

3. 超級市場的儲架擺設,可藉著分析以往的購買行為及顧客類別的喜好作為商

品擺設的參考。

4. 網路教學,可藉著分析學生考試的錯誤樣本找出學生的學習障礙,並針對學

生的學習障礙設計出特別網路教材。

5. 醫院的藥物使用量與方法對於疾病的控制分析

6. 分析醫院病人的病歷資料找出各病症之間的關聯程度,作為醫師診斷的參考。

7. 生物資訊中找出不同基因排列方式與疾病的關聯。

(24)

2.3 Apriori 演算法

對於關聯式法則演算法,幾乎所有的研究報告以Agrawal et al. 於 1994 提出的 Apriori 演算法為基礎,它利用簡單循序建序的方式重複利用候選物項集合來找 尋高頻物項集合,再利用高頻物項集合產生新的候選物項集合, 直到不能在產 生新的候選物項集合為止。首先介紹Apriori 演算法所使用的符號如表 2.2

符號 描述

itemset 物項集合,由物項所組成,每個物項代表一種商品。

k k 為物項集合的級數或層級,同時也是物項的個數。

k-itemset 代表長度為k 的物項集合。

Ck 代表第k 層的候選物項集合。

Lk 代表第k 層的高頻物項集合。

min_sup

最小支持度,候選物項集合在資料庫必須出現最少次數或 比例,才能成為高頻物項集合

表 2.2 Apriori 演算法中所使用的符號代表意義 現在說明Apriori 演算法的描述如下

1. 訂定最小支持度與最小信賴度。

2. 讀取資料庫,計算第 1 層的所有的候選物項集合 C1 的支持度。

3. 找出高於或等於最小支持度的 C1,並利用第 1 層的所有的高頻物項集合 L1

的互相結合產生C2。

4. 再次掃描資料庫,計算出 C2 的支持度,再找出 L2,並將 L2 的互相結合產

生C3。

5. 重複掃描資料庫計算出候選物項集合的支持度與最小支持度比較,產生高頻

物項集合,再結合產生下一級的候選物項集合,直到不再產生新的候選物項

(25)

集合為止。

於前面所提計算候選物項集合的支持度是指,一候選物項集合是否為一交易的 子集合,如果是,則該候選物項集合的支持度則次數加1;高頻物項集合的互相 結合,我們會利用兩個特性,第1:當一高頻物項集合,則其高頻物項集合的所 有子集合必定是高頻物項集合,第2:當一候選物項集合的中的任一子集合不為 高頻物項集合,則其候選物項集合必定不是高頻物項集合,所以當第k 層的高 頻物選集合Lk 結合產生了第 k+1 層的候選物選集合 Ck+1,若是 Ck+1 中一 k+1-item 有其中有一個子集合不在 Lk 當中,則此 k+1-item 可以直接自 Ck+1 去 除。候選物項集合的產生可以表示為Ck+1=Lk*Lk={X∪Y={X,Y ε

Lk ,|X∩Y|=k-1},其函式如下(其中 p 與 q 分別表示不同的物項集合)

insert into Ck+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.2

(26)

B E 400

A B C E 300

B C E 200

A C D 100

Items TID

1 {D}

3 {E}

3 {C}

3 {B}

2 {A}

Count Itemset

3 {E}

3 {C}

3 {B}

2 {A}

Count Itemset

C2 C2

C3 C3 L3

2 {C E}

3 {B E}

2 {B C}

1 {A E}

2 {A C}

1 {A B}

Count Itemset

2 {C E}

3 {B E}

2 {B C}

2 {A C}

Count Itemset

L2

{C E}

{B E}

{B C}

{A E}

{A C}

{A B}

Itemset

{B C E}

Itemset

2 {B C E}

Count Itemset

2 {B C E}

Count Itemset

1 2

4 5

7 8

3

6

圖 2.2 Apriori 找尋高頻物項集合範例(Park , et.al 1995)

圖2.2 的範例資料庫含有 4 筆交易紀錄,有A、B、C、D、E等 5 個不同的 物項,最小支持度設定為50%,也就是說候選物項集合次數要超過 2(含)次以上 才能成為高頻物項集合。

圖2.2 範例共有 8 個步驟

1. 掃描資料庫計算出物項{A}、{B}、{C}、{D}、{E}的次數分別為 2、3、3、

1、3 次。

2. 經過最低支持度的檢測物項{A}、{B}、{C}、{E}的支持度高於最小支持

度成為第1 層高頻物項集合 L1。

3. L1 結合產生{AB}、{AC}、{AE}、{BC}、{BE}、{CE}等 6 個第 2 層候選物

項集合C2。

4. 接者第 2 次掃描資料庫計算出{AB}、{AC}、{AE}、{BC}、{BE}、{CE}的

次數分別為1、2、1、2、3、2 次。

5. 經過最低支持度的檢測{AC}、{BC}、{BE}、{CE}的支持度高於最小支持

(27)

度成為第2 層高頻物項集合 L2。

6. L2 結合產生{BCE}等 2 個第 3 層候選物項集合 C3 。 7. 接者第 3 掃描資料庫計算出{BCE}的次數為 2 次。

8. 經過最低支持度的檢測{BCE}的支持度高於最小支持度成為第 3 層高頻物項

集合L3,最後無候選物項集合所以結束此流程。

其詳細的演算法如下 Algorithm Apriori()

Scan database D to obtain L1, the set of frequent 1-itemsets;

for (K=2; Lk-1≠ ;K++) do φ

Ck =apriori-gen(Lk-1);//Generate new candidates form Lk-1 for all transaction t∈D do

Ct =subset(Ck ,t);//Candidates contained in t for all c∈Ct do

c.count++;

Lk={ c∈Ck | c.count≥ min_sup};

All frequent itemsets= Uk Lk ; End_of_ Apriori

function apriori_gen(Lk-1) for all itemset l1 ∈ Lk-1 do for all itemset l2 ∈ Lk-1 do

if (l1 [1]= l2 [1]) ∧ (l1 [2]= l2 [2]) ∧ … ∧ (l1 [k-2]= l2 [k-2]) ∧ (l1 [k-1]< l2 [k-1]) then

c= l1

><

l2;//join step:generate candidate if has_infrequent_subset(c, Lk-1)

(28)

then delete c;//prune step:remove unfruitful candidate else add c to Ck ;

return apriori_gen;

End_of_ apriori_gen

function has_infrequent_subset(c, Lk-1) for all (k-1)-subset s of c do

if s∉ Lk-1

then has_infrequent_subset=TRUE;

else has_infrequent_subset=FALSE;

return has_infrequent_subset;

End_of_ infrequent

Apriori 演算法簡單容易明瞭,但是執行過程中,每個階層候選物項集合都需要 掃描整個資料庫,計算該候選物項集合在資料庫出現的次數,所以當候選物項 集合的數量太大時,光掃描資料庫的次數就把所有的電腦資源耗盡了,尤其是 在第2 階層的候選物項集合,所以 Apriori 演算法只能適合於少量的資料量。

2.4 DHP 演算法

Apriori 演算法雖然簡單,但是當候選物項集合太多,尤其是候選 2 物項集合,

檢查所有的候選物項集合是否為一筆交易的子集合時,將會耗盡大部分的電腦 資源。Chen et al. 於 1995 年提出 DHP(Direct Hashing and Pruning)演算法,在候 選2 物項集合事先使用雜湊函數(Hash function)過濾部分不可能成為高頻物項集 合的候選物項集合,以減少比對的次數,如圖2.3

(29)

h{[x y]}=((order of x )*10+(order of y)) mod 7

C2

3 {C E}

2 {B E}

2 {B C}

1 {A E}

2 {A C}

1 {A B}

{C E}

{B E}

{B C}

{A C}

3 {E}

1 {D}

3 {C}

3 {B}

2 {A}

{E}

{C}

{B}

{A}

L1

{A C}

{B E}

{C E}

6 3 {A C}

{C D}

5 4 3 2 1

0 1 2 0 3 1

3

{A B}

{B E}

{B C}

{A E}

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

The number of items hashed to bucket 2 Hash Table B,E

400

A,B,C,E 300

B,C,E 200

A,C,D 100

{BE}

{AB}, {AC}, {AE}, {BC}, {BE}, {CE}

{BC}, {BE}, {CE}

{AC}, {AD}, {CD}

5 E

4 D

3 C

2 B

1 A

Index ITEM

C2

1 2

3

4

圖 2.3 DHP 利用雜湊法產生候選物項集合 C2(Part , et. al ,1995)

圖2.3 的資料庫含有 4 筆交易紀錄,有A、B、C、D、E等 5 個不同的物項,

最小支持度設定為50%,也就是說候選物項集合的次數要超過 2(含)次以上才能 成為高頻物項集合,採用的雜湊函數為h{x,y}=((order of x)*10+(order of y)) mod 7。

此範例共有4 個步驟

1. 將每個交易下的物項使用與 Apriori 高頻物項結合產生候選物項集合相同的

方式建立Hash table, 所以 Tid=100 下的物項有A、B、D 結合之後就會產 生{AC}、{AD}、{CD}等 3 個集合,Tid=200 下的物項有 B、C、E 結合之後 就會產生{BC}、{BE}、{CE}等 3 個集合,Tid=300 下的物項有A、B、C、

E 結合之後就會產生{AB}、{AC}、{AE}、{BC}、{BE}、{CE}等 6 個集合,

Tid=400 下的物項有B、E 結合之後就會產生{BE}等 1 個集合。

2. 針對資料庫下的所有物項建立對映編號,所以A、B、C、D、E 建立的對映

(30)

編號為1、2、3、4、5。

3. 使用雜湊函數計算 Hash table 下所有的集合,將所得出來的直放入相對映的

Bucket,列如集合{AB},則對映到的編號為{1,2},雜湊函數 H(1,2)=(1*10+2) mod 7=5,所以{AB}是放入第 5 bucket,集合{AC},則對映到的編號為{1,3},

雜湊函數H(1,3)=(1*10+3) mod 7=6,所以{AC}是放入第 6 bucket,依以上的 方法得知,第0~6 bucket 分別放入 3、1、2、0、3、1、3 個物件集合。

4. 使用 Apriori 方法找出第 2 層的候選物項集合分別為{AB}、{AC}、{AE}、

{BC}、{BE}、{CE}等 6 個集合,經雜湊函數計算分別對映到的 bucket 位址 為5、6、1、2、4、0,其各 bucket 的位址含的集合個數分別為 1、2、1、2、

2、3,經過最低支持度檢測只有{AB}、{BC}、{BE}、{CE},成為第 2 層的 候選物項集合C2,{AB}、{AE}則成功的被雜湊函數事先去除。

其演算法如下

//step 1 of the DHP algorithm Function build_hash_table()

Initialize all hash buckets in the hash table H2 to zero;

for all transaction t∈database D do

Insert and count the supports of all 1-itemsets in a hash tree;

for all 2-item subset x of t do

H2 [h2 (x)++; // h2 is hash function

L1 ={c | c.count≥ min_sup,c is in the hash tree};

End_of _build_hash_table

//Step 2 of the DHP algorithm Function gen_candidate(L1 ,H2 ,C2)

(31)

C2 = L1 x L1 ={X ∪ Y | X,Y∈L1};

for all 2-itemsets c∈C2 do

if H2 [h2 (c)<min_sup then remove c from C2 ; Scan D to obtain the supports of all 2-itemsets in C2 ; L2 ={c | c.count≥ min_sup,c is in C2 };

End_of_gen_candidate;

DHP 演算法雖然利用簡單的雜湊函數減少了第 2 層的候選物項集合,但是其雜 湊函數會有碰撞的情形,所以如果於大量的資料庫下,如果只有以上所舉的例 子只有7 個 bucket,會因碰撞太嚴重,導致只能過濾少量的候選物項集合,甚 至完全沒有過濾任何候選物項集合,此時執行因執行過程中要比Apriori 多一個 計算雜湊函數的負擔,其執行的效率反而比Apriori 差,所以 DHP 為了要能過 濾大量的候選物項集合必須使用更多的bucket 才能達到目的,但是會耗用大量 的記憶體且每增加的bucket 數目愈多,其所過濾候選物項集合的效能成長就愈 少。

2.5 MPHP 演算法

DHP 演算法的雜湊函數因為會有碰撞的情形,所以無法直接過濾所有的候選物 項集合,所以必須使用雜湊函數計算完所有的集合,然後再掃描資料庫找尋高 頻物項集合,MPHP(Minimal Perfect Hashing & Pruning)則是 DHP 的雜湊函數最 完美的函數,因為MPHP 不會有碰撞,所以可以直接過濾所有不可能成為高頻 物項集合的候選物項集合,換句話說,MPHP 不需要候選物項集合,就能找出 高頻物項集合,而且MPHP 所使用的記憶體的效率會遠比 DHP 高出許多。

雜湊函數bucket 數量分配方法如圖 2.4

(32)

圖 2.4 MPHP 的雜湊函數 bucket 數量分配方法

第1 個部分為原始的資料庫有A、B、C、D、E等 5 個不同的物項,第 2 個 部分將這些物項分別編號成1、2、3、4、5,將這些物項組成 2 個物項為一個 集合的最多組合共有

C

52=10 種,第 3 部分則是將各物項編號組成的各種組合排 序建立單一獨立的索引位址。

MPHP 雜湊函數 H(i,j)=((i - 1) * (N - 1)) + j - ((i * (i - 1)) / 2) - 1,其中 N 為物項個 數,其所有物件組合使用雜奏函數計算出獨立索引位址的過程如下:

H(1,2)=((1 - 1) * (5 - 1)) + 2 - ((1 * (1 - 1)) / 2) – 1=1 H(1,3)=((1 - 1) * (5 - 1)) + 3 - ((1 * (1 - 1)) / 2) – 1=2 H(1,4)=((1 - 1) * (5 - 1)) + 4 - ((1 * (1 - 1)) / 2) – 1=3 H(1,5)=((1 - 1) * (5 - 1)) + 5 - ((1 * (1 - 1)) / 2) – 1=4 H(2,3)=((2 - 1) * (5 - 1)) + 3 - ((2 * (2 - 1)) / 2) – 1=5 H(2,4)=((2 - 1) * (5 - 1)) + 4 - ((2 * (2 - 1)) / 2) – 1=6 H(2,5)=((2 - 1) * (5 - 1)) + 5 - ((2 * (2 - 1)) / 2) – 1=7 H(3,4)=((3 - 1) * (5 - 1)) + 4 - ((3 * (3 - 1)) / 2) – 1=8 H(3,5)=((3 - 1) * (5 - 1)) + 5 - ((3 * (3 - 1)) / 2) – 1=9 H(4,5)=((4 - 1) * (5 - 1)) + 5 - ((4 * (4 - 1)) / 2) – 1=10

MPHP 雜湊函數能經簡單的運算就能快速的將所有組合計算出不會碰撞的位

(33)

址,MPHP 的雜湊函數找尋高頻物項集合的流程如圖 2.5

H(i,j)=((i - 1) * (N - 1)) + j - ((i * (i - 1)) / 2) - 1 B E

400 A B C E 300

B C E 200

A C D 100

Items TID

9 2 {C E}

{C E}

10 0 6

0 8 1 {C D}

7 5 4 3 2 1

3 2 1 1 2 1

{B E}

{B C}

{A E}

{A D}

{A C}

{A B}

{B E}

{B C}

{A C}

{B E}

{BE}

{AB}, {AC}, {AE}, {BC}, {BE}, {CE}

{BC}, {BE}, {CE}

{AC}, {AD}, {CD}

{2 5}

{1 2}, {1 3}, {1 5}, {2 3}, {2 5}, {3 5}

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

{1 3}, {1 4}, {3 4}

1

2

3

圖 2.5 MPHP 的雜湊函數找尋高頻物項集合流程圖

資料庫含有4 筆交易紀錄,有A、B、C、D、E等 5 個不同的物項,最小支 持度設定為50%,也就是說候選物項集合次數要超過 2(含)次以上才能成為高頻 物項集合,採用的雜湊函數為H(i,j)=((i - 1) * (N - 1)) + j - ((i * (i - 1)) / 2) - 1。

此範例共有3 個步驟

1. 與 DHP 相同方式建立 Hash table ,Tid=100 下的物項有A、B、D 於結合之

後就會產生{AC}、{AD}、{CD}等 3 個集合,Tid=200 下的物項有 B、C、E 於結合之後就會產生{BC}、{BE}、{CE}等 3 個集合,Tid=300 下的物項有A、

B、C、E 於結合之後就會產生{AB}、{AC}、{AE}、{BC}、{BE}、{CE}等 6 個集合,Tid=400 下的物項有B、E 於結合之後就會產生{BE}等 1 個集合。

2. 將 Hash table 所有的集合由物件名稱改成對映索引編號,如{AB}改成{1,2},

{AC}改成{1,3}。

3. 直接將 Hash table 所有的集合使用雜湊函數 H(i,j)=((i - 1) * (N - 1)) + j - ((i * (i

- 1)) / 2) – 1 計算出物件索引位址,並累計索引位址的次數,當計算完所有的 集合時,所有的物項集合的次數已經統計完成,所以完全無需使用候選物項

(34)

集合。

其詳細的演算法如下 s= a minimum support;

I= {I1, I2, …, IN}, a set of distinguishable items in the database;

N= |I|, total number of data items in the database;

|D|= total transactions of the database;

k= the bottleneck of k-iteration;

g= the number of gth group in database;

itemi= the ith item in k-itemsets;

P(itemi)= the associated position in I;

Minimal Perfect Hash Function for k-itemsets:

Create hashing function with

C hash addresses; //construct hash function

kN

Hk(

item

1g,

item

2g, …,

item

kg1,

item )

kg

= Inter-Group-offset+ Intra-Group-offset

= (

= 1 1 g

r

Inter(

item

1r,

item

2r, …,

item

kr1)) + Intra(

item )

kg

= (

= 1 1 g

r

N- P(

item

kr1)) + (P(

item )- P(

kg

item

kg1))

For all transaction t ∈ D do //scan database begin

For all k-subsets ∈ t do

Hk(item , 1g

item

2g, …,

item

kg1,

item )++;

kg end for

(35)

Lk= {k-subsets| Hk (

item

1g,

item

2g, …,

item

kg1,

item ) ≥ s};

kg

Apriori with pruning:

For (z= k+1; Lz-1= φ; z++) do begin

Cz= Apriori-gen (Lz-1); //new candidates

transTrim[1 … |D|]=0; //initialize array transTrim[|D|]= 0 Forall transactions t ∈ D & transTrim[t-TID]=0 do begin Ct= SubsetCount-Pruning (Cz , z, t);

//candidates count contained in hash tree with simple pruning end

Lz= {c∈ Cz| c.count ≥ minsup}

end end MPHP

Procedure SubsetCount-Pruning (Cz , z, t)

Forall c such that c∈ Ck and c(= ti1 … tik) ∈ t do begin c.count++;

for (j=1; j≤ z; j++) a[ij]++;

end

transTrim[t-TID] = 1;

for (i=0; i<|t|; i++) if (a[i] ≥ z) {

transFlag[t-TID]= 0;

(36)

break;

}

end Procedure

MPHP 的雜湊函數雖然不會碰撞,不須候選 K-物項集合(K 通常為 2),但是於高 頻K+1 物項集合時,MPHP 仍使用以 Apriori 為基礎的演算法找尋高頻物項集 合,其中最大的瓶頸在於MPHP 隨著 K 的增加,記憶體需求會呈指數成長,如 表2.3

Level Bucket Itemsets

L2 499K 4,500K

L3 166,167K 13,500K L4 41,417,124K 21,000K 表 2.3 MPHP 雜湊函數在不同的階層所需的成本

假設總交易紀錄比數為100K,平均每筆交易的物項個數為 10,資料庫所包含的 物項個數為1000,每個 bucket 需要 4 個 bytes 儲存。

表2.3 於階層 2 則需要

C

10002 =1000*999/2≒499K 個位址儲存,共需要

499K*4≒0.2M 的記憶體,於階層 3 則需要

C

10003 =1000*999*988/3!≒166,167K 個位址儲存,共需要166,167K*4≒664M,於階層 4 則需要

C

10004 =1000*999*988*997/4!≒41,417,124K,但是由於 4 個 bytes 的變數不能滿 足所有的位址,必須改成8 bytes,所以共需要 41,417,124K *8≒331,337M 的記 憶體,所以MPHP 的雜湊函數,所以 MPHP 的雜湊函數通常會使用於階層 2,

於階層2 以後使用雜湊函數,普通的電腦已經不能支援這麼多記憶體了。

本章所介紹的各種關聯式法則的演算法,各有其優缺點,Apriori 簡單易於明瞭,

節省記憶體空間,但執行效率不好,所以有很多研究是改善Apriori 的演算法,

(37)

如Pincer-Search,Partition 等演算法但是其改進的效益有限,至於使用雜湊函數 的演算法如DHP 則因為碰撞嚴重,所以改進的效益不大,直到 MPHP 演算法找 出了不會碰撞的雜湊函數完全解決了DPH 的困擾,但是因 MPHP 對於階層 2 以後的記憶體需求太高,所以仍必須回到以Apriori 為基礎的演算法來處理,因 此根據以上的所有演算法的介紹,大量的候選物項集合必須有效率的過濾才是 根本解決方法。

(38)

第3章 SIT(Sorting Indexing Trimming)演 算法

本章中,我們將將會提出一改良式的演算法,稱作排序-索引-修剪技術之高效率 關聯式法則演算法(A Sorting-Indexing-Trimming Approach for Mining Association Rules,簡稱 SIT),使用 SIT 將著重於任一交易下各種不同的物項,能動態的比 對各種可能的候選物項集合,並避開不可能的候選物項集合。於3.1 將介紹各種 排序的技巧,3.2 將會介紹依據 3.1 所使用的排序方法加上索引的方法,3.3 將會 介紹依據3.1 所使用的排序方法及 3.2 索引的方法加上修剪的方法改良 MPHP 所使用的雜湊函數。

3.1 排序(Sorting)

物項的排序對於關聯式法則的演算法執行效率是有幫助的,如同二元搜尋法,

需要排序才能達到快速的搜尋速度,但是不同的排序方式,與不同的演算法將 會有不同的效益,於3.1.1 將說明對交易物項的排序對於 Apriori 演算法的益處,

於3.1.2 將說明交易物項依出現頻率的方式排序對於 Apriori 演算法的益處,3.1.3 將說明SIT 排序的方法。

3.1.1 交易物項的排序對於關聯式演算法的益處

於傳統的Apriori 的演算法或其他以 Apriori 為基礎延伸的演算法中,大部分都 有將資料排序以加快演算法的速度,如圖3.1

(39)

圖 3.1 交易物項未排序與排序的搜尋方式

假設要檢查候選物項集合{c,f}是否為 Tid=1 的子集合,首先說明左邊未排序的 資料庫,找出候選物項集合的物項c 是否存在於 Tid 的=1 集合內,依序比對物 項a→b→c ,共 3 次才確認物項 c 存在,接著找出候選物項集合的物項 f 是否 存在於Tid=1 的集合內,依序比對物項 a→b→c→i→g→p→m→f ,共 8 次才確 認物項f 存在,所以共須比較 11 次才能確認候選物項集合{c,f}為 Tid=1 的子集 合;若是使用右邊排序的資料庫,首先找出候選物項集合的物項c 是否存在於 Tid 的=1 集合內,依序比對物項 a→c ,共 2 次就確認物項 c 存在,接著找出候 選物項集合的物項f 是否存在於 Tid=1 的集合內,可直接從物項 c 之後的物項 f 開始比對,所以只比對1 次就確認物項 f 存在,所以共須比較 3 次就能確認候 選物項集合{c,f}為 Tid=1 的子集合。

根據以上的說明可知,若每個交易下的物項有排序,當候選物項集合中的某一 物項集合{i,j}是否存在於一交易 T 時,逐一比對 T 底下所有的物項是否有存在 物項i,若於 T 的第 x 位址找到時,於此候選物項集合下一個的物項 j,只須從 T 的第 x+1 的位址開始比對,無須從頭開始;如發生於 T 的第 y 位址的物項比 物項j 大時,因為有排序的原因我們可以確認 T 不存在物項 j。

(40)

3.1.2 交易物項依出現頻率的方式排序對於演算法的益處

有些演算法為了能得到更好的效益,事先依物項於資料庫出現的頻率排序,然 後再對每一交易下的物項排序來增加其效益,如圖3.2

3,1,7,2,14,5,15,6 5

4,1,13,6,17 4

4,2,10,12,16 3

3,4,1,2,14,5,16 2

3,1,7,2,9,11,5,6 1

Items Tid

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

1 s

3 p

1 o

1 n

3 m

1 l

1 k

1 j

1 i

1 h

1 g

4 f

1 e

1 d

4 c

3 b

3 a

Count Item

s o n l k j i h g e d p m b a f c Item

1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 4 4 Count

17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Index

1,2,3,5,6,7,14,15 5

1,4,613,17 4

2,4,10,12,16 3

1,2,3,4,5,14,16 2

1,2,3,5,6,7,9,11 1

Items Tid

1

5 4

2 3

圖 3.2 資料庫依照物項出現的頻率由高至低排序 圖3.2 排序流程如下

1. 為原始資料庫。

2. 計算各物項於資料庫出現的次數。

3. 依照物項的次數由高至低排序,建立索引編號表格(索引編號愈小,代表物項

次數愈高) 。

4. 依據索引編號表格的對映,將資料庫的物項改成相對映的索引編號。

5. 將各交易下的物件索引編號排序。

比對的方式如圖3.3

(41)

s o n l k j i h g e d p m b a f c Item

17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Index

1,2,3,5,6,7,14,15 5

1,4,613,17 4

2,4,10,12,16 3

1,2,3,4,5,14,16 2

1,2,3,5,6,7,9,11 1

Items Tid

圖 3.3 交易物項依出現頻率的方式排序的搜尋方式

假設要檢查候選物項集合{c,f}是否是 Tid=1 的子集合於圖 3.3 中可看出,{c,f}

對映的索引編號是{1,2},找出候選物項集合的物項 1 是否存在於 Tid 的=1 集合 內,結果第一次就找到物項1,接著找出候選物項集合的下一個物項 2 是否存在 於Tid 的=1 集合內,結果也是第 1 次就找到了,所以只須比對 2 次就能確認{c,f}

是Tid=1 的子集合,這是因為出現頻率愈高的物項排在愈前面,想要比對的物 項愈快找到。由此可知依據物項於資料庫出現的次數排序,將更有助於Apriori 演算法的效益。

3.1.3 SIT 排序的方法

SIT 排序方法與 3.1.2 的排序的順序相反如圖 3.4

(42)

12,16,1,17,8,14,9,15 5

13,16,7,15,11 4

13,17,4,6,10 3

12,13,16,17,8,14,10 2

12,16,1,17,3,5,14,15 1

Items Tid

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

1 s

3 p

1 o

1 n

3 m

1 l

1 k

1 j

1 i

1 h

1 g

4 f

1 e

1 d

4 c

3 b

3 a

Count Item

f c p m b a s o n l k j i h g e d Item

4 4 3 3 3 3 1 1 1 1 1 1 1 1 1 1 1 Count

17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Index

1,8,9,12,14,15,16,17 5

7,11,13,15,16 4

4,6,10,13,17 3

8,10,12,13,14,16,17 2

1,3,5,12,14,15,16,17 1

Items Tid

1 2 3

4

5

圖 3.4 SIT 排序的流程圖

SIT 的排序方式與 3.1.2 的方式相同,但是物項的索引編號是依照物項出現的次 數愈高,則編號愈大,這對於傳統的Apriori 演算法將是最不好的排序,但是對 於在於往後要介紹的索引方法將能達到最好的效率。

由本章節的討論得知不同的排序技巧將有助於搜尋比較的效益,只要於資料庫 使用簡單的SQL 語言花很少的時間事先將資料排序,就能獲的往後於大量資料 搜尋比較的好處。

3.2 索引(Indexing)

索引的技巧已經有很多的地方應用,如資料庫系統,加入索引能加快搜尋的速 度,這個技巧也可以使用在關聯式法則的演算法,我們將於3.2.1 介紹 Apriori 的索引改良法,3.2.2 介紹 MPHP 的索引改良方法,這兩個方法將更有助於關聯 式法則的演算法效益提昇。

(43)

3.2.1 Apriori 的索引改良法

於傳統的Apriori 的演算法找尋高頻物項集合至少須比對的次數如範例圖 3.5

{m,p}

{f,p}

{f,m}

{c,p}

{c,m}

{c,f}

{b,p}

{b,m}

{b,f}

{b,c}

{a,p}

{a,m}

{a,f } {a,c}

{a,b}

Itemset

8 8 7 8 7 4 1 1 1 1 8 7 4 2 2 Count

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

圖 3.5 Apriori 演算法找尋高頻物項集合至少須比對的次數範例圖 左邊的圖代表候選物項集合,右邊的圖代表資料庫,其中各交易下的所有物項 已事先排序好,使用傳統的Apriori 的演算法,比對各候選物項集合是否為 Tid=1 物項集合的子集合,左邊圖的Count 欄位是各候選物項集合至少須比較的次數。

依圖3.5 資料來說明,要確認左邊候選物項集合是否為 Tid=1 物項集合的子集 合,其步驟如下

1. 比對候選物項集合{a,b},首先找尋物項 a,只比對了 1 次就找到了,然後找

尋物項b,於 Tid=1 的第 2 個位址的物項開始比對,結果發現是物項 c 不必 再往下比對,共比較了2 次,確認候選物項集合{a,b}不是 Tid=1 的子集合。

2. 比對候選物項集合{a,c},找尋物項 a 只比對了 1 次,接者比對物項 c 於 Tid=1

的第2 個位址物項開始比對,結果只比對了 1 次,候選物項集合{a,c}共比對 了2 次,確認候選物項集合{a,c}是 Tid=1 的子集合。

(44)

3. 比對候選物項集合{a,f},找尋物項 a 只比對了 1 次,接者比對物項 c 於 Tid=1

的第2 個位址物項開始比對結果分別比對 c→d→f 共 3 次,所以候選物項集 合{a,f}共比對了 4 次,確認候選物項集合{a,f}是 Tid=1 的子集合。

4. 依上序方法,依序比對了候選物項集合{a,m}、{a,p}、{b,c}、{b,f}、{b,m}、

{b,p}、{c,f}、{c,m}、{c,p}、{f,m}、{f,p}、{m,p}是否為 Tid=1 的子集合,分 別比對了7、8、1、1、1、1、4、7、8、7、8、8 次。

從以上的步驟得知,至少必須比對了2+2+4+7+8+1+1+1+1+4+7+8+7+8+8=69 次 才能確認圖3.5 左邊候選物項集合是否為 Tid=1 的物項集合的子集合,根據以上 的說明可以確認每個候選物項集合最少是1 次,最多是每個交易下的物項個數 的次數,就能判斷是否為一交易的子集合。

使用圖3.5 的資料庫,依各物項於資料庫出現的頻率排序,如圖 3.6

1,2,3,5,6,7,14,15 5

1,4,613,17 4

2,4,10,12,16 3

1,2,3,4,5,14,16 2

1,2,3,5,6,7,9,11 1

Items Tid

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

{5,6}

{4,6}

{4,5}

{3,6}

{3,5}

{3,4}

{2,6}

{2,5}

{2,4}

{2,3}

{1,6}

{1,5}

{1,4 } {1,3}

{1,2}

Itemset

5 4 4 5 4 4 5 4 4 3 5 4 4 3 2 Count

圖 3.6 依各物項的於資料庫出現的頻率由高至低排序

左邊的圖代表候選物項集合,右邊的圖代表資料庫,其中各交易下的所有物項 已事先按資料庫出現的頻率由高至低排序(排序過程請參照 3.1.2)

依圖3.6 資料來說明,要確認左邊候選物項集合是否為 Tid=1 物項集合的子集 合,其步驟如下

(45)

1. 比對候選物項集合{1,2},找尋物項 1 只比對了 1 次,接者比對物項 2 於 Tid=1

的第2 個位址物項開始比對,結果只比對了 1 次,候選物項集合{1,2}共比對 了2 次,確認候選物項集合{1,2}是 Tid=1 的子集合。

2. 比對候選物項集合{1,3},找尋物項 1 只比對了 1 次,接者比對物項 3 於 Tid=1

的第2 個位址物項開始比對,結果分別比對了 2→3 共 2 次,候選物項集合{1,3}

共比對了3 次,確認候選物項集合{1,3}是 Tid=1 的子集合。

3. 比對候選物項集合{1,4},找尋物項 1 只比對了 1 次,接者比對物項 4 於 Tid=1

的第2 個位址物項開始比對,結果分別比對了 2→3→5 共 3 次,發現物項 5 不必再往下比對,確認候選物項集合{1,4}不是 Tid=1 的子集合。

4. 依上序方法,依序比對了候選物項集合{1,5}、{1,6}、{2,3}、{2,4}、{2,5}、

{2,6}、{3,4}、{3,5}、{3,6}、{4,5}、{4,6}、{5,6}是否為 Tid=1 的子集合,分 別比對了4、5、3、4、4、5、4、4、5、4、4、5 次。

從以上的步驟得知,至少必須比對了2+3+4+4+5+3+4+4+5+4+4+5+4+4+5=60 次 才能確認圖3.6 左邊候選物項集合是否為 Tid=1 的物項集合的子集合。

同樣使用圖3.5 的資料庫,使用 SIT 方法排序,並將候選物項集合的第 1 個位址 物項建立索引對映矩陣,如圖3.7

(46)

1,8,9,12,14,15,16,17 5

7,11,13,15,16 4

4,6,10,13,17 3

8,10,12,13,14,16,17 2

1,3,5,12,14,15,16,17 1

Items Tid

{16,17}

{15,17}

{15,16}

{14,17}

{14,16}

{14,15}

{13,17}

{13,16}

{13,15}

{13,14}

{12,17}

{12,16}

{12,15 } {12,14}

{12,13}

Itemset

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Address

{16,17}

{15,17}

{15,16}

{14,17}

{14,16}

{14,15}

{13,17}

{13,16}

{13,15}

{13,14}

{12,17}

{12,16}

{12,15 } {12,14}

{12,13}

Count

0 0 17

15 15 16

14 13 15

12 10 14

9 6 13

5 1 12

0 0 11

0 0 10

0 0 9

0 0 8

0 0 7

0 0 6

0 0 5

0 0 4

0 0 3

0 0 2

0 0 1

End Start Item

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

圖 3.7 依據 SIT 方法排序建立索引編號對映矩陣

依據SIT 排序,將資料庫的物項依出現的頻率由低至高排序,由小至大建立索 引編號,更新成新的資料庫於圖3.7 的左下方的資料庫,然後於每個候選物項 集合的第1 個位址的物項建立索引編號的矩陣,儲存候選物項集合的第 1 個位 址物項的開始與結束位址。

圖3.7 左下方使用 SIT 的排序方法建立新資料庫,並建立索引編號矩陣,其內容 儲存所有的物項編號在各候選物項集合中第1 個位址物項的開始及結束位址,

所以物項編號1~11 不存在於候選物項集合中第 1 個位址的物項中,其開始與結 束位址為0,物項 12 在各候選物項集合中第 1 個位址的物項的開始及結束位址 分別為1、5;物項 13 在各候選物項集合中第 1 個位址的物項的開始及結束位址 分別為6、9,物項 14 在各候選物項集合中第 1 個位址的物項的開始及結束位址 分別為10、12,物項 15 在各候選物項集合中第 1 個物項的開始及結束位址分別 為13、14,物項 16 在各候選物項集合中第 1 個位址的物項的開始及結束位址為 15、15,物項編號 17 不存在於候選物項集合的第 1 個位址的物項中,開始與結

(47)

束位址為0。

當建立完索引對映矩陣之後,接著SIT 使用排序索引的方法找尋高頻物項集合 如圖3.8

1,8,9,12,14,15,16,17 5

7,11,13,15,16 4

4,6,10,13,17 3

8,10,12,13,14,16,17 2

1,3,5,12,14,15,16,17 1

Items Tid

{16,17}

{15,17}

{15,16}

{14,17}

{14,16}

{14,15}

{13,17}

{13,16}

{13,15}

{13,14}

{12,17}

{12,16}

{12,15 } {12,14}

{12,13}

Itemset

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Address

0 0 17

15 15 16

14 13 15

12 10 14

9 6 13

5 1 12

0 0 11

0 0 10

0 0 9

0 0 8

0 0 7

0 0 6

0 0 5

0 0 4

0 0 3

0 0 2

0 0 1

End Start Item

0 17

1 16

1+2=3 15

1+2+3=6 14

1+1+2+3+4=11 12

0 5

0 3

0 1

Count Item

圖 3.8 使用 SIT 的方法,找尋高頻物項集合

使用SIT 方法找尋是以交易下的各物項為主,分別找尋以該物項為首的候選物 項集合,利用索引對映矩陣直接對映,該物項是否存在,如存在,根據索引對 映矩陣的開始與結束位址來直接比對,不必將所有的候選物項集合逐一比對,

至於交易物項的開始位址也是自發現的位址開始比對,不必重頭比對。

依圖3.7 資料來說明,要確認左邊候選物項集合是否為 Tid=1 物項集合的子集 合,其步驟如下

1. Tid=1 的第 1~3 位址的物項 1、3、5,直接對映於索引對映矩陣,發現其開始

與結束位址為0,所以不必比對。

2. Tid=1 的第 4 個位址物項 12,直接對映至索引對映矩陣,發現其開始與結束

位址分別為1、5,得知候選物項集合的第 1~5 位址的集合為{12,13}、{12,14}、

(48)

{12,15}、{12,16}、{12,17}需要比對。

3. 比對步驟 2 所得的 5 個候選物項集合,已經確認候選物項集合的第 1 個位址

12 存在於 Tid=1,所以可直接至這 5 個候選物項集合的第 2 個位址開始比對 物項是否存在於Tid=1 物項集合內,至於 Tid=1 開始比對的位址則在物項 12 之後的位址,其位址為5。

4. 開始比對候選物項集合{12,13},候選物項集合第 2 個位址為物項 13,Tid=1

位址為5 的物項為 14,只比對了 1 次,候選物項集合{12,13}不是 Tid=1 的子 集合

5. 比對候選物項集合{12,14},候選物項集合第 2 個位址為物項 14,Tid=1 位址

為5 的物項為 14,只比對了 1 次,候選物項集合{12,14}是 Tid=1 的子集合

6. 依步驟 4~5 的方法比對了{12,15}、{12,16}、{12,17}分別比對了 2、3、4,所

以共比較了1+1+2+3+4=11 確認以物項 12 為第 1 個位址的候選物項集合比對 了12 次,就能確認這些候選物項集合是否為 Tid=1 的子集合。

7. 依步驟 1~6 的方法比對 Tid=1 的第 5~8 位址的物項 14、15、16、17,以這些

物項為第1 個位址的候選物項集合分別比對了 6、3、1、0 次,就能確認這些 候選物項集合是否為Tid=1 的子集合。

從以上的步驟得知,至少必須比對了11+6+3+1=21 次就能確認候選物項集合是 否為Tid=1 的物項集合的子集合。故依 SIT 方法改良 Aprioi 的效益是能有效的 減少比對次數,所以SIT 的方法排序,依據物項出現於資料庫的次數越高的放 在越後面,則越有效益,剛好與傳統的Apriori 排序順序相反。

3.2.2 MPHP 的索引改良方法

MPHP 於階層 2 找尋高頻物項集合計算時,採用的雜湊函數能確認不會碰撞,

所以完全不需要使用候選物項集合,其產生的Hash table 如圖 3.9

(49)

a,c,d,f,l,m,n,p 5

b,c,k,p,s 4

b,f,h,j,o 3

a,b,c,f,l,m,o 2

a,c,d,f,g,i,m,p 1

Items Tid

1,8,9,12,14,15,16,17 5

7,11,13,15,16 4

4,6,10,13,17 3

8,10,12,13,14,16,17 2

1,3,5,12,14,15,16,17 1

Items Tid

{1,8} {1,9} {1,12} {1,14} {1,15} {1,16}

{1,17} {8,9} {8,12} {8,14} {8,15} {8,16}

{8,17} {9,12} {9,14} {9,15} {9,16} {9,17}

{12,14} {12,15} {12,16} {12,17} {13,15}

{13,16} {13,17} {15,16} {15,17} {16,17}

5

{7,11} {7,13} {7,15} {7,16} {11,13} 11,15}

{11,16} {13,15}{13,16} {15,16}

4

{4,6} {4,10} {4,13} {4,17} {6,10} {6,13}

{6,17} {10,13} {10,17} {13,17}

3

{8,10} {8,12} {8,13} {8,14} {8,16} {8,17}

{10,12} {10,13} {10,14} {40,16} {10,17}

{12,13} {12,14} {12,16} {12,17} {13,14}

{13,16} {13,17} {14,16} {14,17} {16,17}

2

{1,3} {1,5} {1,12} {1,14} {1,15} {1,16}

{1,17} {3,5} {3,12} {3,14} {3,15} {3,16}

{3,17} {12,14} {12,15} {12,16} {12,17}

{14,15} {14,16} {14,17} {15,16} {15,17}

{16,17}

1

Items Tid

圖 3.9 MPHP 的 Hash table

於圖3.9 當中只要使用 MPHP 的雜湊函數,H(i,j)=((i - 1) * (N - 1)) + j - ((i * (i - 1)) / 2) – 1 計算 Hash table 下的所有物項集合,就能直接統計出各物項集合的次數,

但是雜湊函數也可以經索引的方式更為簡化如圖3.10

參考文獻

相關文件

概念:  Hash  Table.

神秘的資料結構

1. In the textbook, pp 224-223, there is a surprising result called Space- filling curve. In addition, note the proof is related with Cantor set in exercise 7. There exists a

• To the right of the Draw mode buttons you find push buttons through which you can access all the functions that you need to define and solve the PDE problem: define

As students have to sketch and compare graphs of various types of functions including trigonometric functions in Learning Objective 9.1 of the Compulsory Part, it is natural to

Chen, The semismooth-related properties of a merit function and a descent method for the nonlinear complementarity problem, Journal of Global Optimization, vol.. Soares, A new

11 (1998) 227–251] for the nonnegative orthant complementarity problem to the general symmet- ric cone complementarity problem (SCCP). We show that the class of merit functions

Establishing the connection between the exact master equation and the non -equilibrium Green functions provides a general approach to explore the non-Markovian