• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
67
0
0

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

全文

(1)

中 華 大 學 碩 士 論 文

題目:應用準高頻項目之二元樹技術於漸進式資 料探勘之研究

Design An Efficient Incremental Data Mining Algorithm Based on Pre_large Technique

系 所 別:資訊管理學系碩士班 學號姓名:M09110008 林仕奇

指導教授:游坤明 博士

中華民國 九十五 年 七 月

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

中文摘要

隨著電子化時代的來臨,處處可見電腦網路系統的普遍使用,一方面帶來工 作效率的提升,另一方面也使得數位資料呈現指數性的成長,雖然電腦系統的硬 體發展進步快速,但始終比不上資料量成長的速度,如何能快速地在龐大的數位 資料中挖掘出有用的資訊是一個相當重要的問題,因此如何發展出有效率的漸進 式資料探勘技術,便成為近年來專家學者關注的研究課題。

本論文主要針對關聯式法則的漸進式探勘演算法進行研究,關聯式法則的漸 進式探勘演算法即是希望能夠藉由保留某些上一次探勘後的相關資訊,能夠不需 要再度處理舊有資料便能夠維持關聯式法則的正確性與有效性。本論文運用尋訪 速度快的二元樹結構,以及用以降低項目在高頻與非高頻之間變動機率的準高頻 (Pre_large)觀念,在盡量減少掃描資料庫的次數情況下,提出一個有效率的、可 靠 的 漸 進 式 探 勘 演 算 法 -Pre_large Descending frequent pattern Binary-tree Algorithm(PDBA),PDBA 不但可以節省相當的探勘時間成本,並可以維持關聯 式法則的有效性。除了提出 PDBA 演算法外,在論文中並比較 PDBA 演算法與 前人所提出的漸進式探勘演算法(DFPBT、AFPIM),經由實驗的結果證明,PDBA 演算法的表現皆比 DFPBT 及 AFPIM 為優,可以節省至少 23%的探勘時間。

關鍵字:資料探勘、關聯式法則、樹狀結構、漸進式、準高頻

(6)

Abstract

The rapid improvement of information technology and extensive use of computer systems have made the electronic-era realized. The ubiquitous computer systems not only promote the efficiency of our work but also bring about the exponential growth of data volume stored. For the comparatively slow development of computer hardware computing capability, it is an important issue to develop a more efficient incremental data mining algorithm.

The thesis focuses on the developing an incremental data mining algorithm of the association rules. We proposed an Pre_large Descending frequent pattern Binary-tree Algorithm(PDBA), PDBA tries to maintain the correctness of the association rules without re-processing the processed data by retaining the last-mined related information. Also, by using the binary tree data structure known for its fast speed of traversing and the Pre_large concept, PDBA cuts down the variation probability of items between high frequency and non-high frequency. PDBA also reduced the number of times needed to scan the database and brought up a more efficient and reliable incremental data mining results of the association rules. For verifying the performance of PDBA, we also implement PDBA along with DFPBT and AFPIM, to compare their efficiency. The experimental results show that PDBA outperforms DFPBT and AFPIM at least 23% in execution time.

Keyword: data mining, association rules, tree structure, incremental, pre_large

(7)

致 謝

研究所生涯就此劃上美好的句點,這幾年的研究所時間,非常感謝我的指導 老師 游坤明老師給予我研究上的支持與生活上的鼓勵,謝謝您!老師。還有莊 東穎老師、許慶賢老師對於我論文的指正與建議,非常感謝他們。也感謝張燕光 老師、王素華老師、劉瑞瓏老師大學時的教導。謝謝我的父母親,也非常謝謝我 的弟弟仕文、女友碧晴的體諒與幫助,讓我專心地完成論文。需要感謝的人實在 太多,感謝所有曾經給我幫助卻忘記提到的一些朋友,謝謝你們!

林仕奇 謹致 中華大學資訊管理學系 碩士班 中華民國九十五年七月

(8)

目錄

第一章 緒論 ...1

第一節 背景與研究動機 ...1

第二節 研究目的 ...2

第三節 研究範圍與限制 ...2

第四節 研究流程 ...3

第五節 論文架構 ...3

第二章 文獻探討 ...4

第一節 資料探勘技術簡介 ...4

第二節 關聯式法則 ...5

第三節 關聯式法則探勘 ...6

第四節 漸進式資料探勘 ...11

第五節 AFPIM 演算法 ...16

第六節 DFPBT 演算法 ...19

第三章 研究設計理念 ...25

第一節 基本概念 ...25

第二節 演算法步驟 ...27

第三節 演算法實例推導 ...34

第四節 PDBA 演算法 ...42

第四章 實驗設計 ...44

第一節 實驗平台 ...44

第二節 資料來源、內容 ...44

第三節 實驗設計 ...47

第五章 實驗及結果 ...49

第一節 演算法效能比較 ...49

第二節 不同準最小支持度的效能表現 ...52

第六章 結論及未來研究方向 ...55

參考文獻...56

(9)

圖目錄

圖 2-1:FP-TREE結構圖...9

圖 2-2:AFOPT 結構圖 ...10

圖 2-3:AFOPT 的PUSH-RIGHT STEP過程 ...11

圖 2-4:FUP 演算法的四種項目狀態...12

圖 2-5:九種新增資料庫後的項目集狀態 ...13

圖 2-6:分群資料所需比對的交易紀錄數量 ...15

圖 2-7:ICTC 新舊資料高頻項比對流程圖 ...16

圖 2-8:掃描資料庫與建立 DFPBT 結構...20

圖 2-9:MERGE LEFT CHILD TREE 架構...20

圖 2-10:DFPBT 漸進式探勘流程...22

圖 3-1:非漸進式演算法流程圖 ...28

圖 3-2:漸進式演算法流程圖 ...31

圖 3-3:掃描資料庫一次判斷高頻項目 ...35

圖 3-4:處理第一筆資料並建立樹狀結構 ...35

圖 3-5:處理第二筆資料並建立樹狀結構 ...36

圖 3-6:範例資料庫樹狀結構 ...36

圖 3-7:探勘{B:5}合併後的樹狀結構...37

圖 3-8:探勘{B:5,C:3}合併的樹狀結構 ...38

圖 3-9:增加新進資料後的高頻與準高頻項目 ...39

圖 3-10:新進資料新增後的 DFPBT...41

圖 4-1:門診診斷資料每月資料量圖 ...47

圖 4-2:系統介面 ...48

圖 5-1:DFPBT、AFPIM、PDBA 演算法探勘時間比較(支持度 0.1%)...49

圖 5-2:較 AFPIM 演算法節省時間百分比 ...50

圖 5-3:DFPBT、AFPIM、PDBA 演算法探勘時間比較(支持度 0.3%)...51

圖 5-4:較 AFPIM 演算法節省時間百分比 ...51

圖 5-5:項目變動位置示意圖 ...52

圖 5-6:不同準支持度下的表現(支持度:0.1%) ...53

圖 5-7:不同準支持度下的表現(支持度:0.3%) ...53

(10)

表目錄

表 2-1:項目集在原資料庫及更新後資料庫中所屬種類組合情況 ...17

表 2-2:DFPBT 結構資料表...21

表 3-1:一次項儲存格式 ...29

表 3-2:舊有資料表內容 ...34

表 3-3:DFPBTTABLE...37

表 3-4:新進資料表內容 ...39

表 3-5:調整高頻順序後的樹狀結構資料表 ...40

表 3-6:新進資料的高頻資料新增到 DFPBTTABLE...41

表 3-7:PDBA 漸進式演算法...42

表 3-8:探勘樹狀結構之函式 ...43

表 4-1:門診診斷紀錄檔資料格式 ...45

表 4-2:轉換後的門診診斷資料表格式 ...46

表 4-3:門診診斷資料每月資料量統計表 ...47

(11)

第一章 緒論

第一節 背景與研究動機

當面對龐大的資料時,無法以人力進行簡單的比對而找出某些有用的 知識,資料探勘即是為了達成這個目的而產生的,對這些原本只是單純存放在電 子媒介的大量資料,提煉出隱含的資訊或知識,以幫助我們達成某些預測的目 的,或發現某些現象與規則。因此有不少學者專家投入資料探勘的研究中,針對 各種不同的需求情況發展出許多提煉萃取資訊或知識的技術。

資料探勘是為了發現有意義之模式或規則,以自動或半自動的方法,對 大量資料進行探勘、分析的流程[2]。資訊科技在近年來的快速進步及電腦系統 的廣泛應用,使得電子化時代來臨,處處可見電腦網路系統的使用,一方面帶來 工作效率的提升,另一方面也使得儲存的資料量呈現指數性的成長,舉凡企業的 銷售或庫存資料、行銷統計;醫院的病歷資料、就診紀錄;網站的會員資料等;

都利用資料庫、資料倉儲等系統儲存在電子媒介中。雖然電腦系統的硬體發展亦 有進步,但始終比不上資料量成長的速度,因此如何發展出更有效率的資料探勘 技術,亦成為一個相當重要的課題。

關聯式法則是資料探勘技術最常見的應用之一,常見的關聯式法則探勘 都是針對靜態的資料做處理,近年來許多研究已提出關於有效率的探勘資料庫的 技術,但是在許多情況下資料量不是一成不變的,隨著交易的持續進行,企業的 日常營運、醫院的每日門診及網站的開放式瀏覽,都使得資料量會呈現日益增加 的情況。

當進行過一次資料探勘,可能使得我們取得了某些資訊,發現了某些現 象;但當這些資料日益增加的同時,某些探勘出的規則可能在新進資料中並未成 立,又或者新進資料可能影響舊資料庫而產生一些新規則;如何維持所萃取出的 資訊仍是正確有效的,便是一個重點。最簡單又直接的辦法,就是重新再對整個

(12)

資料庫做一次資料探勘,但是這樣做不僅探勘成本的增加相當可觀,而且也浪費 了前一次進行資料探勘所找出的資訊。漸進式探勘方法(Incremental Mining)便是 希望藉由保留某些前次探勘的資訊,只需要對異動的資料部分作處理,便可以維 持所萃取出資訊的正確性與一致性的一種技術。

第二節 研究目的

漸進式的資料探勘雖然可以減少許多處理動作,但以往的漸進式資料探勘大 部分還是需要多次的資料庫掃描,尤其是面對龐大的醫病門診資料時,掃描的動 作將會耗費很多時間。一些學者專家研究[5, 19]利用保留一些前次進行探勘的資 訊,在儘量避免重新處理舊有資料的情況下,來減少掃描資料庫的次數,希望只 需要針對新進資料作掃描處理,就能夠達到維持規則有效的目的。近幾年來,有 些學者更提出利用樹狀結構探勘的方式[1, 6, 16] 來有效降低掃描資料庫的次 數,此種方式只要求小量的資料庫掃描,就可以利用樹狀結構的特性迅速地探勘 出規則。本論文亦以此理念進行研究,將利用可以呈現所有資料的緊密樹狀結 構,在減少掃描資料庫的次數情況下,提出一個有效率的、可靠的漸進式探勘方 法,以節省大量的探勘所需的時間成本並維持關聯式法則的正確性與有效性。

第三節 研究範圍與限制

本論文所採用的實驗用資料是由北部某教學醫院提供,針對該院門診資料進 行資料探勘 [3, 4],找出有用的關聯式規則。該院的門診資料特性,醫師對病患 所診斷的疾病個數至多為七個,因此本實驗的資料長度最長為七。此合作對象為 一地區性的醫院,實驗所得到的結果因該地區就診民眾的健康情況而有所差異,

非完全反映其他醫療院所就診狀況。另外本實驗是以每個月門診資料進行漸進式 的資料探勘,除了記錄之前探勘所得到的一項集合的高頻項目外,探勘時用來呈 現資料分布狀況的樹狀結構也會記錄到資料庫裡,以便在下次的資料探勘時能夠 快速還原先前已得到的樹狀結構。

(13)

第四節 研究流程

本論文的研究流程大致可分為下列五個步驟:

1.收集有關資料探勘的相關研究文獻,尋找適合於醫療分析的資料探勘方 式,並構思適合於門診資料探勘的改進方式。

2.改進現有的資料探勘方式,發展出一套漸進式的資料探勘演算法,以應 付當門診資料不斷增加的情況下,能有效低探勘出關聯規則。

3.收集醫師診斷病患的資料,針對資料作預先處理,先過濾掉資料不齊全 或錯誤的紀錄,然後依探勘資料的格式進行轉換,最後依照月份分類成 不同的資料表。

4.利用所開發出來的漸進式資料探勘演算法進行實驗,並分析其結果的正 確性以及其效能。

5.彙整實驗數據製成圖表,探討是否達到預期目標,並思考未來研究方向。

第五節 論文架構

本論文以下章節內容如下:第二章將介紹相關研究所提出的方法。本論文所 提出的演算法及架構則將於第三章詳細說明。第四章將說明本論文將進行的相關 實驗設計項目。接下來在第五章的實驗當中將實作演算法進行實驗並與其他相關 演算法進行分析比較並於第六章討論未來研究方向。

(14)

第二章 文獻探討

資料探勘主要目的就是要能挖掘隱藏在大量資料背後的知識,Agrawal 等人 於 1994 年提出關於關聯式法則探勘的代表性演算法 Apriori 後,後續仍有大量的 論文在探討如何發展一個快速有效的演算法[9],其中較著名的包含有利用分割 且克服(Divide and Conquer)技巧的 FP-Tree[14]以及使用雜湊技術(Hash)的 DHP 演算法[17],其它改進 Candidate itemstes 數目並減少搜尋空間的演算法,如 Closed Frequent Itemsets 等方法[8]。

第一節 資料探勘技術簡介

資料探勘在實務上具有兩大目的:預測(Prediction)和描述(description),前者 是以現有的資料庫資料去預測感興趣但尚未知的值;而後者則是從資料的描述中 解譯人類行為的型樣(pattern)[2]。資料探勘可以此兩大目的分為六種模式:(1)分 類 (Classification) 、 (2) 迴 歸 (Regression) 、 (3) 時 間 序 列 (Time Series) 、 (4) 集 群 (Clustering)、(5)關聯(Association)以及(6)因果(Sequence),以下將對此六種模式做 說明:

(1)分類:根據一些屬性值做計算,依照結果對目標群做分類,例如把會員基本 資料,依特定的屬性值運算分成各類,就可以依照不同的群體規劃推出 滿足不同需求的內容。

(2)迴歸:此方法使用在預測的目的上,為使用連續性的屬性資料來預測一個連 續數值的可能性。

(3)時間序列:主要分析與時間有關的數值,與迴歸相似,但此模式主要是為了 得到一些時間先後順序發生的現象結果。

(4)集群:是一種普遍被使用的描述性工具,它是依據資料項目中的相似度 (similarity metrics)或機率密度(probability density)來尋找自然形成的集 群。其異質性(heterogeneous)資料分成幾群同質性(homogeneous)極高的

(15)

子群體,因此同一子群體中的資料具有類似的特性[2],也具有子群體 間的差異性。

(5)關聯:找出某些事件或項目總是會同時發生的可能性,最常見的應用是超級 市場的例子,它可以分析客戶在每次的交易中那些物品會同時購買,可 利用分析所得的結果來調整營業的策略,所以也有人稱之為「購物籃分 析(Market Basket Analysis)」。

(6)因果:主要用於發現某些事物前後發生的彼此關聯,與關聯式相似,不同處 在於此模式的資料項目以時間來做區隔。例如:顧客購買商品 A 後,

下個禮拜再來購買商品 B 的機率有多少。

一般而言,以上幾種從事資料探勘的任務中,分類、迴歸和時間序列通常被 歸類為監督式學習,具有預測性功能。而關聯和因果則被歸類為非監督式學習,

具有描述性功能。集群則具有監督和非監督式學習的特點,可同時適用預測及描 述性之需求[2]。

第二節 關聯式法則

關聯式法則在資料探勘的技術中佔有相當重要的地位,它主要是用來找出項 目與項目間的關聯性。在商業上的應用常用來分析客戶購買行為,例如:消費者 在購買麵包時也會同時購買牛奶,這就是一種關聯法則。但是通常對於已知的事 實與規則性,我們並不需要透過資料探勘來確認,真正有價值的是能讓我們發現 之前未知而卻存在消費者的行為之中的隱含訊息,這些令人感到興趣的資訊正可 以有效低提供經營業者修正相關銷售策略的參考依據,例如:辦理促銷折扣活 動;具有關聯性的商品擺設在鄰近區域以提升買氣;購物網站的主動式推薦相關 商品等。

若詳細描述關聯式法則各個相關名詞,令

T

={

i

1,

i

2,…,

i

n}表示一筆交易紀 錄,

i

1,

i

2,…,

i

n 為交易紀錄中各個項目(item),由集合

T

中任一個或一個以上的

(16)

項目所結合成之集合稱之為一個項目集(itemset)。一個項目集中所含項目的數 量,則稱為該項目集的長度(length),而一個長度為k的項目集,稱為一個k-項目 集(k-itemset)。資料庫DB中包含項目集X的交易筆數為X在資料庫DB中的支持度 計數值(support count),以 Count(X) 表示。而X 在資料庫DB 中的支持度 (support),則以Count(X)除以DB中的交易總筆數|DB|計算得之,以 Support(X) 表示。若Support(X)大於或等於指定的最小支持度(minimum support)門檻值,則 稱X為DB中一個高頻項目集(frequent itemset);反之則稱X為DB中一個非高頻項 目集(infrequent itemset)。另依照X的長度k亦可稱之為frequent k-itemset。

每一個關聯規則皆存在一個支持度和信賴度(confidence),其中支持度表示 在資料庫中包含X的交易筆數在資料庫中的百分比。而信賴度則表示在包含X的 交易中,包含Y的條件機率值,如X

Y的信賴度即是Support(X∪Y)除以Support(X) 表示在X出現的機率下,X與Y同時出現的條件機率。為避免取出過多而且無效的 關聯規則,一般的做法是取出支持度大於或等於指定的最小支持度門檻值的高頻 項目集,且其信賴度亦大於或等於指定的最小信賴度(minimum confidence)門檻 值。

關聯式法則的探勘過程可分為下列兩部份:

1. 探勘高頻項目集:找出資料庫中支持度值大於或等於最小支持度門檻值 之所有高頻項目集。

2. 推論關聯規則:計算每一個長度大於或等於2的高頻項目集的信賴度,

找出大於或等於最小信賴度門檻值的關聯規則。

由於第二部份的問題比較容易解決,關聯式法則的探勘研究大多著重在第一 部份的演算法改進,因此本論文亦著重在探勘高頻項目集之漸進式探勘演算法的 研究。

第三節 關聯式法則探勘

(17)

在尋找高頻項目集的演算法方面,早期提出來的方法大都是類似 Apriori 的 方法,稱之為 Apriori- like 方法[1]。這些方法都是先掃描資料庫後,算出所有的 1-項目集之支持度,再找出大於或等於最小支持度門檻值的項目集,即為高頻 1-項目集(frequent 1-itemsets )。接下來是第二次的遞迴,以高頻 1-項目集組合成 候選 2-項目集(candidate2-itemsets)[9];再次掃描資料庫,計算候選 2-項目集之 支持度值,過濾出大於或等於最小支持度門檻值之常見 2-項目集(frequent 2- itemset)。反覆進行相同的步驟,直到沒有組合出更長的候選項目集才停止。這 類 Apriori-like 方法有以下兩個缺點[1]:

1. 每次的處理需要重複掃描資料庫,花費相當多的時間在 I/O 動作。

2. 每一次會產生大量的候選項目集。

現今關聯式法則探勘的演算法可分成兩類[16]:(1)候選產生與測試方法(the candidate-and-test approach):此方法是產生候選項目集,然後針對每一個候選項 目集,掃描資料庫判斷是否為高頻項目集,再從找出的高頻項目集產生出更長的 候選項目集,反覆掃描資料庫進行相同的處理。(2)項目成長方法(the pattern growth approach):因為重複掃描資料庫的 I/O 動作相當耗時,因此有一些學者提 出減少資料庫掃描次數的探勘演算法以提高效率,這些演算法大部分是對資料庫 掃描一至二次,然後將掃描得出的相關資訊利用另一種資料結構存放起來,如陣 列(Array)或樹(Tree)。這些資料結構大部分是儲存剛剛掃描資料庫得到的高頻項 目資訊,經由反覆搜尋所建立的這個資料結構,來產生所有的高頻項目集。也因 為這些資料結構的做法大都是適合記憶體容量的,因此可以避免直接的硬體存 取。

第一類的方式主要減少需比對的候選項目集數量,藉由利用 k-itemset 來產 生需要確認的 k+1-itemset 候選項目集,減少掃描資料庫的次數。而第二類的方 式則是直接掃描資料庫一~二次取得相關資訊,因為高頻項目集的子集合一定不 是非高頻的項目集合,所以只要藉由較少次數的掃描得到 1 項次的高頻項目 (Frequent item),再針對這些高頻資訊去得到所有高頻項目集。因此第二類的方

(18)

法除了直接減少資料庫的掃描次數外,所利用來建立相關高頻資訊的資料結構與 搜尋的方式會是決定演算法效能的關鍵。

Jiawei Han 等人於 2000 年提出 FP(Frequent Pattern)-Growth 演算法[14],其 主要的方法是由掃描資料庫兩次後,把資料庫裡高頻項目狀況建立在一個頻繁樣 式的樹狀資料結構中,稱為 Frequent Pattern Tree(FP-tree),接下來反覆搜尋建構 成的樹狀結構以求得所有高頻項目集合。FP-tree 利用只儲存 1 次的高頻項目以 及項目間相同的緣故,壓縮了原始資料庫龐大的空間需求,因此所花費的時間與 空間遠遠比需要產生候選項目集及多次掃描資料庫的演算法更有效率。以下二點 為此演算法的特性:

(1) 節點連結特性(Node-link property):藉由把相同項目的節點相連起來,方 便搜尋時快速找出含有某項目開頭的高頻資訊。

(2) 字首路徑特性(Prefix path property):計算含有某項目的高頻項目集合頻 率,只需掃描含有此項目為首的子路徑,且路徑上節點的次數與該項目 的次數相同。

FP-Growth 是由下往上(Bottom-Up)的搜尋方式,FP-tree 的架構則是降冪 (Descending)的建構方式,FP-Growth 在第一次掃描資料庫,求得所有 1 次項目 的次數,符合設定的支持度才變成高頻項目,依這些高頻項目出現的次數由高到 低排序建立於 Header Table 中,其中包含有項目名稱與用來連結 FP-tree 項目第 一次出現的連結。第二次掃描資料庫時,讀入每筆交易紀錄的高頻項目,依 Header Table 順序排列,建立出 FP-tree,每個節點包含有項目名稱、項目的次數、用來 連結其它子路徑上相同項目的連結,在建立 FP-tree 時如果節點上的項目不同或 者沒有此項目節點,就會另外建立另一分支的路徑,FP-tree 的架構圖如圖 2-1。

(19)

圖 2-1:FP-tree 結構圖

【資料來源:Jiawei Han(2000)】

FP-Growth 搜尋的時候,會從項目次數低的開始搜尋,也就是從 Header Table 最後一個項目開始搜尋到第一個項目。因為 FP-tree 是由高到低降冪的方式排 列,因此對某個項目做完搜尋完畢後,下一個項目的搜尋就不會包含之前搜尋過 的項目。不過在探勘 FP-tree 時需要產生額外的 Conditional FP-tree 以搜尋出含有 某項目的其他高頻項目集組合,因此增加了額外儲存的空間。

Wang 等人[20]提出比 FP-Growth 更有效率的 TD-FP-Growth 演算法,從 FP-tree 中探勘出常見項目集。TD-FP-Growth 演算法利用在 FP-tree 結構的 Header table 增加一個計數欄(count),用來記錄各常見 1-項目集的支持度計數值。

不同於 FP-Growth 的由項目次數低往上搜尋的方式,TD-FP-Growth 演算法是從 Header table 中由上而下(Top-Down)的順序進行常見項目集的探勘,採用建立子 Header Table 的方式

TD-FP-Growth 演算法在探勘過程的每一次遞迴處理,不 需產生新的條件 FP-tree,只要建立子 Header table,比 FP-Growth 演算法節省主 記憶體空間及 CPU 執行時間。不論在儲存空間或執行效率上,TD-FP-Growth 演 算法皆較 FP-Growth 演算法為佳。

AFOPT(Ascending Frequency Ordered Prefix-tree)演算法[16]是 2003 年由 Guimei Liu 等人提出的,Guimei 等人提出一種新的資料結構為 AFOPT(Ascending Frequency Ordered Prefix-tree),這種資料結構對於緊湊或稀疏的資料庫都能有效

(20)

率地進行探勘。此演算法並利用了陣列儲存此樹狀上單一路徑的資料,以節省儲 存的空間和建構 AFOPT 的成本。此方法不像 FP-growth 演算法需要花費時間去 建立節點的連結和表頭表格,所以節省了不少建構的成本。

AFOPT 的運作原理為先掃描資料庫一次求得高頻 1-項目集,然後以各項目 的出現的頻率升冪(Ascending)排列,再次掃描資料庫,每一筆交易資料依序讀入 記憶體,刪除非高頻的項目再以剛剛的升冪排列順序排序,然後建立 AFOPT 樹 狀結構。此樹狀結構的每個節點含有項目名稱和此項目的出現次數,如果樹狀結 構的某子樹狀結構為單一分支則以陣列的方式儲存此子樹狀結構。AFOPT 演算 法的樹狀資料結構如圖 2-2:

圖 2-2:AFOPT 結構圖

【資料來源:Guimei Liu (2003)】

AFOPT 演算法使用良好的升冪排列結構和 Top-Down 搜尋方式求得所有的 高頻項目集合,這樣的組合使得對不同特性的資料庫都能做到有效率低探勘。資 料搜尋會從樹狀結構根節點下的第一個子樹狀結構開始搜尋,當第一個子樹狀結 構搜尋完畢,含有第一節點為首的高頻項目集就被找尋出來,然後再把這節點下 的其他子樹狀結構合併(Merge)到右邊的子樹狀結構,因為這些樹狀結構還需用 來計算其他項目集真正的支持度,這個動作稱為 push-right step,如圖 2-3。不像 FP-growth 演算法需要額外的成本建構 Conditional FP-tree,AFOPT 演算法在掃 描的時候只有更新節點的支持度與節點的連結,沒有額外空間的需求。

(21)

圖 2-3:AFOPT 的 push-right step 過程

【資料來源:Guimei Liu (2003)】

AFOPT 的步驟如下:

步驟 1:掃描資料庫判斷每個項目的支持度是否符合最小支持度,以求得高 頻 1-項目集。

步驟 2:依照高頻 1-項目集的出現次數升冪排列。

步驟 3:掃描資料庫讀取每一筆資料,移除非高頻 1-項目集,之後以第二步 的排列順序排序並建立 AFOPT 樹狀結構。

步驟 4:掃描 AFOPT 第一個子樹狀結構,計算項目集的支持度以得到含有 第一個節點的項目為首的高頻項目集,再把此節點下子樹狀結構合 併到右邊其他的樹狀結構。

步驟 5:同第四個步驟,掃描 AFOPT 其他的樹狀結構以求得所有高頻項目 集。

第四節 漸進式資料探勘

面對資料量日益增加的情況,漸進式探勘方法也變得相對重要,許多漸進式 探勘演算法相繼被提出。其中 FUP[12]演算法算是最早被提出來針對漸進式資料 作探勘的演算法,主要還是以 Apriori 演算法為基礎,在每一次的探勘過後都需

(22)

要保留前次探勘所得出的資訊,包括各項目集的支持度計數值及所有高頻項目 集。其分析中針對項目集在新舊資料中的歸屬高頻或非高頻,將處理情況分成了 四個部份:

圖 2-4:FUP 演算法的四種項目狀態

狀態一:項目集在原有資料庫為高頻,在新增的資料庫裡亦為高頻,因此項 目集必為高頻項目集。

狀態二:雖然項目集在新資料庫中為非高頻,但可由上次保留的高頻項目集 資訊得出項目集在舊有資料庫的計數值,併同此次掃描的計數值即 可算出項目集在更新後的資料庫中屬於高頻或非高頻。

狀態三:此部份由於並無法藉由所保留的資訊得出項目集在原有資料庫的相 關資訊,因此就必須再重新掃描原有資料庫。

狀態四:項目集在新舊資料庫皆為非高頻,因此亦為非高頻不需處理。

由這四種狀態來觀察,只有在狀態三的時候才需要再重新掃描原有資料庫,

藉由這種分類處理的方式降低重新掃描資料庫的次數。當資料庫不是新增資料而 是刪除某部分資料時,維持關聯式法則的正確性在 FUP2[13]才提出作法,FUP2 一樣利用四種狀態的判斷,當項目集在原有資料庫為非高頻項目,而在刪除的資 料中為高頻時,才需要重新做掃描原有資料庫的動作。這類 Apriori-like 的漸進

New DB

Original DB

高頻

高頻

非高頻

非高頻

狀態四 狀態二

狀態三

狀態一

(23)

式探勘方法雖然避免了重複掃描資料庫的次數,但是在作法上仍使用需要產生相 當多的候選項目集,並再加以確認是否為高頻項目集的方法。

到了 1999 年 UWEP(Update With Early Pruning)[11]演算法被提出,使用了一 個利用額外儲存資訊的技術以提升執行效率,將每個項目在交易資料庫中出現的 所有交易紀錄,以一個稱為 tidlist 的鏈結串列結構記錄這些交易紀錄識別碼,在 每次掃描資料庫的時候建立這些 tidlist 紀錄,在接下來的處理中利用這些 tidlist 的資訊計算候選項目集的支持度;相較於 FUP 演算法,UWEP 的效率已有改善,

但其所建立的 tidlist 結構需要佔用大量的記憶體空間。

王慶堯[8]則提出了一個準大項目集的概念,在最小支持度外,另外訂一個 低於做小支持度的門檻稱為準最小支持度(pre_large),這個運作原理相當於定義 一個高支持度與一個低支持度,在兩個門檻值的區隔下,項目集的歸類由 FUP 演算法的兩類增加到三類,分別是高頻項目集、準高頻項目集、非高頻項目集。

經過這樣的分類方法後,項目集所會遭遇到的狀態則有九種,如圖示:

圖 2-5:九種新增資料庫後的項目集狀態

【資料來源:王慶堯 (2000)】

針對每一次的處理後,有關高頻及準高頻的相關資訊皆被記錄下來,藉由這 樣設定另一個較低門檻值增加項目集所分佈的狀態,並且保留了比單純記錄高頻 的較多資訊,只有在 Case7 或 Case8 的時候才需要去掃描舊資料庫。其研究中上

(24)

證明了兩個公式,當新增或刪除的資料量小於這兩個公式所計算出的數值時,不 需掃描舊資料庫即可探勘出更新後的關聯式法則,公式如下:

公式一:

u l u

S DB S

t S

×

= − 1

) (

公式二:

u l u

S

DB S

q S − ×

= ( )

其中S 表示最小支持度,u S 表示準最小支持度。當新增資料的比數小於等l

t

或刪除的資料筆數小於等於

q

時,可以不需掃描原資料庫。

2001年G. Lee等人提出一個利用位元向量的方式探勘關聯式法則的作法,利 用DLG*演算法[15]為DB中的每個1-項目集建立一個位元向量(bit vectors),其長 度等於資料庫中交易資料的筆數,位元向量內容則表示該項目集出現在DB中各 交易紀錄的情況,可加速項目集的支持度計數值之計算,之後產生項目間的關聯 圖(association graph),用來表示由常見1-項目集組合成常見2-項目集的關係,藉 由關聯圖產生常見項目集。利用這種方式可以減少候選項目集的產生數量,但是 為項目集建立位元向量的方式需耗費大量儲存空間。

Incremental Clustering Table Counting(ICTC)[5]是以 TBCP 演算法[7]為基礎 建構出的一個漸進式資料探勘的演算法。此演算法保留 TBCP 利用資料長度分群 的特性,與提前決定高頻項目集合的方式,並且利用 FUP 演算法[12]所提出的漸 進式探勘判斷方法。因為此演算法利用資料分群的特性,預先把交易紀錄中的資 料長度進行分類,因此在進行候選項目集合的比對時,是依據候選項目集的長度 進行對分群資料表的資料探勘,而不是整個資料庫,可以直接跳過沒有用的分群 資料表,針對可以成為高頻項目集合的資料進行掃描動作。各層比對的交易紀錄 數量如圖,從圖中可以了解,掃描的資料筆數會因為分群的關係,使需要掃描的 目標筆數變少。

(25)

圖 2-6:分群資料所需比對的交易紀錄數量

【資料來源:梅志航 (2004)】

ICTC 演算法的流程,依據其功能可以分成五大階段:

一、 設定支持度:

在進行關聯式法則探勘之前,使用者需要定義出現的頻率為多少,才是 所關心的高頻項目集合。依照此支持度,演算法會去探勘出出現次數有大於 或等於支持度的項目集合,

二、 找尋高頻項目集合:

此階段可以分成兩個部分:1.依據資料長度分群 2.找尋高頻項目集合。

原始要探勘的資料會先依照資料的長度做分群,以後進行候選項目集搜尋 時,就可以只掃描大於或等於資料長度的分群資料表,必不需整個資料庫做 掃描的動作。

三、 比對高頻項目集合:

因為 ICTC 為漸進式探勘演算法,此方法會把以前探勘過的高頻資料記 錄下來,在進行之後的探勘時,會把正在探勘的候選項目集合與之前的高頻 資料,進行相互比對的動作,可以很容易知道哪些候選項目點是高頻項目集 合,而且藉由相互比對就可以知道要不要重新掃描舊有的資料,以避免重覆 掃描資料庫。新舊資料高頻項目比對的流程如圖 2-7。

(26)

圖 2-7:ICTC 新舊資料高頻項比對流程圖

【資料來源:梅志航 (2004)】

四、 存入或取消高頻項目集合:

此步驟為決定漸進式掃描之後,哪些資料是成為最新的高頻項目集合,

然後就必須修改現有的高頻紀錄,並修改其累積的已掃描次數與之前掃描到 哪一個資料表。對於以前是高頻變成非高頻的項目集合予以刪除,並新增新 進的高頻項目集合與其紀錄。經由這些紀錄可以非常快速知道高頻項目集的 次數與掃描到哪個資料表。

五、 合併新舊資料:

當新進的資料探勘完畢後,且高頻項目集合探勘完成,新進資料與舊有 資料中的高頻項目會加總起來,變成高頻項目集合的次數,而新進資料與舊 有資料的交易紀錄也必須進行合併動作,成為下一次進行漸進式資料探勘的 歷史資料。

第五節 AFPIM 演算法

(27)

FP-tree 以達到漸進式資料探勘目的的演算法。在資料結構方面,其利用 FP-growth 演算法所用來建立資料相關資訊的 FP-tree 儲存相關訊息,另外亦採用了 Pre_large 的概念,除了定義最小支持度外,另需定義一個低於最小支持度的準最 小支持度。FP-tree 由達到最小支持度的高頻 1-項目集與達到準最小支持度的準 高頻 1-項目集所構成的,這樣的方法可以減低掃描原始資料庫的機會,但相對會 增加了 FP-tree 所需紀錄的空間。另外並儲存每個一次項(1-itemset)出現的次數,

當新增或刪除資料庫時便能夠快速地得到哪些項目為高頻 1-項目集、準高頻 1- 項目集。因為採用了 Pre_large 的概念,每個項目在原始資料庫及更新過的資料 庫中可能是高頻 1-項目集、準高頻 1-項目集或非高頻 1-項目集,因此探勘的時 候共有九種狀況,如表 2-1。

表 2-1:項目集在原資料庫及更新後資料庫中所屬種類組合情況

狀況 原始資料庫 DB 更新後的資料 UD UD 之建構方式

一 X 為高頻 1-項目集 X 為高頻 1-項目集 依異動資料調整 FP-tree 二 X 為高頻 1-項目集 X 為準高頻 1-項目集 依異動資料調整 FP-tree 三 X 為高頻 1-項目集 X 為非高頻 1-項目集 將 X 從 FP-tree 移除

X 為準高頻 1-項目集 X 為高頻 1-項目集 若 X 在 FP-tree 中,依異動 資料調整 FP-tree,否則需 掃描 UD 一次重建 FP-tree 五 X 為準高頻 1-項目集 X 為準高頻 1-項目集 若 X 在 FP-tree 中,依異動

資料調整 FP-tree

六 X 為準高頻 1-項目集 X 為非高頻 1-項目集 若 X 在 FP-tree 中,將 X 從 FP-tree 移除

七 X 為非高頻 1-項目集 X 為高頻 1-項目集 需 掃 描 UD 一 次 重 建 FP-tree

八 X 為非高頻 1-項目集 X 為準高頻 1-項目集 X 不影響 FP-tree 九 X 為非高頻 1-項目集 X 為非高頻 1-項目集 X 不影響 FP-tree

【資料來源:謝水鳳(2002)】

(28)

其研究並採用所謂偷懶式(lazy)掃描,也就是只在絕對需要的時候才進行掃 描資料庫,例如項目集由原資料庫的非高頻到新增資料的準高頻,因為不影響關 聯式法則的成立所以不重新掃描資料庫。因此只有第七種狀況 X 原先為非高頻 1-項目集,更新後 X 為高頻 1-項目集,或者第四種狀況,X 為準高頻 1-項目集 且不存在 FP-tree 中,而更新資料庫後 X 為高頻 1-項目集,這兩種情況才需重新 掃描資料庫一遍重建 FP-tree,其它的情況只需依更新的資料庫調整 FP-tree。

另外在更新後 FP-tree 項目出現次數的順序有所不同者,則採用泡沫排序法 (bubble sort)來兩兩交換 FP-tree 中節點的位置,當交換的節點還有父節點或子節 點時,使用新增另一節點或者與其他節點合併的方法來達到正確更新 FP-tree 架 構。

AFPIM 演算法使用調整 FP-tree 結構來做到漸進式的功用,至於搜尋的方法 依然使用 FP-growth 的方法,其整體步驟如下:

步驟 1:讀取原始資料庫所儲存下來的所有 1-項目集及其在原始資料庫 DB 中出現的次數。

步驟 2:掃描異動的資料庫,計算出異動資料庫所有項目出現的次數,整合 步驟 1 的資料得到更新後所有項目的出現次數,依出現的次數得到 高頻的項目與準高頻的項目。

步驟 3:判斷更新後資料庫的所有高頻 1-項目集是否存在於 FP-tree 之 header-table 中。

步驟 3.1:假如有任一高頻 1-項目集不存在於原先的 header-table,則重新掃 描資料庫,得到高頻 1-項目集與準高頻 1-項目集,然後重建 FP-tree。

步驟 3.2:假如所有高頻 1-項目集都存在於原先的 header-table,則更新 FP-tree。

步驟 3.2.1:自 FP-tree 中移除非高頻 1-項目集。

步驟 3.2.2:依項目出現次數之降冪順序,調整 FP-tree 中節點的順序。

(29)

步驟 3.2.3:第二次掃描異動的資料庫,將項目集從 FP-tree 新增或刪除,得 到完整的 FP-tree。

步驟 4:分別套用 FP-growth 演算法[14]及 Top-down FP-growth 演算法[20]

求得高頻項目集。

第六節 DFPBT 演算法

DFPBT(Descending Frequent Patterns Binary Tree)為莊文宗[6]於 2005 年提出 的資料探勘演算法,包含靜態資料探勘與漸進式探勘演算法,其演算法的特性如 下:

(1) Left Child-Right Sibling Tree 樹狀結構:

掃描資料庫第一次所有一次項的計數值,之後掃描資料庫第二次判斷每筆交 易資料含有哪些高頻項目並建立一個 Header Table 的資料表,將一次項依照支持 度高低降冪排列,將這些含高頻一次項的紀錄儲存在一個樹狀結構中,此樹狀結 構是一個左子-右兄樹(Left Child-Right Sibling Tree)。此種樹狀結構上的每個節點 (Node)最多包含有一個左邊的節點與一個右邊的節點,利用樹狀結構裡左邊的節 點為上一個節點的子節點,而右邊的節點和同一層的其他節點是兄弟節點,也同 樣是上一層節點的子節點之特性,建構出有順序性的資料排列樣式。

左節點連結方式則是由項目次數從高到低採降冪(Descending) 排列,右節點 的連結方式同樣由項目次數從高到低方式連結起來,所以我們的演算法所用到的 樹狀結構上每個節點,包含有項目名稱(Item)、項目次數(Count)、左節點連結(Left Child Link)與右節點連結(Right Sibling Link),對於樹狀的排列順序,DFPBT 是 依項目次數的高低來排列,讀入一筆交易資料的高頻項目,依項目次數的高低順 序排列後,開始建立 DFPBT 結構,當讀入的項目已存在於某子樹的節點上,則 把此節點的次數加 1,然後讀入下一個項目;反之,依高頻項目產生另一個分支 的節點,然後再繼續讀入下一個項目,建構出的樹狀結構如圖 2-8。

(30)

圖 2-8:掃描資料庫與建立 DFPBT 結構

【資料來源:莊文宗(2005)】

(2) 合併左子樹(Merge Left Child Tree):

採用了與 AFOPT 演算法合併的方法,利用合併左子樹(Merge Left Child Tree) 的方式,避免產生額外的樹狀結構,以節省空間成本。在所提出的 DFPBT 結構 上,每個節點的右節點是依照 Header Table 的次數順序排列,因此某個項目節點 的右節點的其他分支不會再出現此項目節點,但是此節點的左節點及左節點的其 他分支可能包含其他節點的分支,因此需要把此節點下的左節點分支合併到此節 點的右節點分支,如圖 2-9。如此才能讓探勘演算法正確挖掘出所有高頻項目集 合。

圖 2-9:Merge Left Child Tree 架構

【資料來源:莊文宗(2005)】

(31)

(3) 快速探勘高頻項目集合:

因為 DFPBT 是依降冪的方式由高到低排序,因此在搜尋的時候也同樣由 DFPBT 的最上面節點開始搜尋,先搜尋左節點再搜尋右節點的方式探勘出所有 高頻項目集合。而因為 DFPBT 是從次數高的項目排列到次數低的項目,因此上 一層的節點必定大於或等於其左節點的項目次數。我們可以得到一個規則:某一 節點如果沒有符合支持度,其左節點的所有分支也不會符合支持度的要求。所以 我們在進行探勘高頻項目集的時候,只要搜尋到沒有大於支持度的節點為止,就 不用向左節點繼續搜尋下去,因為其節點有左節點的項目次數必定小於支持度。

(4) 快速回復 DFPBT:

當完成一次資料探勘後,可能需要一段時間之後,才會再進行新增資料的漸 進式探勘,所以把探勘過程所建立的 DFPBT 儲存起來,以方便下一次探勘時快 速得到以前探勘的高頻紀錄,為了方便儲存,以及之後 DFPBT 會越來越大,因 此使用關聯式資料庫來 DFPBT。如表 2-2。

表 2-2:DFPBT 結構資料表

【資料來源:莊文宗(2005)】

表 2-2 為上面圖 2-9 所舉例的 DFPBT 儲存入資料庫的結果,表格上的 id 為

(32)

主索引鍵,欄位症狀 1~症狀 7 為資料項目,Support 為此列高頻項目出現的次數。

另外,儲存 DFPBT 是使用升冪的排列,從此表可以看到樹狀右邊節點儲存在資 料庫的前面,比較左邊的節點則儲存在資料庫後面。因為 DFPBT 建構出的樹狀 結構是採降冪方式排列,因此從資料庫依序讀回 DFPBT 時,都是插入到最左邊 的節點,而不用一個一個比對到最後一個節點才新增另一個新節點,這樣可以很 快地還原 DFPBT。

此外這個做法有另一個優點,在進行漸進式探勘的時候,大部分都會有一些 高頻項目在當時變成了非高頻項目,或者是非高頻項目在當時變成高頻項目了,

而這些高頻變成非高頻的項目或非高頻變成高頻的項目大部分都出現在出現次 數與支持度門檻次數相近的項目上,因此把這些最有可能變動的項目放在前面的 話,在搜尋的時候就可以很快的找到這些項目進行新增、刪除,因此儘早處理掉 該處理的項目。

其漸進式演算法流程如下:

圖 2-10:DFPBT 漸進式探勘流程

【資料來源:莊文宗(2005)】

(33)

(1) 設定支持度與選擇探勘新進資料來源:

需要先設定門檻的支持度,支持度的設定,除了要注意資料庫大小外,也要 視資料庫的特性為一個決定支持度的重要依據。進行資料庫探勘的時點,大部分 都是累積到一定數量的資料再進行資料探勘,太小的資料量,找出來的關聯式法 則會無法代表整個資料庫特性。設定完支持度之後,再選擇所要探勘的資料來源。

(2) 搜尋高頻項目:

在每一次資料探勘的時候,為了避免再一次掃描舊有的資料,因此我們會把 這一次探勘得到的每個項目出現的次數記錄起來,當有新進資料新增時,只需針 對新進資料進行掃描,再把掃描新進資料所得到的項目次數與前一次探勘的紀錄 加總,就可以得到整個新舊資料庫的每個項目次數,再依支持度的設定,找出符 合門檻的高頻項目,並把這些高頻項目記錄下來,以便接下來的步驟使用。

(3) 新增、刪除高頻項目:

在進行新的資料探勘時,有些原本是高頻的項目會變成非高頻的項目,而非 高頻的項目會變成高頻項目,利用上一次記錄下來的高頻項目資料與新得到的高 頻項目做比對,來找出有哪些一次項產生變動,然後一一針對這些項目,更新 DFPBT Table。此外會額外建立一個表格,儲存含有非高頻項目的交易紀錄 (Infrequent Transactions Table),任一筆紀錄只要含有一個以上的非高頻項目,即 會被儲存到這個資料表。當有高頻項目的異動時會更新此表格。針對每一個刪除 的高頻項目,判斷刪除的高頻項目之交易紀錄是否已存在於非高頻交易紀錄表格 中,如果沒有的話,則新增此筆交易紀錄;而新增的高頻項目,則需判斷該筆交 易紀錄是否都為高頻,然後從非高頻交易紀錄表格移除此筆交易紀錄中。

(4) 調整 DFPBT Table 順序:

在新增資料後,不只是高頻與非高頻之間的變動,高頻項目的次數也就是支 持度也會跟著變動,因此會影響高頻項目的順序,所以還要調整 DFPBT Table,

使它能夠依照新的高頻順序來排序,這樣在建立 DFPBT 時才能依照正確的順序 建構出來。

(34)

(5) 建立 DFPBT:

經由上一步驟新增、刪除高頻項目後得到一個 DFPBT 暫存表格,另外在這 一步驟,會掃描新進資料第二次,第一次計算所有新增資料的一次項計數值並與 保留的舊一次項計數值作處理以判斷高頻與非高頻之間的變動。第二次掃描則判 斷每一筆交易紀錄含有哪些高頻項目,排序之後,新增到 DFPBT Table 中,並把 含有非高頻的交易紀錄新增到非高頻交易紀錄表格中。再把這一表格依照我們定 義的資料結構與高頻項目順序依序建立成 DFPBT 樹狀結構,建立完成的樹狀結 構,就可以進行探勘高頻項目集。之後還需要搜尋一次 DFPBT,把完整的 DFPBT 資訊,重新寫回資料庫的 DFPBT Table 中,以讓下一次探勘得到保留的 DFPBT 結構資訊。

(6) 搜尋 DFPBT:

建立完成的 DFPBT 樹狀結構,會包含有整個舊有資料庫與新進資料庫的高 頻資訊,接下來只要搜尋整個 DFPBT 就可以得到所有的高頻項目集合,而搜尋 的方式,與非漸進式演算法的相同,先從項目次數較多的項目開始搜尋,再搜尋 項目次數較少的項目,而在搜尋樹的左節點分支時,會先把左節點的所有分支合 併到右邊的節點,以找出正確的所有高頻項目集合。

(7) 得到高頻項目集合:

探勘整個 DFPBT 得到所有高頻項目集合,再經由一些分析去產生關聯式法 則。

其作法利用了可以快速尋訪的二元樹結構儲存相關資訊,在探勘關聯式法則 時相對的加快了尋訪樹狀結構的速度,且在處理項目間的異動時,針對其所保留 的 DFPBT 結構資料表做處理後再將資訊建成樹的作法,相較於 AFPIM 將舊資 料建構成樹狀結構後,再針對每一個需要調整的節點去處理來的快速。不過在為 了避免重複掃描舊資料庫的作法上,採用的 Infrequent Table 雖然必定小於或等於 舊資料庫的資料筆數,但因為只要有一個項目為非高頻即成立的條件太低,相對 低並無法減少太多需比對的資料。

(35)

第三章 研究設計理念

本論文主要針對關聯式法則的漸進式探勘演算法進行研究,因為資訊系統的 大量運用及交易的持續進行,資料探勘的標的資料量日益龐大,關聯式法則的漸 進式探勘演算法即是希望能夠藉由保留某些上一次探勘後的相關資訊,能夠不需 要再度處理舊有資料便能夠維持關聯式法則的正確性。本論文亦針對這點進行研 究,利用尋訪速度快的二元樹結構及用以降低項目在高頻與非高頻之間變動機率 的準高頻(Pre_large)觀念,提出準高頻頻繁項目降冪二元樹演算法(Pre_large Descending frequent pattern Binary-tree Algorithm, PDBA)漸進式探勘演算法,

PDBA 不但可以節省相當的探勘時間成本,並可以維持關聯式法則的有效性。

第一節 基本概念

由文獻探討中我們知道了兩種關聯式法則探勘的方式,相較之下,當資料量 龐大的時候,盡量減少掃描資料庫的次數是較好的作法,因此我們選擇項目成長 方法作為我們演算法的基礎。利用可以壓縮儲存空間來顯示整個資料庫相關訊息 的樹狀結構體,不僅適合在記憶體中直接運作以減少直接的硬體存取,並且避免 了循環產生大量候選項目集並做掃描資料庫進行比對的作法。

同樣利用樹狀結構儲存資訊的 AFPIM 演算法以 FP-growth 演算法的 FP-tree 結構儲存資料,在建立結構時需要另外花費時間建立 Header Table 的資訊,且在 探勘過程不論是套用 FP-growth 或 TP-FP-growth 演算法,都需要額外建立 Condition Table 或是子節點的 Header Table,將佔用了大量的記憶體空間;相較 於這種作法,DFPBT 演算法不需要建立額外資訊,而且其二元樹的結構對於節 點間的尋訪更為快速。

對於避免重新掃描舊資料庫的問題,AFPIM 採用了準高頻(pre_large)的概 念,只有在絕對必要的時候,也就是舊準高頻項目在更新後的資料庫為高頻但不 在 FP-tree 結構中或舊非高頻在更新資料庫中變為高頻,才需要重新掃描舊資料

(36)

庫,因為多了一個門檻值,因此使項目在高頻與非高頻間的變動情況變少;而 DFPBT 雖然說完全不需要掃描舊資料庫,但是其實增加了一個叫做 Infrequent Table 的資料儲存,當掃描到某一筆紀錄中含有一個以上的非高頻項目時,此筆 紀錄即必須被複製到 Infrequent Table 中,等於是複製了一個較小的「舊資料庫」, 不過因為只要含有一個非高頻項即成立的條件太容易達到,在資料較鬆散或交易 紀錄長度較長的資料庫中表現可能不好。我們也將在提出的演算法中採用準高頻 (Pre_large)的觀念,相較之下採用準高頻的觀念雖然會導致需納入建樹元素數量 的增加,將增大建樹所需的時間,不過卻可以大大低降低重新掃描資料庫的機 會。納入演算法中的作法,將採用 AFPIM 演算法所提出的偷懶式掃描(Lazy Scanning),當項目由舊資料庫中的非高頻項目,到更新後資料庫的準高頻項目 時,雖然項目不在樹狀結構中,但是我們仍不去做重新掃描舊資料庫的動作,因 為準高頻項目並不影響關聯式法則的產生;需要另外處理的情況則會發生在當舊 資料庫的準高頻項目變為更新後資料庫的高頻項目時,因為前一個做法的緣故,

要先進行一個判斷的動作,如果這個舊有的準高頻項目不在樹狀結構中,亦即我 們從未將這個項目納入建樹的元素中,則必須要重新掃描舊資料庫,若已存在則 依照新進資料調整這個項目即可。

另外在調整樹狀結構中節點順序變換的處理上,AFPIM 將前一次探勘的樹 狀結構建立出來後,再依照項目順序的變動,從 Header Table 去找尋每一個需要 變動的節點,當處理節點的時候,則必須要考慮有無子節點,節點本身的計數值 與子節點的計數值,然後再去做相對應的處理。而 DFPBT 因為將前次探勘的樹 狀結構利用關聯式資料表儲存,每一筆紀錄為項目計數值皆相同的樹狀分支,因 此在調整順序時可以直接針對資料表的每筆紀錄處理,然後再將樹狀結構建立並 將新進資料的訊息加進樹狀結構中,此種方式比起 AFPIM 的利用多種條件及情 況去慢慢處理每一個節點的做法相較之下更有效率。

本論文的研究目的著重於漸進式探勘演算法的效能表現上,經由前面的比 較,我們選擇基礎結構尋訪較為迅速的二元樹結構並且不需要另外產生相關訊息

(37)

的其他結構,在其演算法上加以改進,以增進其探勘效率。前面曾提過,DFPBT 的主要缺點在於必須將含有非高頻項目的交易資料額外儲存到某個資料表,我們 將針對這點作改進;另外其樹狀結構中只保留了高頻項目資訊,在漸進式探勘中 遇到項目在高頻與非高頻間變動的機率相當大,若遇到變動,就必須再去掃描 Infrequent Table 避免重新掃描舊資料庫,因此我們捨棄了記錄 Infrequent Table 的方式,採用準高頻項目的納入建樹以降低其項目在高頻與非高頻之間變換的機 率以避免重新掃描資料庫的情況發生。

第二節 演算法步驟

本論文主要針對關聯式法則探勘的漸進式演算法提出改進,此演算法是利用 只掃描資料庫兩次後建立出一樹狀結構 DFPBT,再經由反覆搜尋 DFPBT 樹狀結 構來得到高頻項目集合。DFPBT 結構把高頻與準高頻的資料壓縮用樹狀結構來 呈現資料庫交易紀錄中項目分布的情況,不但節省了記憶體空間,也節省了搜尋 的時間,不同於以往需要相繼產生候選項目集並重複進行掃描資料庫進行比對是 否為高頻項目集的方式,因為產生的候選項目集多寡往往決定需要重新掃描資料 庫的次數,而重複掃描資料庫的硬體存取動作是漸進式探勘中增加關聯式法則探 勘耗費時間的最大部份。

本論文分別針對非漸進式與漸進式資料探勘提出二種不同的演算法,由於非 漸進式的方式為漸進式方式的前半段作法,我們將大略說明非漸進式的探勘步驟 後,再直接針對漸進式的步驟作詳細地描述與介紹。

非漸進式的演算法經由掃描兩次資料庫後建立 DFPBT 樹狀結構以表示資料 庫中的資料,之後搜尋此樹狀結構得到高頻項目集合,演算法處理資料的過程 中,將需要儲存每個項目的計數值與最後得到的高頻項目集合。而漸進式的演算 法除了記錄非漸進式所需紀錄的資料外,還需要將表示所有資料分布狀態的 DFPBT 樹狀結構利用關聯式資料表記錄下來,以利下次進行漸進式探勘時重建

(38)

使用。非漸進式演算法流程如圖 3-1。

圖 3-1:非漸進式演算法流程圖

(1) 設定支持度與準支持度:

當使用者欲進行資料探勘時,需要先設定支持度與準支持度,支持度用來決 定關聯式法則的成立門檻,而準支持度則利用來決定有哪些項目需要被採用來建 立樹狀結構。支持度的設定原則目前尚且沒有相關研究說明支持度設定的依據或 方法;一般而言,在設定支持度的時候需要參考探勘的資料庫交易紀錄量,以及 所要進行探勘的資料庫資料特性而決定;例如醫療資料庫,其項目相互發生的關 係就很少,如果要探勘出一些關聯式法則出來的話,就需設定較小的支持度,而

(39)

類似大賣場交易紀錄的資料庫,則可以設定大一點的支持度,因為項目與項目間 合併發生的機會較大。不管是支持度的設定為大或小都需要先行評估。如果支持 度設定過大的時候,可能會導致探勘結果不能充分表現出資料庫中項目之間的關 聯性,而過小的支持度又可能產生過多和沒有實際應用價值的關聯式法則。另外 支持度的大小會直接影響到資料探勘的處理時間,因此支持度的設定端看資料庫 大小與使用者當時的要求來做決定。

(2) 計算一次項計數:

此部分會搜尋在資料庫中每個項目出現的次數,經由這個計算結果我們可以 得到交易紀錄中所有一次項出現的次數,經由準支持度的設定,哪些項目需要被 納入建構樹狀結構的元素中在這個步驟可以被決定。這些項目及個別的所有計數 值將依照次數排列並給予一個 id 值,因為項目出現的次數可能出現相同的情況,

給予 id 值可以幫助我們決定那個項目有較高的權值,避免 A-B 與 B-A 被視為不 同的資料分布而被放在不同的分支中,進而影響探勘結果。項目的儲存格式如表 3-1:

表 3-1:一次項儲存格式

欄位名稱 資料類型 欄位長度 項目說明

Id(pri_key) Int 4 項目順序

Item Narchar 10 項目名稱

Support int 4 項目次數

(3) 建立樹狀結構:

現在進行第二次的掃描資料庫動作,我們再計算一次項計數的時候掃瞄了第 一次。這個步驟中,依序讀取每一筆交易紀錄,將此筆交易紀錄中所有計數值大 於由交易紀錄筆數及準支持度所計算出的準支持度計數的項目取出,然後依照上 一步驟所儲存下來的高頻項目表格的 id 欄位依序排列,再把此筆交易紀錄新增 到 DFPBT 樹中。讀入下一筆交易紀錄,排序高頻順序與新增到 DFPBT,重複進

(40)

行這個做法直到交易紀錄皆已處理完畢。最後得到由包含所有高頻與準高頻項目 的交易紀錄資訊組成的 DFPBT 樹狀結構,此樹狀結構的節點依項目出現的次數 從高到低排列,每個節點為其左節點的前一個項目,而其左節點的右邊節點都為 其下一個項目。

(4) 搜尋 DFPBT:

建立 DFPBT 後,我們就可以開始進行探勘的動作。完成建立 DFPBT 之後,

我們會先從左邊的節點開始搜尋,再搜尋右邊的節點,依序從項目次數高的開始 搜尋,先把含有某項目開頭的高頻項目集合搜尋完畢,因為 DFPBT 是依照次數 高低依序排列,所以含有目前節點項目開頭的高頻項目集合不會出現在之後其右 邊節點的探勘上,因此搜尋完某個項目開頭的高頻項目集合後,不需要再檢查這 些高頻項目集合是否在之後出現。

而在搜尋某個項目為開頭的時候,因為其左節點的所有分支包含有其他節點 所需的資訊,所以在探勘左節點之前,會先把其左節點的所有分支合併(Merge Left Child Tree)到其右邊的節點。在合併的時候如果有相同項目的節點就把項目 的次數相加,如果沒有相同節點的話,則複製一相同節點於該插入的地方。最後 依序尋訪樹狀結構的每個節點,當尋訪完畢時我們也已經得到所有的高頻項目集 合並加以儲存以供利用。

以上是有關非漸進式演算法流程的說明,運用了降冪的樹狀結構來儲存高頻 資訊,除了可以節省記憶體空間外,搜尋 DFPBT 樹狀結構以求得所有高頻項目 集合的動作是非常有效率的。

在漸進式探勘的部分,我們希望曾經探勘過的舊資料不需要重新再一次掃 描,因此我們會記錄每個一次項的次數,以及前一次探勘時所建立的樹狀結構;

經由這些資訊,我們可以很快的計算出項目的變動順序及重建之前可以代表舊資 料的樹狀結構。漸進式演算法的流程如圖 3-2。

(41)

新增資料

設定支持度、準支 持度與新進資料

計算一次項

建立樹狀結構 讀取

搜尋樹狀結構

得到高頻項目集合 讀取

一次項計數 儲存(新)

樹狀結構

高頻項目集 合 儲存

儲存 讀取(舊)

讀取 新增、刪除、

調整項目

讀取(新)

新增刪除調整

圖 3-2:漸進式演算法流程圖 (1) 設定支持度、準支持度與新增資料來源:

欲進行漸進式探勘時同樣與非漸進式步驟相同,需要先設定決定高頻項目門 檻的支持度及建樹元素門檻的準支持度以處理交易紀錄資料;另外並需要指定新 增的交易資料所在的表格名稱。

(2) 計算一次項:

在每一次進行漸進式資料探勘的時候,為了避免再一次掃描舊有的資料,因

(42)

此我們會把這一次探勘得到的每個項目出現的次數記錄起來,當有新進資料新增 時,只需針對新進資料進行掃描,再把掃描新進資料所得到的一次項計數與前一 次探勘後所保留的計數值加總,就可以得到整個更新後資料庫的一次項計數,再 依照支持度的設定,找出符合門檻的高頻項目及準高頻項,並把這些項目記錄下 來,以便接下來的步驟利用。

(3) 新增、刪除、調整項目:

在進行漸進式資料探勘時,項目的順序變動時常發生,有些原本是高頻的項 目在更新後資料庫會變成準高頻項或非高頻項,而非高頻的項目則有可能會變成 高頻項或準高頻項。從前一次探勘記錄下來的一次項計數與這一次處理新增資料 後得到的一次項計數值做加總,並以更新後資料庫的總交易筆數及支持度的設定 來找出有哪些項目的變動情況發生,然後再一一針對這些情況,更新從資料庫讀 入的樹狀結構資料表。

在這個部份所先要處理的第一個,就是新增項目。前一次的資料探勘時,我 們的樹狀結構中包含了所有高頻與準高頻項目的元素,藉以保留了原資料庫的相 關交易紀錄資訊。然而在更新後的資料庫中,有些項目可能從原本的非高頻項轉 變為更新後資料庫的準高頻或高頻項,但是在保留的樹狀結構中,並沒有含有舊 資料庫中這些項目的相關資訊,因此我們需要再一次掃描舊資料庫。但是前面曾 經提過,我們採用了 AFPIM 的偷懶式掃描的作法,當有非高頻項目變為準高頻 項目的時候,不管這個準高頻在不在樹狀結構中,我們皆不需要去重新掃描舊資 料庫,因為這些準高頻項並不影響高頻項目集合的構成,因此在這個原則設定 下,這部分我們只需要判斷是不是所有高頻項目皆存在樹狀結構中,如不存在才 需要重新掃描舊資料庫。

另外有些項目可能在新的交易紀錄中出現次數非常少,導致這些原本保留的 高頻與準高頻項目在更新後變為非高頻項,所以我們要把這些已經不需要的項目 從樹狀結構資料表中刪除,以節省建樹時所使用的記憶體空間與耗費的時間。在 做法上我們會針對每一筆資料作處理,當有發現需要移除的項目時,就把此欄位

(43)

設定為 NULL。

最後是依照更新後資料庫的項目順序調整每筆紀錄的項目,有新進資料新增 後,不只是項目在高頻、準高頻或非高頻三者間發生變動,高頻項目群中的各個 項目次數也會跟著變動,隨之而來的就是高頻的順序也跟著變動,因為我們的樹 狀結構必須依照先後順序建立,所以必須對樹狀結構資料表做調整,使它能夠依 照新的高頻順序來排序,這樣在建立樹狀結構才能依照正確的順序建構出來且不 影響探勘的結果準確性。

(4) 建立樹狀結構:

經由上一步驟的新增、刪除與調整項目後,我們就可以得到一個樹狀結構暫 存表格表示舊資料庫在項目變動後的新狀態,接下來掃描新增資料庫第二次,判 斷每一筆交易紀錄含有哪些高頻項目,並加以排序之後新增到樹狀結構中。在這 個部份處理新增資料時,我們是採用先將所有新增資料作處理後加到樹狀結構的 暫存資料表中,再把這一表格一次建立成樹狀結構的方式。當樹狀結構建立完成 時,我們會瀏覽一次此樹狀結構,把包含更新後資料庫的完整樹狀結構資訊重新 寫回資料庫的樹狀結構資料表中,以便下一次探勘得到完整的保留資訊。

(5) 搜尋樹狀結構:

樹狀結構建立完成後會包含舊有資料庫與新進資料庫的所有高頻項目資訊 與部分的準高頻項目資訊,接下來只要搜尋整個樹狀結構就可以得到所有的高頻 項目集合。搜尋的方式與非漸進式演算法相同,先從項目次數較多也就是順序較 高的項目開始搜尋,再搜尋項目次數較少的項目,而在搜尋樹的左節點分支時,

一樣需要先把左節點的所有分支資訊合併到右邊的節點,以便找出正確的所有高 頻項目集合。

以上是有關漸進式演算法的說明。在探勘的過程中,我們會把前一次探勘所 用到的資訊記錄起來,其中包含有每個項目的出現次數,高頻與準高頻的項目及 樹狀結構。經由這些資訊的保留,在下次漸進式探勘的時候就可以避免重新掃描 舊資料庫的發生,只要在樹狀結構中針對新增、刪除的高頻項目做一些更新與調

(44)

整,然後再把新進資料庫中包含高頻與準高頻項目的交易紀錄資訊加入到樹狀結 構。因此,在極少需要掃描舊資料庫的情況下,我們就可以有效率的維持高頻項 目集合的有效性,並且節省了不少漸進式探勘的時間。

第三節 演算法實例推導

在前一節我們簡介了非漸進式演算法的作法與描述漸進式演算法的處理流 程,在本節中將利用一個範例資料庫來舉例說明本演算法的處理流程,在資料庫 中包含代表原資料庫及新增資料的兩張表格。在第一次的探勘動作時針對舊有資 料表做處理,探勘結束後,進行漸進式探勘時針對新增資料表做漸進式資料探勘 的處理動作。實例推導過程的參數設定中,最小支持度設定為 50%、準支持度則 設定為 25%。進行第一次探勘動作的舊有資料表內容如表 3-2。

表 3-2:舊有資料表內容

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

C B

8

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

J A

7

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

H B

6

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

D B

5

<NULL>

<NULL>

<NULL>

<NULL>

G B

C 4

<NULL>

<NULL>

<NULL>

<NULL>

B A

C 3

<NULL>

<NULL>

<NULL>

E C

F A

2

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

E D

1

Item7 Item6

Item5 Item4

Item3 Item2

Item1 TID

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

C B

8

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

J A

7

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

H B

6

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

D B

5

<NULL>

<NULL>

<NULL>

<NULL>

G B

C 4

<NULL>

<NULL>

<NULL>

<NULL>

B A

C 3

<NULL>

<NULL>

<NULL>

E C

F A

2

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

E D

1

Item7 Item6

Item5 Item4

Item3 Item2

Item1 TID

首先,我們要先掃描資料庫,計算每個一次項目出現的次數。利用準支持度 乘以交易紀錄總筆數得到用來建樹的元素次數門檻,大於或等於這個門檻次數的 項目,就必須被保留在樹狀結構的構成中。這個範例裡,這個門檻次數為

參考文獻

相關文件

在第一次段考完後的下午,我們一起到了益品書屋,這一趟真的是挖

寫作主題:The International Marching Band Parade (一)教學實施步驟 Teaching steps.. • 步驟一:circle map

取得中華民國之外國法事務律師資格後,須加入在中華民國法律 事務所所在地之律師公會。.

步驟一、請各校註冊組長協助,由學務管理系 統計算成績並下載相關成績報表

對於給定的一個 x 值,經過某一對應方式後得到「唯一」的 y 值,這種對應方式我們稱 為函數,其中 x 是自變數,y 是應變數。. 而在表

在這一節中, 我們介紹 change of basis 的概念, 了解到一個 linear operator 換了 ordered basis

獲得 2 屆 MVP、3 座總冠軍和無數座個人榮耀獎項後,如今終於又達成人生 另一座里程碑——取得大學學位。柯瑞從 2006 年開始在戴維森學院(Davidson

2022 年即將到來,以往的除夕夜都是在農曆的 12 月 30 號,但是新的一年卻沒有 這一天,由於除夕意指歲末的最後 1 天,只要是正月初一的前一晚都是除夕,因此