• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
67
0
0

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

全文

(1)

中 華 大 學 碩 士 論 文

題目:以頻繁樣式樹為基礎之平行分散式資料探 勘演算法

A Parallel Association Rule Mining Algorithm with Frequent Patterns

系 所 別:資訊管理學系碩士班 學號姓名:M09210014 蕭偉呈 指導教授:游坤明 博士

中華民國 九十四 年 七 月

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

摘要

資料探勘技術自從問世以來,目前已廣泛地被運用於各種領域當中,然而隨 著資料庫的應用與全球資訊化的影響,資料量呈爆炸性地成長,傳統的資料探勘 技術已無法負荷如此龐大之資料量,亦無法滿足使用者之效能要求。因此,本論 文提出一個以 Frequent Pattern Tree (FP-Tree)為基礎的平行分散式資料探勘技 術,利用 FP-Tree 樹狀架構本身可拆解的特性,在平行運算時得以互相傳遞資訊 來平衡負載,並以簡單且可靠之負載計算公式,快速地對各處理器所負責之項目 進行負載評估,以低傳遞次數及保留項目的功能,來維護資料傳遞量的增加並減 少處理器於處理傳遞資料的時間,藉此來做到負載平衡並且降低整體探勘時間,

在與 Parallel FP-Tree (PFP-Tree) [13]相較之下,在 16 個處理器的環境中,擁有 18%的效能改善率;在資料歪斜的模擬情況以及處理器個數不同時,也都擁有較 佳之效能,因此本論文之演算法(LFP-Tree)確實能達到有效利用硬體資源並加快 探勘速度之目的。

關鍵詞:FP-Tree、資料探勘、分散式運算、叢集電腦

(6)

Abstract

The data mining technology has been widely applied to various kinds of fields.

However, with the application of the database and influence of the global informationization, the amount of data increases explosively. The traditional data mining technology can not support such heavy data gradually and can not satisfy the user’s request for efficiency. Therefore, this thesis proposes a parallel distributed mining algorithm based on FP-Tree structure, which utilizes the characteristic of FP-Tree structure – ease of partition. The algorithm would exchange the information of the tree structure among nodes in parallel to balance the load. In addition, a simple and trusty calculates formula in load of degree, carry out the load evaluation to the item that the processors responsible for. With the low exchange times and the mechanisms of holding some item, the time of the data transmission processes decreases. To compare with the Parallel frequent pattern tree algorithm (PFP-Tree), with the PC Cluster of 16 processors, our algorithm could be provided the 18% rate of improving efficiency. Therefore, the proposed algorithm could utilize the resources indeed and accelerate the mining speed effectively.

Keyword : data mining, distributed processing, FP-Tree, PC Cluster

(7)

致謝

這本論文的完成,除了自己努力的付出之外,還要特別感謝我的指導教授游 坤明老師在過去幾年的指導,從大學專題到研究所的四年過程中,不管是作研究 的方法、為人處世的態度以及環境時間的掌握等,都非常值得晚輩去學習,而這 些基本能力與老師的指導也讓我能在學術領域中有所成長,並順利地完成這本論 文,因此,再次感謝游老師對於學生的教導。

另外,我也感謝在過去幾年中,一直陪伴我成長的同學以及實驗室的夥伴 們,特別是從大學時期到研究所,仍然在我身邊陪伴著的朋友,在我陷入低潮時 給我鼓勵,歡樂時一起分享喜悅,也多虧他們的支持與鼓勵,讓我可以一路堅持 到最後並完成這本論文,非常感謝他們帶給我許多美好的回憶。

最後,我要感謝我父母親在求學過程中對我的支持,不管是心裡還是物質,

都讓我毫無後顧之憂地專心致力於研究,非常感謝他們對我付出與關心,也因為 他們的支持,才使得這本論文有完成的可能。

在此僅將這份成果獻給我親愛的老師與家人,以及每一位陪我走過這段路程 的摯友。

蕭 偉 呈 謹誌 中華大學資訊管理學系碩士班 中華民國九十四年七月

(8)

目錄

第一章 序論...1

1.1 研究背景與動機...1

1.2 研究目的...4

1.3 研究方法...4

第二章 相關研究與技術 ...6

2.1 Apriori Algorithm...7

2.2 FP-growth(Frequent Pattern Growth) ...10

2.3 MLFPT(Multiple Local Parallel Trees) ...13

2.4 Shard Nothing Parallel Execution of FP-Growth ...15

2.5 PFP-Tree(Parallel FP-Tree algorithm) ...16

2.6 演算法之比較...19

第三章 研究架構 ...24

3.1 研究設計概念...24

3.2 研究架構說明...24

第四章 實驗設計 ...36

4.1 實驗平台...36

4.2 資料來源...37

4.3 資料前置處理...39

4.4 實驗架構設計...41

第五章 實驗結果與分析 ...44

5.1 LFP-Tree演算法之特性 ...44

5.2 不同處理器個數對於演算法效率之比較...46

5.3 不同支持度對於本論文演算法之影響...48

5.4 資料歪斜對於演算法之影響...50

(9)

第六章 結論與未來展望 ...53 參考文獻 ...54

(10)

圖目錄

圖 2-1、Apriori流程架構圖 [4]...8

圖 2-2、候選項目集合產生之步驟 [8]...9

圖 2-3、FP-tree資料結構 [10]...10

圖 2-4、FP-Growth遞迴探勘方式 [10] ...12

圖 2-5、FP-growth與Apriori之效能比較 [10]...13

圖 2-6、MLFPT之Global header table產生過程 [17] ...14

圖 2-7、MLFPT之分散式樹狀結構 [17]...15

圖 2-8、灰色節點為探勘項目C所需之資料...17

圖 2-9(a)、群組(P1、P2)與群組(P3、P4)進行資料交換...18

圖 2-9(b)、群組分割為子群組後,再行資料交換之動作...18

圖 2-9(c)、資料交換完成之狀態...19

圖 3-1、研究步驟流程圖 ...25

圖 3-2、Global header table之建立...26

圖 3-3、樹狀架構圖 ...27

圖 3-4、樹狀架構深度與廣度之紀錄 ...28

圖 3-5、項目負載程度之評估公式 ...29

圖 3-6、接收資料之整合 ...32

圖 3-7、Loading balanced FP-Tree (LFP-Tree)之演算法...35

圖 5-1、各支持度下之時間效能 ...45

圖 5-2、探勘時間與處理器之負載平衡關係圖 ...45

圖 5-3、不同資料量下之效能比較 ...46

圖 5-4、LPF-Tree與PFP-Tree探勘時間之比較...47

圖 5-5、LFP所改善之效能 ...47

圖 5-6、LFP-Tree與PFP-Tree資料傳輸量之比較...48

(11)

圖 5-7、不同支持度下之演算法效能比較 ...48

圖 5-8、處理器之負載差異程度比較 ...49

圖 5-9、不同支持度下資料傳輸量之比較 ...50

圖 5-10、資料歪斜下LFP所改善之效能 ...51

圖 5-11、資料歪斜情況下之處理器負載差異程度 ...51

(12)

表目錄

表 4-1、叢集電腦與平台規格表 ...36

表 4-2、肝功能檢驗之項目筆數 ...38

表 4-3、肝功能檢驗項目資料格式 ...38

表 4-4、專家分群對照表 ...40

表 4-5、最終資料表格式之範例 ...41

(13)

第一章 序論

1.1 研究背景與動機

近幾年來,隨著資訊科技的快速發展,電腦效能大幅度地提升,其多元化的 功能、網際網路的便利性、可存放大量資料的儲存設備以及快速運算能力等特 性,都可為企業創造更多的利潤及商機。因此,越來越多的資訊科技被利用在企 業的環境當中,其中最為重要且基礎的便是資料庫技術的應用。在企業的資訊化 過程中,資料的呈現方式從傳統紙本轉換為數位文件,而透過資料庫技術的儲存 與檢索功能,讓文件可以大量地被保存並且可以快速地被搜尋,也因為資料庫擁 有這樣可靠且便利的功能,資料庫系統便成為企業資料儲存的最佳選擇。而隨著 資料庫的廣泛應用,各類資訊系統無不藉助資料庫的功能而發展,常見的像是企 業入口網站、顧客管理系統、財務會計系統等等,都是藉由資料庫來儲存企業內 部的重要資訊,而且不只是企業,就連政府機關、銀行或是公私立學校等,當已 經相當仰賴資料庫作為儲存的媒體。我們可以知道目前上至政府單位的民眾基本 資料、民生、經濟、稅率、股市交易資料等資訊,下至中小產業的客戶交易紀錄、

生產及進出貨資料等,甚至是醫療單位的病例與診斷資料都必須依賴資料庫來記 錄、管理,由此更可確定資料庫應用的重要性。

而資料庫的相關應用技術中,資料探勘算是相當廣泛的一項技術。由於資訊 科技的進步,儲存大量資料已經不是難題,並且大量資料保存的最主要的作用,

除了可以加以追朔以及資料的再利用之外,最主要的便是資料分析的功能;而資 料探勘的目的,便是要利用電腦技術,從大量的資料中擷取出有用資訊及關聯性 資訊[8]。科學家可以利用資料探勘技術來把天文資料裡的信號和雜訊分開,生 物學家利用它來找出DNA序列裡的基因,醫療專家用它來協助臨床數據的分析 [11,18]。而一般的企業更可以用它來得到與顧客、網站瀏覽者以及其與商業行為 相關之資訊;利用這些資訊,企業可以快速地對市場做出反應,在第一時間掌握

(14)

消費客群進而獲利。應用在網際網路上,則可以讓網頁個人化,並且提供有關的 購物建議,進一步地預測顧客的習慣,讓網站更加貼切使用者需求。當然,資料 探勘的應用並不僅僅限於這些範圍,相信只要能充分利用資料探勘的各項技術特 性—分類(Classification)[9]、分群(Clustering)、決策樹(Decision tree)、關 聯式法則(Association rule)[7,16]、時間序列(Time sequence)等等,任何人都 可以輕易獲得資料探勘所帶來的利益。

本論文所要探討的主題,便是以資料探勘中的關聯式法則作為主要研究的範 圍。關聯式法則是一個能從大量資料中去找出資料間彼此關聯性的技術。現今有 許多應用都需要仰賴關聯性法則的技術來完成,其中包括了顧客購買行為分析、

網站瀏覽行為分析等,例如一家資訊商品量販店從過去 3 個月的交易紀錄中找出 顧客最常購買的商品關聯性,發現凡是購買了噴墨印表機的顧客,都會在一個月 內回到店內來購買墨水匣,因此店家便可以利用這樣的發現去訂出促銷決策,提 升其業績及利潤。而關聯性法則也因為對於決策支援有重大的幫助,使得多數企 業對於這樣的技術相當感興趣並將此技術應用於其系統中。然而,企業中之資料 量是非常可觀的,尤其隨著資訊系統被廣泛應用在商業行為上,一天的交易總量 可能是成千上萬筆的資料,面對這樣大量的資料,只要做一個檢索的動作可能就 需要非常多的時間,更遑論要去找出項目之間的相關性,當探勘時間需要好幾個 工作天甚至是一個禮拜之時,資料探勘早已不符合企業快速掌握市場動態之決策 需求,但是,在資料持續成長的情況下,去面對大量資料作分析仍是關聯性法則 無法逃避之命運。因此,在無法改變資料量及探勘方式的情況下,平行運算技術 的出現使得關聯性法則在資料探勘的舞臺上得以更加活躍。

隨著科技發展的腳步前進,如今電腦的運算能力已經大幅提升,相較於過 去,同樣成本可以獲得擁有更高運算能力的資訊設備,但是伴隨著網際網路的興 起、儲存設備的快速發展以及全球資訊化的潮流,資料量的成長遠遠大於運算能

(15)

力的提升,當面對大量的資料分析時,大部分的電腦仍然無法負擔,也因為如此,

平行分散式運算才得以被應用於資料探勘的領域中。平行分散式運算是利用多個 處理單位,去分擔大量的工作需求,將一件工作細分給各個處理器做運算,再將 結果加以整合,如此便可以應付大量的資料分析需求,也可解決資料探勘所面對 的難題,相對於過去多處理器運算的高成本,現今的科技發展促使多處理器運算 的成本得以更加低廉,因此連結多部電腦所結合成的電腦叢集,便成了解決大量 運算的最佳解決方案。

另外,分工合作之原理確實可以快速完成工作,並擁有更好的工作表現,現 今許多企業也採用團隊工作的方式來取得更大的工作效用,然而在團隊工作當 中,工作的平均分配及團員之間的溝通往往是一個團隊成敗的重要因素,也經常 是團隊管理的重點之一;平行分散式運算就如同團隊工作一般,處理器間的工作 分配若是不平均,將會造成有些處理器閒置,有些處理器卻是使用率滿載的情 形,這樣的使用效率將會使得工作時間無法達到最有效率的狀況;而處理器間的 溝通,也是影響工作時間長短的因素,當處理器之間溝通頻繁時,所需要消耗在 傳輸及處理傳輸資料的時間必然增加,工作時間也隨之增長。在一般的情況下,

工作量若要平均分配,則處理器間的溝通則必不可少,但是減少處理器間的溝通 則會讓工作有不均衡的情況發生,如何去取得最好的平衡方式,是平行分散式演 算法的主要考量,而目前也有許多研究在探討此議題[12,13,14,15]。

因此,本論文將以資料探勘為主,輔以平行分散式技術,藉由計算處理器的 負載程度並加以平衡,來解決大量資料探勘所遭遇之效率問題,並探討其負載程 度與傳輸量之關係。

(16)

1.2 研究目的

本論文之目的,便是利用平行運算的技術,將大量資料探勘的工作分散運 算,並且平均各處理器之工作量,利用演算法之特性降低處理器間的資料傳輸 量,以期能做到快速且平均運算的功能,讓處理器在工作時間內發揮最大效能,

而進一步克服大量資料的探勘過程所耗費過多時間之問題。依演算法特性可分為 下面兩點敘述:

1. 負載平衡 (Loading balanced):針對工作量的平均,將會對本演算法所採 用的樹狀結構做深度與廣度的計算,並且搭配探勘項目,計算出每個項 目所需探勘時間,然後依照所需時間去平衡負載程度,以達到平衡各處 理器工作量之目的。

2. 減少傳輸量:利用演算法之樹狀結構以及其遞迴探勘方式的特性,於處 理器互相傳遞資訊時,針對傳輸量較大之處理項目加以保留,以減低各 處理器於處理交換項目資料時之時間。

1.3 研究方法

為了達到上一節所要求之目標,本論文之進行可分為以下幾個階段:

1. 文獻探討:主要探討的方向有二,首先為資料探勘中關聯式法則相關演 算法之了解,待有較深入之認識後,便以特定之關聯式法則演算法作為 基礎,去探討相關之平行分散式演算法。

2. 演 算 法 之 改 良 設 計 : 演 算 法 之 改 良 主 要 針 對 Parallel FP-Tree (PFP-Tree)[13]演算法作為改良基礎,因為其演算法具有減少資料傳輸量 之特性,因此除了會增加其尚未做到的負載平衡功能外,也針對其演算 法之傳輸效率做進一步之修改,使其在減少處理器間傳輸次數的同時也

(17)

能減少傳輸的資料量。

3. 資料收集與整理:資料的收集主要是收集來自北部某大型教學醫療院 所,針對醫療生化檢驗的資料作收集;而資料整理則是要針對數值型資 料加以離散,例如年齡及檢驗值,使其資料能符合演算法探勘格式之需 求。

4. 演算法實作:利用中華大學資訊工程學系平行分散實驗室暨有之叢集系 統(PC Cluster)作為實驗平台,也就是將多部電腦以網路加以結合並且透 過控制主機來達到能平行運算之功能;而其系統是採用 Linux 系統搭配 平行函式庫 (MPICH)之叢集系統,因此以 C 語言作為開發工具,搭配 MPI 作為平行運算系統,期間除了熟悉 MPI 系統之運用之外,也使用 C 語言將改良後之演算法實作完成。

5. 實驗設計與結果分析:將整理後的資料分為不同大小以符合不同的處理 器個數之需求,並且以不同的支持度去做運算,所得結果將以支持度及 處理器個數為基準,去分析在不同支持度或是處理器個數下,總演算時 間及探勘時間之差異,以探究工作量平均與否及傳輸量對工作時間之影 響。

(18)

第二章 相關研究與技術

近年來資料探勘技術的快速發展,也引發了許多學者的研究,我們可以依據 不同的技術特性,將這些研究歸類出不同的類別,其中主要可以分為:分類

(Classification)、分群(Clustering)、決策樹(Decision tree)、關聯式法則

(Association rule)、時間序列(Time sequence)等等,其中關聯式法則是最為常 見的研究,有許多的研究都是針對關聯式法則來進行。在資料探勘的研究領域 中,大部分都是針對特定資料庫資料進行研究,但在實際的應用上卻會面臨一個 重大的問題,就是對於大量資料處理的時間問題,使得在即時性上的需求便無法 獲得滿足。一般的情況下,關聯式法則的探勘方式是採用不斷反覆檢索資料庫內 的資料來找出項目間的關聯性,但是,當資料量的數量已經成長到某種程度時,

資料的儲存與檢索便會對電腦系統造成極大的負擔,而這將會造成資料探勘之瓶 頸,因為反覆搜尋出結果往往耗費巨量的時間才能完成,這樣對於探勘結果的即 時性與實用性會打了很大的折扣。因此,近年來便有部分的研究,利用平行分散 運算的處理技術,衍生出針對大量資料的處理技術,期望能在現今資料量呈爆炸 性成長的情況下,利用這樣的技術,在最少的成本之下,同時滿足資料探勘之即 時性及正確性的兩個需求。

關聯性法則的起始,是由Agrawal 等人於1993年提出的一個模型,用以說明 如何從大型資料庫中將資料項目組合而發現關聯式法則,其研究設定為:

假設有一資料庫為Database D,Database D中存有許多交易紀錄,其中以TID 作為每一交易紀錄T的辨識欄位,而每一筆交易紀錄中會包含許多的資料項目 (Item1,item2,item3…,itemN),I是所有商品項目之集合,所有的item都會被包含在 I中,而由個別項目組成的項目集合即稱為itemset,若該itemset符合門檻值的設 定,即稱為高頻項目集合(Frequent itemset)。在一般的關聯性法則中,都會設定

(19)

一門檻值作為項目是否具有關聯性的判斷標準,稱為支持度(Support),舉例來 說,假設X與Y為I中的商品項目,並且皆出現在交易紀錄T中,此時(X,Y)即成為 2-itemset,表示是由兩個項目所組成的項目集合,當X與Y同時存在於交易紀錄T 中,且T出現於database D中的筆數超過研究者所設定的Support值時,即判斷X項 目與Y項目具有關聯性,以Support(X∪Y)表示。而當高頻項目集合產生後,仍需 透過信賴度(Confidence)的檢驗,才能證明該高頻項目的可信程度,即是當X出現 的情況下,Y也會跟著出現的條件機率,以Support(X∪Y)/ Support(X)表示,當高 頻項目皆符合此兩項門檻後,方可稱為有意義之關聯法則。

目前在學術領域中已經提出了許多有關探勘高頻項目集的方法,這些方法大 致可以分種兩類:

(1)候選項目產生與測試方法(Candidate generate-and-test approach):這一類的 演算法像 Apriori 一樣,需要產生許多候選項目集,然後多次掃描資料庫,找出 項目集合出現於資料庫中的筆數是否有達到門檻,藉此方式來找出高頻項目集 合。

(2)樣式生成方法(Pattern growth approach):例如有 FP-growth,使用高度緊 密的資料結構儲存所有高頻 1-Itemset 及其次數,將所有資料特性呈現於較小的 結構中,經由反覆地搜尋壓縮資料結構來得到我們所要找的高頻項目集。許多文 獻實驗數據也顯示樣式生成方法比候選項目產生與測試方法在空間以及時間的 使用上更有效率,甚至優於千百倍。因此現今有很多學者開始鑽研樣式生成方法 的研究,希望能發展出一套有效地的演算法。

2.1 Apriori Algorithm

Agrawal 等人於 1994 年所提出的 Apriori 關聯法則演算法[7],為最具代表 性的關聯法則之推導方法,其最初主要是針對市場購物籃的問題加以探討,

Apriori 演算法將資料庫視為所有交易記錄的集合,而每筆交易記錄皆由產品項 目組成,利用簡單且循序漸進的方式,在大型資料庫中發掘高頻項目集,找出交

(20)

易記錄中項目間的關係進而建立關聯式法則,其架構如圖 2-1 所示,Apriori 演 算法主要包含以下 ”產生候選項目集合” 與 ”建立關聯式法則” 兩個步驟。

圖 2-1、APRIORI流程架構圖 [4]

2.1.1 產生候選項目集合

從資料庫中找出符合最小支持度的項目集合,進一步找出所有的高頻項目集 合。首先,先掃描資料庫後得到資料庫中所有出現過的項目,稱為候選項目集合 (1-itemset),然後經由最小支持度的判斷後,將未符合支持度的候選項目加以刪 除,留下之項目則稱為高頻項目集合(Frequent 1-itemset),然後,利用高頻項目 去產生出候選項目集合(2-itemset),然後再根據候選項目逐一掃描資料庫,並且 計算出候選項目所出現之次數,接著再去判斷是否超過支持度的門檻,將未達支 持度之項目刪去後即得到高頻項目集合(Frequent 2-itemset),以此類推,逐層地 往上探勘,將可以得到所有的高頻項目集合,值得注意的一點,是在組合高頻項 目來產生下一層之後選項目時,所產生的候選項目集合之子集合皆須出現於上一 層的高頻項目中,如此才能確保高頻項目之正確性,此步驟如圖2-2所示。

(21)

Candidate1 Large 1 Itemset Sup Itemset Sup

A 2 A 2

Database B 3 B 3

圖 2-2、候選項目集合產生之步驟 [8] 2.1.2 建立關聯式法則 利用步驟1 所產生的高頻項目集,分析高頻項目集以建立合適之關聯式法 則,當高頻項目集符合所訂定之最小信賴度,此高頻項目集即成為關聯式法則。 Apriori 演算法在探勘高頻項目上的正確性無庸置疑,但是也因為其反覆多 次掃描資料庫的方式,造成了效率上無法達到令人滿意之表現,在面對越來越龐 大的資料庫時,Apriori 的計算方式便顯得無力,這也是其演算法之瓶頸,因此, 許多學者紛紛研究更新穎的演算法來促使關聯性法則在時間效率上的表現能有 更進一步的突破。 C 3

D 1

E 3

C 3

E 3

D Scan D Candidate2 Large 2 Candidate2 Itemset Itemset Sup Itemset Sup AB AB 1 AC 2

AC AC 2 BC 2

AE BC BE CE AE 1

BC 2

BE 3

CE 2

BE 3

Scan D CE 2

Large 3 Candidate3 Candidate3 Itemset Itemset Sup Itemset Sup BCE BCE 2 BCE 2

Scan D

(22)

2.2 FP-growth (Frequent Pattern Growth)

FP(Frequent Pattern)-growth[10]演算法是 2000 年 Jiawei Han 等人所提出的,

它與 Apriori 演算法不同,Apriori 需要多次掃描資料庫判斷候選項目集是否大於 或等於門檻值。FP-growth 演算法只掃描原始資料庫兩次,然後建立只有高頻 1- 項目集的 FP-tree(Frequent Pattern tree),經由掃描 FP-tree 以求得所有的高頻項目 集。FP-tree 利用只儲存高頻 1-項目集與交易資料的項目集經常相同的特性,壓 縮了原始資料庫龐大的空間需求,因此所花費的時間與空間遠遠比需要產生候選 項目集及多次掃描資料庫的演算法更有效率。FP-tree 包含有項目節點(Node)與相 同項目名稱的節點的連結(Node-link),而項目節點裡儲存著項目名稱與項目的支 持度,另外需建立一個表頭表格(Header Table)儲存降冪排列的高頻 1-項目集與項 目第一個出現在 FP-tree 上節點之連結。FP-tree 的樹狀結構如圖 2-3。

圖 2-3、FP-TREE資料結構 [10]

FP-growth 演算法使用 FP-tree 架構來搜尋高頻項目集有兩種重要的特性:(1) 節點連結的特性(Node-link property):藉由表頭表格把相同的項目名稱連結起 來,如此能快速找尋到某項目開頭的節點路徑。(2)字首路徑的特性(Prefix path property):計算某項目的高頻項目集次數,只需掃描含有此項目為首的子路徑而 已,且路徑上節點的次數應與為首的項目次數一樣。

(23)

FP-growth 演算法雖具有壓縮資料的特性,但是其建構以探勘方式卻較過去 的方法還要複雜,依照其演算法特性主要可以分為以下樹狀結構之建立與樹狀結 構之探勘兩部份。

2.2.1 樹狀結構之建立

在此步驟中,只需要掃描兩次資料庫即可建立出壓縮型態資料結構,首先透 過第一次的掃瞄資料庫後,可以得到所有的項目資料以及項目在資料庫中出現的 總次數,擁有這些資料以後,便可以建立所謂的表頭表格(Header table),Header table 的存在擁有相當的重要性,因為一個未限制子節點個數的樹狀結構,是無 法由樹根往樹葉節點去做資料的鏈結,因此,Header table 便是為了能使這樣的 樹狀結構又上往下取得資料而存在,在配合研究者之設定的支持度,對 Header table 做刪減的動作,將未達支持度的項目先予以剔除,也因為這一個步驟讓資 料得以更加減少,讓探勘過程中所需資料能以較小空間來儲存。另外,Header table 還需要做降冪排列,為了要讓高頻項目可以出現在較靠近樹根的位置,以利結構 建立及探勘之正確性。

而第二次掃描資料庫便是為了建立起完整的 FP-Tree,在第二次的掃描中,

會一筆一筆地去讀取資料庫中的交易紀錄,將每個交易紀錄內的項目依照 Header table 的順序排列,然後新增到樹中。在新增的過程中必須先到 Header table 中找 到該新增項目之節點,再去判斷是否已有該項目之存在,作為新增節點或增加次 數之依據。在新增節點時,若是發現樹中已有相同項目之節點,則需要將兩個相 同項目之節點加以鏈結,以利在探勘過程中可以快速找到相同項目,加速探勘之 過程及維護資料的完整性。

2.2.2 樹狀結構之探勘

在 FP-Tree 建構完成後,便是針對這些已符合支持度之項目做探勘,其方法 稱為 FP-growth。首先,由 Header table 開始,先指定一項目為探勘目標後,藉

(24)

由兄弟節點(Node-link)去找出所有與該項目相關之資料,然後將其以建構 FP-Tree 的概念去建構另一子樹,稱為條件樣式樹(Conditional frequent tree),然後以相同 的方式指定該子樹的項目作為探勘項目,再建一子樹,而以這樣的方式來回不斷 對 FP-Tree 做搜尋,則可以找出所有高頻項目集合。其探勘方式為遞迴探勘,如 圖 2-4 所示:

圖 2-4、FP-GROWTH遞迴探勘方式 [10]

FP-growth 使用 FP-tree 樹狀結構來儲存所有高頻 1-項目集的資訊,藉由搜尋 FP-tree 與建立 Conditional FP-tree 來產生所有的高頻項目集合,它是利用 FP-tree 節點路徑高度分享的特性達到壓縮所要搜尋的資料之效果,可以大幅減少過去搜 尋資料庫所需之 I/O 時間,提高關聯式法則產生之效率,如圖 2-5 所示,FP-growth 與 Apriori 相較之下,能更快速探勘出關聯式規則。

而根據 FP-Tree 建構方式可以發現其結構是可以加以拆解,並加以新增,再 加上其探勘過程是可以針對單一項目進行探勘,因此,FP-Growth 演算法擁有可 分散之特性,非常適合做為平行分散式探勘研究之基礎,也因而有許多專家學者 將其演算法與平行分散技術加以結合,以期能達到更有效率之表現。

(25)

圖 2-5、FP-GROWTH與 APRIORI之效能比較 [10]

2.3 MLFPT(Multiple Local Parallel Trees)

MLFPT [17]是一個以 FP-Tree 為基礎的平行演算法,其目的就是要將 FP-Tree 演算法運用在平行分散式架構上,針對其可拆解且不影響結果的特性,把大量資 料庫的探勘過程分散到各處理器,以加快探勘速度。此演算法主要有兩個步驟,

首先是先建立平行式 FP-Tree,第二步驟就是利用這樣的架構去探勘高頻項目。

在建構 Multiple Local Parallel Trees 的時候,有以下 “Global header table 之 建立” 與 “Loacl FP-Tree 之建立” 兩個主要步驟,每一個步驟都會完全地掃描過 資料庫一遍:

2.3.1 Global Header Table 之建立:

將所有的資料平均地分割成 p 個資料集合( p 為處理器個數),然後將這些資 料集合分配到各個處理器去,接著各處理器便開始了第一次的掃描資料庫動作,

這樣的動作主要是要計算出項目在資料庫中出現的次數,然後再各自將分配到的 項目計算出的次數加總出一個 table,這樣便明確地知道了每一個項目的次數,

接著,table 中那些未滿足支持度的項目將會被刪除掉,只留下高頻項目,然後 再以各項目的次數高低來排序,所得到之項目次數資料即是 Global Header Table,其過程如圖 2-6 所示,這個 Table 將會被用來建構 FP-Tree 並且記錄符合 高頻的項目和出現次數,在之後更會以這個 table 來建立第一次出現在 FP-Tree

(26)

中的項目連結。

圖 2-6、MLFPT 之 GLOBAL HEADER TABLE產生過程 [17]

2.3.2 Local FP-Tree 之建構:

建立個別的 Local tree,在這步驟中將會掃描第二次資料庫,各個處理器都 會針對自己在第一步驟中分配到的資料去掃描,並且對每一筆交易做排序的動 作,然後再根據 Header table 去建構出 FP-Tree 並且每個 Header table 都會去對每 個處理器中第一個出現在的項目做連結,以方便探勘,其結構如圖 2-7 所示。而 到此為止,建構分散式 FP-Tree 的過程也完成。接著便是根據之前提過的 FP-Tree 來做資料探勘的動作。

(27)

圖 2-7、MLFPT 之分散式樹狀結構 [17]

這樣的分散式演算法可以說是最簡單且最直覺的,因為直接將資料平均分配 給所有的處理器去做,但是這樣的方法有其缺點,也就是實際資料並不會像實驗 中安排的那樣整齊,現實的資料總是擁有不同長度且分散不均,當某些處理器被 分配到較複雜的資料時,就會比其他的處理器多花一些時間,也因此會使得其他 處理器產生閒置時間,而減低處理效能。

2.4 Shard Nothing Parallel Execution of FP-Growth

這個方法[12]特色就是將樹的深度考慮進來,在不影響最後 FP-Tree 的前提 下,將樹作分割並且計算條件模式樹(Conditional pattern tree)的深度,去對各處 理器的工作負載加以平衡,以加速平行探勘的速度。

此演算法也是根據 FP-Tree 的作為其演算法基礎,並將之應用在分散式資料 探勘,且利用 FP-Tree 的以下幾項特點來作為其演算法的依據:

(28)

定理 1:處理條件模式樹的過程跟其他的條件模式樹是分別獨立的。

定理 2:將 local 條件模式樹累積起來將可以構成 global 條件 FP-Tree。

定理 3:將 FP-Tree 作分割將不會影響到條件樣式的結果。

定理 4:路徑長度在建構 FP-Tree 的時候可以計算。

接著,就是去對所謂的路徑深度作定義,路徑深度是在滿足支持度的條件模 式中的最長長度,就是路徑深度。而此演算法就根據以上幾個定理去建構條件模 式樹,然後在建構的過程中,會設定一個最小路徑長度,小於這個路徑長度的條 件模式樹會被立刻建構,大於此最小路徑長度的則會等到所有的條件模式被處理 完後再來建構;而且這些大於最小路徑長度的條件模式樹除了會在本地端建構 外,當偵測到其當處理器上尚有記憶體空間可以使用時,還可傳遞到別的處理器 去處理,把工作分散到其他處理器去,如此便可以平衡處理器間因為資料長度不 同所造成之負載不平衡的狀況。在實驗後的確發現考慮路徑長度後的運算結果,

可以讓處理器間的運算時間達到均衡,確實讓處理器的等待時間減少,也改進了 MLFPT 演算法的缺點。

雖然這樣的方法可以減少處理器間的等待時間,且平衡處理器間的工作負 載,但是有可能會讓處理器間的資料交換太過頻繁,並且對於訂定所謂最小路徑 長度,必須隨著資料庫資料的改變而做調整,有主觀因素的考量;另外,並沒有 一個溝通排程方式去讓處理器間的資料遞送有良好的傳遞方式,可能會造成資料 重複傳送而浪費頻寬資源並增加處理器負擔的問題。

2.5 PFP-Tree(Parallel FP-Tree algorithm)

PFP-Tree 演算法[13]建構在共享記憶體的多處理器環境下,所以著重的方向 在於處理器之間互相溝通的排程,並且利用了 FP-Tree 的結構特性,將資料分散 到處理器去做運算後,開始分配處理器所需運算之資料,再以直覺的方式將處理

(29)

器分組來做資料的傳遞工作,避免造成建構 FP-Tree 時的資料錯誤,最後各處理 器分別利用 FP-growth 演算法來做探勘,再將結果加以整合來得到最後探勘的結 果。

其演算法最主要的特色是將 FP-Tree 拆解後,交由各處理器去運算,並利用 特殊的群組交換方式來減少資料交換的重複性,首先,每個處理器在本機資料庫 中去掃描被分配到的資料,並且計算單一項目的出現次數。然後處理器互相整理 出 Global 單一項目次數。接著每一個處理器跟著計算 Global 項目次數來對本機 所擁有的資料作排序,並且丟棄掉未滿支持度的項目。

每個處理器再對被分配到的資料做第二次的掃描,並且建構出本機端的 FP-Tree。然後將記錄著 Global 項目次數的 Header Table 被分割成 p 個集合,並 且每一個處理器被分配到一些項目集合去做探勘。而這樣的分割是靜態的,所以 每一個處理器都需要來自其他處理器的資訊,然後再將得到的資料組成探勘所需 要的項目資訊,且為了維護資料之正確性,資料之搬移除了所需項目之外,還需 將其節點至樹根之項目一併傳送,如圖 2-8 所示,如此才能保證探勘資料之正確 性。

圖 2-8、灰色節點為探勘項目 C 所需之資料

(30)

最後再經由遞迴方式去整合樹的結構,此時,每一個處理器都需要互相溝通 log p回合。在每個回合結束時,處理器就會將收到的訊息整合到本地的FP-Tree 中,然後整理新的訊息來對下一次的整合作準備。處理器會先被區分為兩組,然 後彼此交換所需的資訊,接著各組內再區分為兩組,再彼此交換資訊,以此類推,

最後完成所有處理器所需的資訊交換過程,其示意圖如圖 2-9(a-c)。在得到所需 資訊後,每一個處理器就去針對它們所分配到的資料集合作探勘。

圖 2-9(A)、群組(P1、P2)與群組(P3、P4)進行資料交換

圖 2-9(B)、群組分割為子群組後,再行資料交換之動作

(31)

圖 2-9(C)、資料交換完成之狀態

這樣的方式除了做到分散式的探勘之外,也對處理器之間的溝通排程做了良 好的規劃,讓每個處理器的溝通次數限制在log p次之內。但是其缺點在於,此演 算法並未對資料的歪斜做改善,也就是當處理器所分配到之平均項目數量於其他 處理器相距太大而造成負載不平均的時候,仍會造成處理器閒置而無法發揮最大 效能的情況發生。

2.6 演算法之比較

以上各演算法皆各具特色,對於資料探勘的結果正確性、效率提昇都有很大 的貢獻,然而,針對每個演算法皆有其優缺點,以下將分為關聯法則以及平行分 散式運算兩部分,描述其演算法之優缺點。

2.6.1 關聯式法則演算法之比較

提到最具代表性之關聯法則演算法,則必定會聯想到 Apriori 演算法,再上 一節已有提到,Apriori 演算法的特色是針對資料庫不斷地掃描,並且找出候選 項目集合後,再去找出高頻項目集合。這樣的方式固然容易瞭解且易於實作,但

(32)

是對於效率方面,卻容易造成系統負擔,分析其演算法之步驟後可以發現,每當 資料庫掃描過一次之後才能得到候選項目集合之次數,舉例來說,假設現有一個 資料庫存放著 1Gbytes 的資料,當 Apriori 開始運算時,必須先將資料完整掃瞄 一次,才能得出所有的項目集合,然後再去把符合支持度的資料作組合的動作,

產生出候選項目,然後針對這些候選項目再去資料庫裡面掃描,換句話說,當候 選項目集合中有多少筆候選項目,資料庫就要被掃瞄多少次,這樣的巨大 I/O 時 間,隨著資料庫的成長而上升,而且項目的多寡也直接影響了組合這些候選項目 的時間,所以對於現在的超大型資料庫來說,這樣的探勘方式算是相當沒有效率 的。

正由於 Apriori 演算法對於大型資料庫來說,幾乎無用武之地,因此,後來 有學者提出了 FP-growth 這樣的方法來加快資料庫的處理,如文獻探討中介紹 的,FP-growth 採用 FP-Tree 的架構來作為探勘時資料的依據,其特色是只要掃 描過兩次資料庫之後就可以建構出探勘時所需要的所有資料,並建構出一個壓縮 的資料結構,這樣的方法好處是可以不用多次掃描資料庫,對於 I/O 的存取時間 可以大幅度的減少,甚至是將整個探勘過程都於記憶體中處理完畢,所使用的 I/O 時間只有那兩次掃描資料庫的時間而已,如此看來,FP-Growth 似乎是無懈可擊 的一個演算法,事實上,仔細分析其演算結構後可以發現,其演算法仍有其耗費 時間之處,例如大量的排序跟遞迴。

首先對 Header table 的建立來看,這個步驟需要掃描完整資料庫一次,得到 所有項目資料集合後,還必須將這些項目做排序,這樣的動作或許還不致浪費太 多時間,但是 Header table 建構完畢後,緊接著就是第二次掃描資料庫去建構 FP-Tree 的步驟,在此步驟中,每當讀取到一筆資料列後,就必須將資料列中的 項目依照 Header table 的順序來排序,所以要新增一筆資料到樹狀架構中時,就 必須要掃描過一次 Header table,所以,當面對資料量較為稀疏(sparse database)

(33)

的大型資料庫時,所建立之 Header table 也勢必相當消耗空間,而且其掃描次數 是資料庫有幾筆資料就要掃描幾次,是相當可觀的次數,雖說排序的動作都在記 憶體中完成,但是從資料庫中讀取資料仍需 I/O 時間,所以要建構出 FP-Tree 也 需要經過大量的運算才能完成。

然而在 FP-Tree 建構完成之後,就是針對其樹狀結構去做探勘,探勘方式是 以遞迴方式去做,其方式是項目為基底去建構出該項目之子樹,不斷地重複這樣 的步驟直到沒有子樹可以產生為止,也就是在樹狀結構中,一個項目的樣式 (Pattern)有多少個節點,就必須要做幾次的遞迴,而每建立一個子樹後,都要再 去對子樹內之項目再建立其子樹,這樣不斷遞迴的結果,就需要大量的記憶體空 間以及時間來完成此探勘步驟,遞迴需要佔用記憶體空間可以容易地理解,然而 而對於時間的消耗,則是因為每次建立子樹都需要在去重複地建構子樹的 Header table 以及其樹狀結構,因而需要大量排序的時間,所以,利用遞迴作為探勘之 方式,也是需要大量運算時間及空間之因素。

但是將 FP-growth 與 Apriori 相比之,FP-growth 仍是較有效率之方法,原因 就在於 FP-Growth 減少了大量的 I/O 時間,並且其樹狀結構可以於記憶體中處 理,探勘時雖然需要更大量的運算,但是在記憶體中運算及搜尋結果也絕對比反 覆地去讀取硬碟中的資料還要快上許多,在一些學者的實驗研究中,FP-growth 的效率表現也較 Apriori 更加快速(可參考圖 2-5),因此,FP-Growth 演算法的壓 縮架構便為關聯式法則之探勘,帶來另一種發展的方向。

2.6.2 以 FP-Tree 為基礎之平行分散式演算法之比較

因為 FP-Tree 的架構具有可拆解的特性,所以平行分散式的運算可以輕易地 應用於其架構之上,其中最先採用的是 MLFPT 演算法,正如前面文中所介紹,

此演算法之步驟就是將資料平均分散到各處理器中做運算,然後再將結果加以結

(34)

合,這樣的方法固然可以做到分散處理,但是我們可以知道,一般的資料並不會 如此平均的分布,在平均切割資料的外表下,其中的資料所對處理器造成的負載 可能有極大的差異,舉例來說,在量販店的資料庫中,因為 1、2 月份為農曆過 年之時,大部分消費者在單次購買行為中的物品數量可能較其他月份來的多,因 此一筆資料中所包含的項目將比較多,所以當一個處理器被分配到 1、2 月份的 資料時,以 FP-Tree 的架構原理看來,其負擔必定較其他處理器要沉重,但是 MLFPT 並沒有針對這樣的方式去平均負載,此為其一之缺點。其次,MLFPT 的 探勘方式是以項目為主,並且由各處理器去對所分配到的資料探勘,最後再將結 果做整合,可以想見這樣的情況下,若有處理器因為負擔較重而需要較多時間才 能完成工作時,其他的處理器則會進入閒置狀態,待所有的處理器完成工作後才 能完成探勘步驟,這樣非但不能有效減低探勘之時間,也無法有效率地運用處理 器之效能。

因此而有 Shard Nothing Parallel Execution of FP-Growth 演算法[12]的出現,

其可以針對樹狀結構做深度地記錄,並且在建構樹狀結構時將長度較長的的結構 留至最後處理,甚至可以將其結構給其他已經結束工作的處理器去處理,這樣的 優點是可以使得處理器的負載得以平均,確保處理器能被有效利用,但是其深度 之判斷會隨著資料不同而有所改變,要做到平均則需要不斷調整其最小路徑長度 才能達到最好的效果,要將其應用於實際資料庫時仍有其不便性;另外,分析 FP-Tree 的結構後會發現,其實建構樹狀結構及探勘時,並非只有深度才會影響 其效率,樹葉節點的多寡也會影響到其效能,葉節點越多,則需要的記憶體及探 勘遞迴處理的次數就越多,因此其評估負載方式也有待改良。

除了平均負載的需求之外,分散式運算還有另一個重點在於資料間的傳輸,

當資料的傳輸次數越多,探勘所需要的時間也就越長,也因為在這樣的需求下,

PFP-Tree 演算法也解決了這樣的問題,其主要概念是用群體溝通的方式來減少各

(35)

處理器的溝通次數,並且以項目為主的探勘方式,使得使用者不需要等待所有處 理器都完成即可得到部分正確的結果。而 PFP-Tree 的確可以減低溝通而達到減 少探勘時間的目的,但是仔細觀察後可以發現,雖然減少了溝通次數,但是實際 上對於資料的處理負擔卻比較重,因為在資料交換時,每個處理器所需要的資料 是固定的,所以其他處理器雖然減少了傳遞的次數,但是卻必須要負擔更大量的 資料傳輸量,而每次的資料傳輸過後,都需要將資料附加於樹狀結構上,所以每 個處理器都會去紀錄並處理額外的、其探勘過程中不需要的資料,這無疑是更耗 費空間的作法。另外,PFP-Tree 並沒有針對各處理器的負載做均衡的處理動作,

當面對了上述資料歪斜的情況時,各處理器的負載程度也會有所差異,雖然是以 項目為主的探勘方式,可以得到先處理完的部分探勘結果,但是要得到所有的探 勘結果能需要等待所有處理器完成工作才行,因此,此演算法仍有改進之空間。

綜觀以上各項演算法之優缺點及詳細運作原理後,可以了解到平行運算之重 點乃在於處理器的負載平衡以及其傳輸的資料量大小,因此本論文便發展出一套 演算法,將以上演算法之優點加以利用,並且利用 FP-Tree 架構之原理,期望讓 處理器的負載能達到平衡並且降低處理器間的溝通次數,讓硬體的計算效能發揮 到最大,而使得快速探勘大量資料的目的能得以成功。

(36)

第三章 研究架構

3.1 研究設計概念

在研讀各演算法之優缺點之後,掌握到對於 FP-Tree 的架構來說,其特點為 其樹狀結構以及探勘方式,透過前面相關研究中對於 FP-Tree 建構樹狀結構及探 勘的過程後,可以知道其樹狀結構之深度與廣度會直接影響到探勘時的遞迴次 數,也影響到探勘時間的長短,因此,對於處理器的負擔評估來說,掌握樹狀結 構的深度與廣度,將可較正確地評估探勘時所需之時間,並且利用項目作為評估 之依據,也可方便於樹狀結構的拆卸與組合。其中樹狀結構之深度是指一個樣式 (Pattern)從葉節點到根部之節點數量,此數量將會直接影響到探勘時遞迴的次 數;而廣度指的是該樹狀架構葉節點的數量,每一個樹葉節點都可代表一個樣式 的存在,每個樣式都是探勘時的項目依據,所以也影響到探勘的時間,故計算深 度及廣度作為探勘時負載程度,有其無可取代之必要性。

另外,對於平行分散式運算的處理器平均負載跟傳輸量的兩大重點,也參考 了過去相關的研究文獻,發現除了減少處理器間的傳遞次數外,也可利用樹狀結 構之特性,減少其傳遞數量,再加上負載的平均後,將可以做到有效均衡負載並 且使平衡負載時的資料傳遞量降低,讓整體探勘時間得以下降。因此,發展出一 套評估樹狀結構之方式,針對項目作為主要評估基礎,以求達到均衡負載之主要 目的,並輔以減少傳輸量的需求,來讓 FP-Tree 在平行分散式運算上能更有效率 地執行。

3.2 研究架構說明

研究之設計依照 FP-growth 演算法為基礎,在其演算法流程中,將資料做切 割並交由各處理器掃描,然後得到各 Local header table 之後,再由控制處理器去 整合出 Global header table,之後將 Global header table 廣播給各處理器作為建構

(37)

FP-Tree 之依據,而後各處理器依其分配到的資料去建構 FP-Tree,並在建構完畢 後,分別去針對其樹狀架構做各項目之評估,然後將評估結果傳送回控制處理 器,而控制處理器收到後便開始作平均負載之動作,之後將計算結果分送給各處 理器知悉,接著各處理器便依照分配之項目做資料傳遞的動作,此時,會依照 PFP-Tree 之群體溝通方式進行傳遞,最後,當資料傳遞完畢後,各處理器即依照 FP-growth 演算法之探勘方式去針對其被分配到之項目進行探勘,並將結果加以 記錄。研究流程如圖 3-1 所示。

圖 3-1、研究步驟流程圖

本論文架構之重點在於樹狀結構評估方法,以及其平衡方式,在不改變樹狀 架構的情況下,做到負載平衡以及減低傳輸量之目的,以下將分為 5 點作更詳盡 之描述:

3.2.1 Global Header Table 之建立:

此步驟為建構 FP-Tree 之根本,首先必須要將欲探勘之資料作平均切割,在

(38)

此不需要考慮資料是否有歪斜,之後的步驟中將會針對這一點作修正;當處理器 接收到切割的資料(Local Database)後,便進行第一次掃描資料的動作,在掃描後 便會得到所有的項目以及項目之次數,此為 Local header table,接著便將 Local header table 傳遞到控制處理器,由控制處理器去將所有的 Local header table 做整 合,如此便會得到 Global header table。

得到 Global header table 的資料後,控制處理器還會從各處理器得到該處理 器之資料筆數,並將各處理器之資料筆數加總後乘以設定之支持度,便會得到最 小支持度之次數,然後將 Global header table 中未達最小支持度之項目予以刪除,

如此,留下來的項目便皆為符合高頻之項目,接著控制處理器會將 Global header table 廣播給所有的處理器,此一步驟也到此完成。其中,控制處理器為一負責 控制流程及整合資訊用途之處理器,該處理器不處理樹狀結構之建立及探勘,只 負責整合資料、計算負載等工作。本步驟之示意圖如圖 3-2 所示。

圖 3-2、GLOBAL HEADER TABLE之建立

3.2.2 樹狀結構之建立:

此一步驟則是根據 FP-Tree 之建構規則去加以建立,唯一不同的是,此步驟 之 Header table 是以 Global header table 作為建樹之依據,因為 Global header table

(39)

為所有項目之集合,並且已經過最小支持度之刪減,留下的項目皆為高頻,因此 建構 FP-Tree 的時候只要依據這些高頻項目去做建構,就可以大幅度減少非必要 資料佔用記憶體空間的現象,使得空間及樹狀結構得以有效被利用。

在建構樹的過程中,會讀取第二次的 Local Database,一筆一筆地讀取,每 當讀取一筆交易資料後會將其項目依據 Global header table 去排序,排序完畢之 後會再去讀取一次 Global header table,以由上往下之方式建樹,每當新增一個節 點時就必須去判斷上一父節點是否與前一資料項目相同,若相同則只要在次數上 加總,若否,則需要去搜尋是否有兄弟節點(Node-link),若沒有搜尋到兄弟節點,

則需要在兄弟節點上新增葉節點,並且將相同項目之節點相互鏈結,以確保樹狀 結構之完整,並可加快建樹及探勘時搜尋之速度。

在資料庫掃描完畢的同時,樹狀結構也建構完成,其結構與 Global Header table 之關係,如圖 3-3 所示:

圖 3-3、樹狀架構圖

(40)

3.2.3 樹狀結構之評估與項目分配

由於在進行探勘時是以項目為主,也就是一個處理器將會被分配到某些項 目,且該處理器只需針對該項目做探勘即可,所以本論文針對處理器負載程度之 計算,即以其所負責探勘之項目為主要考量,因此,在建立完 FP-Tree 後,各處 理器便要將其所擁有之樹狀架構做初步評估,而評估之準則是項目位於樹狀結構 之深度與寬度,主要原因是在探勘的過程中,是不斷地利用遞迴方式來搜尋高頻 項目,期間會不斷建立條件樣式樹(Conditional pattern tree),每建立一個條件樣 式樹就需要多一些時間與空間,所以探勘的時間需求完全依照樹狀結構的節點數 多寡來決定,當樹狀結構的深度越深,也就是葉節點到樹根的節點數量越多時,

探勘所需時間就越多;而樹狀結構之廣度越大,則表示需要在樹狀結構搜尋的時 間越多,且越有可能會重覆讀取,這也表示了其條件樣式樹的建構將越複雜,需 要更多時間。因此,項目位於樹狀結構之深度與廣度便成為了評估一個處理器探 勘所需時間之重要因素。其紀錄之範例如圖 3-4 所示:

圖 3-4、樹狀架構深度與廣度之紀錄

(41)

由圖 3-4 可以看出,除了對於個數是直接加總之外,對於深度的計算是取平 均值,因為單一項目可能擁有許多樣式,在探勘時會針對這些樣式去做組合的動 作,組合出所謂的條件樣式樹,這個時候其項目之次數會再次受到支持度的檢 驗,所以有可能樣式會不受到探勘過程的考慮,因此為了避免這樣的情況對評估 結果有太大之影響,所以對深度採取平均值之計算,而總個數則因為在此階段尚 無法預估該樣式是否會被探勘過程計算,因此不做其他變動。

評估樹狀架構的工作,由各處理器同時進行,在其評估完畢之後,便將結果 傳會給控制處理器,此時控制處理器便將來自各處理器之資料加以彙整,然後得 到每個項目所需要探勘之時間,然後依照圖 3-5 所示之公式加以計算,便可以得 到欲探勘該項目所需之負載,此為該項目之整體負載程度,因此在下一步驟中的 負載平均便可以此評估分數做為標準,分配處理器之探勘項目。

圖 3-5、項目負載程度之評估公式

此評估公式乃是針對項目做個別之評估,其中 P 為參與處理項目之處理器 個數,S 為所有項目之集合,Ct 為葉節點個數,而 Dp 則為該樣式之深度。此公 式之作法是將該項目位於各處理器之深度做平均值之擷取,因而得出其項目於樹 狀結構中之平均深度;另外廣度計算則是取葉節點個數之最大與最小值做平均值 的擷取,因為評估負載之主要概念,來自樹狀結構於處理器間相互搬移後的情況 做評估,對於樹狀結構搬移後的確切狀況並無法在此步驟中做出詳細評估,因為 在搬移後,有可能位於 Processor 1(P1)之樣式搬移到 Processor 2(P2)時,在 P2 剛

(42)

好有與其樣式相同之結構,所以直接對於次數作加總即可,並不會影響到探勘時 間,故無須對總個數做任何改變,而另一種狀況則是 P2 完全沒有與 P1 搬移過 來的結構有任何重覆之情況,此時便需要在 P2 新增樣式,因而個數需要加總才 能維持正確之評估,而這兩種狀況在結構搬移時皆有可能會出現,在最糟的情況 下,可能搬移過去的樣式全部都需要被新增,而最好的情況則是完全沒有需要新 增樣式的情況,舉例來說,P1 的某一項目 G 所擁有 10 個樣式,若是搬移到 P2 須要全部被新增的話,P2 的葉節點個數則會增加 10 個;反之,也有可能不需要 作加總。所以在這樣的情況下,項目在結構搬移後的情況,可能會擁有最大值之 葉節點個數,而較好的情況則是保有最小值之葉節點個數,故取平均作為個數評 估之分數。因此,在此步驟尚無法準確預測何種情況會較常發生的狀態下,對個 數最大值與最小值取平均會是最保險的作法。

另外,對於此階段無法準確評估搬移後之狀況的主要原因,在於時間效率的 要求,由於本架構之負載評估計算完全交由控制處理器負責,因此,若要準確判 斷,則需要做更進一步之運算,而由單一處理器做此運算則容易導致計算時間過 長,使得真正要做搬移動作的處理器有太多等待之時間,而造成閒置之狀況,而 此步驟之計算時間是直接加總於演算法總運作時間上,所以當評估負載平衡時所 需要的時間越多,則對於整體探勘效率之影響越大,因此,才會對樹狀架構作此 較為簡單卻又不失其信賴程度之評估,以期能在不影響太多效能的前提下仍能對 負載之平均作良好的分配。

到此步驟項目之負載程度計算尚未完全結束,由於下一步驟所採用之 PFP-Tree 架構的傳輸資料量有過大之考量,因此在此評估階段會加入所謂保留項 目之設定,原理很簡單,即是前文所提過之深度會影響探勘結果之概念,其實深 度與廣度的影響不只在探勘的過程,對於資料交換也有重大影響,舉例來說,當 欲交換之項目的深度較大時,表示其位於樹狀結構之尾端,而要交換資料時為了

(43)

維持資料正確性,則需要將該節點到樹根之所有節點傳遞給另一處理器,因此,

當深度越大表示要傳遞的資料量越多,而廣度越大表示要傳遞的樣式數量越多,

這兩種因素皆會影響到資料傳遞量,所以本架構加入了保留項目,就是由控制處 理器去判斷各處理器所擁有之項目的負載,將該處理器所擁有最大負載之項目作 保留的動作,保留的意思也就是由該處理器去負責該項目之探勘,如此一來便不 需要將其項目之資料往外送,以達到減低資料傳輸量的要求。而這一步驟只需要 去判斷處理器中何為負載最大之項目,並不會對評估效率有影響。

當各項目之負載程度都計算完畢後,便開始針對處理器所負責探勘之項目進 行分配。分配的步驟很簡單,一開始就將所有項目之負載加總後除以處理器個 數,如此便可得到平均負載量,接著先將保留項目分配給各處理器後,再將剩餘 之項目依序分配給各處理器,並確保處理器之負載程度不超過平均負載量。然 而,分配的情況可能無法完全地達到平均,在負載程度不超過平均負載量的情況 下,或許還有些項目未被分配到,而為了正確地得到探勘之結果,仍須將這些項 目作分配,此時,本演算法便會將其依序分配給負載程度與平均負載量差距最大 之處理器,而在分配完所有項目後,項目的負載評估與分配才真正告一段落。

3.2.4 樹狀結構之交換

在經過短時間的評估計算後,控制處理器會將所有的項目分配給所有的處理 器,各個處理器皆會接收到該對何項目做處理的信息,而此時由於各處理器所握 有之資料庫並非完整,其所擁有之項目資料必然也不是最完全之狀態,因此,在 此階段必須做一資料交換的動作,以確保其所探勘的項目為最健全且正確的資 料。在此步驟中,將會採取 PFP-Tree 演算法的群組交換方式,將所有的處理器 切割為兩群組,然後由群組間做一對一之資料交換動作,而其交換之資料為各群 組內之成員所需要之資料,待第一次群組交換後,必須先將所得到的資訊新增到 自己所有的樹狀結構中,然後再進入下一階段的群組交換,接著各群組會再切割

(44)

為兩子群組,兩子群組之間的處理器再去交換資料,同樣地,子群組所交換的資 料也是子群組內的各處理器所需之項目資料。如此類推,直到無法再行切割為 止,則交換的動作即停止。其群組交換方式可參考圖 2-9 之介紹,而將接收到之 資料新增到樹中的示意圖如圖 3-6。

圖 3-6、接收資料之整合

在交換的過程中,由於採用的是較少的傳輸次數,但是各處理器之間所需資 料不變的情況下,會造成傳遞的資料量過多的情況,可以知道,當傳輸資料量大 時,在交換過後的新增結構部分所需之時間也隨之增加,間接影響到效率之表 現。所以本架構於上一評估階段所設定之保留項目便發揮了作用,藉由保留會造 成大量傳輸的項目,使得原先會大量增加的傳輸量得以趨緩,減少了處理器去處 理新增項目的時間,進而維持整體探勘之時間,也因而提升整體資料探勘之效率。

(45)

3.2.5 樹狀結構之探勘

在上一階段的資料交換結束後,便開始進入資料探勘的階段,此步驟跟 FP-growth 所用之方法相同,依舊是利用遞迴的方式加以探勘,而遞迴最主要之 目的就是找出所有的高頻項目集合,透過前文中演算法的介紹,我們可以知道 FP-Tree 架構只保留了 1-Itemset 的資料於樹狀結構中,所以儘管其項目皆為高 頻,卻只有單一項目的資料而已,而透過遞迴的方式,會將所有的高頻單一項目 (Frequent 1-itemset)做組合的動作,並且在此階段會再加入支持度的檢驗,所以 所有的高頻項目集合都會在遞迴探勘的過程逐一被找出。

其中較為不同的是各處理器只針對其負責之項目做探勘,而毋須顧慮其他項 目,並且其負責探勘之項目已在前面步驟中做過負載平衡之計算,所以各處理器 間的探勘時間應無明顯之差距,而各處理器在探勘過程中也不會互相影響或是有 太多閒置的狀況產生。另外,由於是針對個別項目做探勘的方式,使得所有探勘 結果的產生不需要再做進一步的整合,而是隨著各處理器探勘步驟的結束,資料 探勘之結果也隨之產生,至此,整體演算法之過程也隨著整體探勘結果之出現而 結束。

以上為本論文演算法之架構說明,在建構出 Global Header table 與 FP-Tree 架構之後,便以本論文提出之評估公式,針對各處理器所擁有之 FP-Tree 進行評 估,而後再將探勘項目以保留項目與平均負載分配給各處理器,在取得處理器所 負責探勘之項目分配表之後,為求探勘資料之完整便開始進行資料交換之動作。

在交換動作完成後,便以 FP-growth 之演算法進行資料探勘,最後便得到資料探 勘之結果。下圖 3-7 便是 LFP-Tree 演算法之完整流程展示。

(46)

Algorithm LFP-Tree

Input: Database D.

Output: Mining results.

Environment: p processors include a control processor and p-1 computing processors (CPs).

Control Processor:

Step 1: Collect the local header table from each CPs, and gather these local header tables into Global header table (GHT).

Step 2: Broadcast GHT and Support to each CPs.

Step 3: Receive the data of item’s Depth and Width from each CPs, and calculate the loading of item by formula of loading evaluation.

Step 4: Allocate the holding item to each CPs.

Step 5: Allocate the other item to each CPs.

While there is an item in queue do

Select the item which has the maximum loading in queue, then allocate it to the computing processor which has the minimum loading.

Delete the selected item from the queue, and insert it in the mining item list (record the item which the computing processor responsible for).

End while

Step 6: Broadcast the mining item list to each CPs.

(47)

Computing Processors

Step 1: Read the database D, and Create the local header table.

Step 2: Send the local header table to Control processor, and receive GHT and Support from Control processor.

Step 3: Read the database D, and construct the FP-Tree.

Step 4: Evaluation each item’s Depth and Width, and send it to control processor.

Step 5: Receive the mining item list from control processor, then according to the mining item list and PFP-Tree’s method to exchange data to each CPs.

Step 6: According the mining item list, each CPs mining the item which they responsible for

圖 3-7、Loading balanced FP-Tree (LFP-Tree)之演算法

(48)

第四章 實驗設計

本章節主要以驗證本演算法的效能為目的,分別設計兩種不同實驗進行分 析。在本論文的實驗中,將會以醫療生化檢驗資料分別以 PFP-Tree 演算法以及 本論文之演算法進行資料探勘,並統計各演算法在探勘過程中所需之時間,並且 加以分析及比較,以驗證本論文之演算法的確具有負載平衡以及維持資料傳遞量 之貢獻。

4.1 實驗平台

本論文進行演算法效能之分析與探討,其實驗平台如表 4.1.所示:

表 4-1、叢集電腦與平台規格表 控制處理器

中央處理器(CPU) AMD Athlon Processor 2200+, Dual CPU 記憶體 2GB DDR RAM

網路介面 1 Gbps backbone to interconnection switch 磁碟存取 36GB SCSI Hard Disk

資料處理器

中央處理器(CPU) AMD Athlon Processor 2200+

記憶體 1GB DDR RAM

網路介面 100 Mbps backbone to interconnection switch 磁碟存取 80GB IDE Hard Disk

處理器數量 24

作業環境

作業系統 RedHat Linux 7.3 with kernel-2.4.18 平行函式庫 MPICH – 1.2.4

編譯器 GNU GCC – 2.96

(49)

4.2 資料來源

本論文與某北部教學醫院合作,利用該醫院 91 年 9 月到 94 年 6 月之生化檢 驗資料進行資料探勘,其中,生化檢驗資料由於包含血液、尿液、細菌檢驗等大 量的檢驗範圍,其中檢驗項目之正常範圍、非正常範圍以及相關度量單位皆無統 一標準,因此將資料範圍縮減為血液檢驗資料中的肝功能檢驗項目為主要探勘範 圍,其因素為血液檢驗資料可涵蓋範圍包括心肺功能、腎功能、腸胃肝膽功能以 及如血糖、血脂肪等各項基本檢驗,對於醫學方面雖有其可研究性,但是其涵蓋 範圍仍太過廣泛,參考過去之研究[1,2,3,4,5,6]及經過醫療專家之解釋,認為血液 檢驗項目之間雖可能有其相關性,但是為求資料探勘之結果正確性,可先將範圍 鎖定於某醫學上已知之範圍,再加上醫學上未知影響之檢驗項目去探勘,藉以找 出檢驗值與疾病之關聯性,待有進一步發現後再將其探勘範圍擴及整個血液檢驗 項目。因此,本論文將資料探勘範圍鎖定於肝功能檢驗之 SGOT、SGPT、GGT 及 ALKP 等四項檢驗項目,另外加上醫學未知之影響程度之年齡因素與已知病 患所患有之疾病,作為主要探勘之項目。

其中,GOT 為檢驗血液中麩草酸轉氨脢中的含量,於肝臟發炎時升高;GPT 為檢驗血液中麩丙酮酸轉氨脢的含量,於急性肝臟發炎時會急速升高。GOT、

GPT 是人體內器官重要的酵素,正常的情況下,這兩種酵素在血液中維持正常 的含量,當人體器官發炎或壞死時,血液中的含量就會升高;GGT 為檢查血液 中γ-麩胺基轉氨脢的含量,存在於肝臟與腎藏內,與酒精性肝炎、藥物性肝炎 有關;ALKP 為檢驗血液中鹼性磷脢的含量,這與骨骼疾病有關,如:阻塞性黃 疸、骨骼發炎。

從醫院獲得之血液檢驗資料筆數共有 1297312 筆資料,其中與肝功能檢驗相 關者共有 239242 筆資料,而 SGOT、SGPT、GGT 及 ALKP 等項目所佔之資料

(50)

筆數如表 4-2 所示:

表 4-2、肝功能檢驗之項目筆數 總筆數 239242 筆

SGOT 96601 SGPT 110019 GGT 13177 ALKP 19445

而檢驗項目之資料依照醫院之資料處理程序儲存於資料庫中,分別依照病例 單編號、檢驗單編號、紀錄日期等做為資料分類之依據,而為維護其資料完整性 及正確性,在資料整理過程中也依其代號及分類方式加以整合,其檢驗項目之原 始資料格式如表 4-3 所示:

表 4-3、肝功能檢驗項目資料格式

欄位名稱 資料格式 說明

LAB_NO Nvarchar 檢驗單編號 INSP_NO Nvarchar 檢驗項目 CHART_NO Nvarchar 病歷單編號 RESULT_VALUE Float 檢驗項目的值 BIRTH Datetime 生日

REC_DATE Datetime 紀錄日期

檢驗單編號:由醫院建立之編號,每一次檢驗都會建立新的檢驗單編號。

檢驗項目:記錄每筆檢驗項目之代號,同一筆資料中只會有一筆檢驗項 目,而一個檢驗單會擁有許多檢驗項目,端看醫師看診時所決定檢驗之 項目數量。

病歷單編號:每位病患在就診時由醫院所給予的唯一編號。

檢驗項目值:檢驗血液樣本後所採得的值,由醫院檢驗器材輸入,依據

(51)

不同的檢驗項目有不同的範圍值。

生日:每位病患的出生日期,用以計算每位病患之實際年齡。

紀錄日期:該紀錄實際紀錄之日期,由於血液樣本於採集及化驗有時間 上之差異,所以真正檢驗日期應為紀錄日期。而搭配檢驗單編號及病歷 單編號,可以作為辨識一筆資料之依據。此外於資料整理時,會與生日 互相搭配並產生病患年齡之資料。

4.3 資料前置處理

由於來自醫院方面的資料分為病患基本資料、檢驗資料和疾病資料三個部 分,彼此擁有其關聯欄位,所以我們先將進行資料探勘時所需要之欄位依據其病 歷單編號、檢驗單編號及記錄日期擷取出來,而此時的資料格式就如表 4-3 之儲 存格式,然而這資料仍然不是我們所要之資料探勘格式,因此還需要將資料作進 一步之處理,例如病患年齡之計算及檢驗值與年齡之分類等,待將病患基本資料 與檢驗值等探究因素整理完畢後,再將其與病患所患有之疾病項目加以整合。

對於資料探勘而言,數值型資料是一個連續序列型態的資料,這樣的資料對 非連續序列的資料探勘來說,將難以探勘出結果,原因在於數值型態資料在資料 庫中擁有太多的變化,若是將這些資料當作項目來進行探勘,則會因為其出現相 同的次數太低而失去結果的可信度。然而,在醫療方面有非常多的檢驗值是屬於 數值型資料,因此,我們還需要對這檢驗值作一個分群的動作。

在資料探勘的領域中,分群已有許多演算法被提出並具有良好的效果,然 而,各演算法仍有其有優缺點,為了避免分群演算法對於資料有過於主觀判定,

加上醫療資料有其專業領域之需求及範疇,若要充分利用分群演算法來實作,還 需要做一番調整,而這非關本論文之研究目的,因此便延續[5]研究之分群方式,

參考文獻

相關文件

Debentures are (3) loan capital and are reported as (4) liabilities part in the statement of financial position. No adjustment is required. If Cost > NRV, inventory is valued

For example, even though no payment was made on the interest expenses for the bank loan in item (vi), the interest expenses should be calculated based on the number of

In our AI term project, all chosen machine learning tools will be use to diagnose cancer Wisconsin dataset.. To be consistent with the literature [1, 2] we removed the 16

2 machine learning, data mining and statistics all need data. 3 data mining is just another name for

• Given a (singly) linked list of unknown length, design an algorithm to find the n-th node from the tail of the linked list. Your algorithm is allowed to traverse the linked

Since the FP-tree reduces the number of database scans and uses less memory to represent the necessary information, many frequent pattern mining algorithms are based on its

We try to explore category and association rules of customer questions by applying customer analysis and the combination of data mining and rough set theory.. We use customer

Furthermore, in order to achieve the best utilization of the budget of individual department/institute, this study also performs data mining on the book borrowing data