中 華 大 學 碩 士 論 文
題目:以多核心處理器實現一個在密集性資料上具有 良好效能的探勘演算法
Using Multi-core System to Implement an Effective Mining Algorithm for High Density of Data
系 所 別:資訊工程學系碩士班 學號姓名:M09502011 吳秉璋 指導教授:游 坤 明 博 士
中華民國 九十八 年 七 月
I
中文摘要
資料探勘在過去的研究當中鮮少利用平行處理的方法給予實作,這對於較大
或複雜的資料上都需要花費更多的時間進行探勘,隨著硬體科技的進步,過去在
許多大型實驗室擁有的平行處理設備逐漸的普及化,而探究以往許多平行化的探
勘方法是利用叢集運算給予實作,這對多核心處理器架構來說必然不具有適用性,
以多核心處理器的性質來說,記憶體為各個核心在運作時的共享資源,彼此間的
同步訊息也並非交由高速網路傳遞,因此在一個共享記憶體的多核心處理器系統
上,要如何以最大運算效能及較低的同步等待進行資料探勘,儼然形成另一個相 當重要的問題,本論文將以TM (Transaction Mapping)演算法為基礎建置一個新的
平行式探勘演算法,並稱為PTM (Parallel Transaction Mapping)演算法,其結果是
將資料探勘的工作以多核心處理器的運算能力給予加速,但過程上分別透過資料 結構在記憶體上的管理、調節核心數以降低計算負擔(overhead)、探勘程序上的
資料切割與整合等步驟來完成,以適應性來說;PTM 演算法將只需比原始TM演
算法增加少量平行處理上的計算負擔,使得PTM演算法在單核心處理器上的執行
效果將近似於TM演算法的效能。以加速性來說;透過動態調節計算負擔的方法
在密度較高的資料上將產生更好的效能表現,而最後總結各種因素將可以表現出 PTM是一個相當具有效率的演算法。
關鍵字:對稱多處理機、共享記憶體、工作排程、平行處理、關聯規則探勘
II
Abstract
There were a few researches using a parallel processing approach to implement
data mining algorithm. Without parallel processing, it would take more computing
cost to do data mining. The previous parallel methods is given to the use of cluster
computing implementations, which is not suitable for multi-core processor
architecture. To the nature of multi-core processors, the memory is the shared
resources for each operation cores, and the mutual synchronization signals between
them are transmitting by the bus. Thus, how to do the mining procedure with the
maximum performance in a multi-core processor system which has a shared memory
was become a very important issue. In this paper, a new parallel mining algorithm
based on TM algorithm was proposed, which is called PTM (Parallel Transaction
Mapping) algorithm. The task of data mining approach to parallel processing to speed
up, and through the data structure in memory management, adjust the number of
processors to meet the workload, divide and integrate the mining procedure
information to complete the mining process. If it’s running on single core computer
equipment, due to PTM algorithm than the original TM algorithm only a slight
increase in the calculation load of parallel processing, so PTM algorithm will also be
similar to the performance of TM algorithms.
Keyword: multi-cores, share memory, schedule, parallel, association data mining
III
致 謝
感謝母親未曾放棄過我,讓我渡過叛逆少年的脫序人生,從公立高中休學到
私立職校的路程雖然一路風雨,但也感謝高中老師及學長給予我在資訊環境的啟 蒙,從DOS、95、NT、OS/2、Linux等作業系統到BASIC、Pascal、C/C++、Assembler
各種程式語言都錦囊相授。經過了休學後的心靈沉澱,再次回到職業學校的資訊
科繼續完成高等教育課程,期間非常感謝科主任對我的恩惠,不僅是讓我參與許
多資訊競賽履獲佳績,也因此得以參加技藝優良保送入學的考詴並且順利就讀於
中華大學資訊工程學系。感謝系上老師秉持的對教育的熱誠,為期四年的求學過
程讓我自負的心態轉為謙卑的學習動力。資訊永遠在更新,科技不斷的進步,如 果母親當時放棄了我,那我將永遠是那井底之蛙,總是夏蟬語冰。
人生總會有良師益友;幸逢游坤明老師於大學四年為班級導師,不管在課業
上的督促、生活習慣的指引及言行舉止的矯正總是不遺餘力,而在研究所的時光
裡,老師更以專業、精準的知識帶領我瞭解研究的意涵。此外;也讓我參與許多
專案的規劃及開發,在這過程中學習到了表達、互動及合作的重要性,這些都是
邁入職場前最有效的訓練。如今即將完成學業,叛逆的孩子終將面臨社會教育,
不同的是;未來將必頇掌握在自己的努力與汗水。
吳秉璋 謹致
中華大學資訊工程學系碩士班
中華民國 九十八 年 七 月
IV
目 錄
中文摘要... I Abstract... II 致 謝... III 目 錄... IV 圖 目 錄... V 表 目 錄... VII
第一章 資料探勘形成及平行處理上的演化過程... 1
第一節 研究動機... 4
第二節 研究目標... 5
第二章 相關研究... 6
第一節 Apriori 演算法... 6
第二節 FP-Growth 演算法... 8
第三節 AFOPT 演算法 ... 10
第四節 Transaction Mapping 演算法 ... 13
第五節 叢集運算... 16
第六節 多核心處理器運算... 19
第三章 研究架構... 22
第一節 記憶體管理... 24
第二節 核心數調節... 27
第三節 Parallel Transaction Mapping 演算法... 31
第四章 實驗設計與結果分析... 36
第一節 FIMI 測詴資料庫... 36
第二節 IBM 資料產生器... 46
第五章 結論與未來研究... 54
文獻參考... 57
V
圖 目 錄
圖 2–1、Apriori 演算法流程架構圖 ... 7
圖 2–2、Header table 及 FP-tree ... 9
圖 2–3、AFOPT 之資料結構 ... 11
圖 2–4、AFOPT 的合併範例 ... 11
圖 2–5、字典樹範例... 14
圖 2–6、重新針對 FP-tree 項目進行交易編號範例 ... 15
圖 2–7、建置 FP-array 所使用的 FP-Tree 範例 ... 20
圖 2–8、FP-array 範例 ... 20
圖 2–9、經過壓縮後的 FP-array... 21
圖 3–1、降低多核心處理器上閒置及行程等待的關聯式資料探勘架構... 22
圖 3–2、PTM 演算法執行程序及設計架構 ... 24
圖 3–3、對於大小為 10 的雜湊表進行插入項目範例... 25
圖 3–4、經過記憶體管理程序在大小為 10 的雜湊表進行插入項目範例... 27
圖 3–5、串列結構採取記憶體管理策略範例... 27
圖 3–6、OpenMP 的工作排程範例 ... 29
圖 3–7、交易項目重新編號程序... 31
圖 3–8、以項目對照方式建置 FP-tee 程序 ... 33
圖 3–9、以對照編號建置的的樹狀結構... 33
圖 3–10、交易項目重新編號程序... 34
圖 3–11、項目交集運算的平行處理程序... 35
圖 4–1、T10I4D100K 項目頻率分佈區間 ... 37
圖 4–2、T40I10D100K 項目頻率分佈區間 ... 37
圖 4–3、TM 及 PTM 演算法執行效能比較 ... 38
圖 4–4、PTM 演算法在不同核心數探勘 T10I4D100K 表現 ... 39
圖 4–5、PTM 演算法於 T10I4D100K 探勘上加速表現 ... 40
圖 4–6、PTM 演算法在 T10I4D100K 動態調節及固定核心數間比較 ... 40
圖 4–7、PTM 演算法在 T10I4D100K 的動態調節及固定核心數間標準化量差 . 41 圖 4–8、PTM 演算法在不同核心數的探勘 T40I10D100K 表現 ... 42
圖 4–9、PTM 演算法於 T40I10D100K 探勘上加速表現 ... 42
圖 4–10、PTM 演算法在 T40I10D100K 動態調節及固定核心數間比較 ... 43
圖 4–11、PTM 演算法在 T40I10D100K 的動態調節及固定核心數間標準化量差 ... 43
圖 4–12、T10I1D100K 項目頻率分佈區間 ... 46
圖 4–13、PTM 演算法在 T10I1D100K 的資料探勘時間 ... 47
圖 4–14、PTM 演算法在 T10I1D100K 的加速效果 ... 47
圖 4–15、PTM 演算法在 T20I10D100K 的資料探勘時間 ... 50
VI
圖 4–16、PTM 演算法在 T20I10D100K 的加速效果 ... 50 圖 4–17、PTM 演算法在 T40I10D100K 的資料探勘時間 ... 51 圖 4–18、PTM 演算法在 T40I10D100K 的加速效果 ... 51
VII
表 目 錄
表 2–1、項目交易編號區間列表... 15
表 2–2、演算法比較表... 16
表 3–1、阿姆達爾定律在 95%平行度及 2%固定負載上的加速表現 ... 28
表 3–2、原始及篩選排序交易資料... 32
表 3–3、原始交易項目排序及編號... 32
表 3–4、各項目交易編號區間... 34
表 4–1、FIMI 測詴資料比較 ... 37
表 4–2、T10I4D100K 為基楚的各項實驗數據 ... 44
表 4–3、T40I10D100K 為基礎的各項實驗數據 ... 45
表 4–4、變動平均交易長度的測詴資料比較... 46
表 4–5、PTM 演算法在單核心及四核心上的效能評估表 ... 49
表 4–6、改變平均交易常度為基礎的各項實驗數據 1... 52
表 4–7、改變平均交易常度為基礎的各項實驗數據 2... 53
表 5–1、PTM 演算法缺失及未來改善目標 ... 56
1
第一章 資料探勘形成及平行處理上的演化過程
資料探勘並不是一種新的技術,而是一個方法;透過資料探勘這樣的方法使
人們得以從大量的、不完全的、具有雜訊的、模糊的、隨機的資料庫當中發現到
一些隱含的、規律性的、事先不知道的以及潛在有用處的資訊。這些僅僅是資料
探勘在功能上的表述,如果缺少了專家來判定有用的結果;那資料探勘就只是一
個蒐尋資訊的工具,這也說明了資料探勘並不是萬能,對於各種問題的解決方法
依然需要依據經驗、知識等法則來斷定,資料探勘可以說是經由時間與空間演進 的一門知識與學問。
資料探勘的發展行而有年,最早可溯及到統計(Statistics)作業,隨之當電腦
設備的創造以及自動化作業的發展,人們便開始利用計算機設備來協助許多繁雜 性的工作,其中專家系統(Expert System)是在人工智慧發展上衍生出來的,若以
概略式的說法來看,可以將專家系統視為一些知識庫及推理機制的結合,而其應
用通常都是解決些沒有公認的理論和方法、數據不精確或不完整等任務。透過這
樣的工具人們得以便利的解決部份事務,但也由於專家系統需要有系統性的推理
機制,這讓整體發展普及化受到相當大的限制,隨即便開啟了另一項重要的里程 碑:模式識別(Pattern Recognition),其最大的代表性產物為光學字符識別(OCR)
及語音識別,在這類的工作上都有共通特點;那就是利用計算機設備來搭配數學
邏輯性運算來達到自動判定作業。科技永遠被應用於更貼近人類的行為模式,當 自動判定的技術有了相當顯著效果時,機器學習(Machine Learning)便得到了廣大
2
的回響,主要是因為在計算機設備被賦予了學習能力後,再搭配可以自行解決問
題的機制,那一具計算機設備將不再是單純的自動化裝置,雖然本質上依然是被
動性將資料置入並分析問題,但卻可透過自動回饋機制來主動答覆或提報問題。
至此之前;資料在操作議題上幾乎以特製化的方式所形成,當時由埃加德.弗蘭
克.科德(Edgar Frank "Ted" Codd)於IBM工作期間所提出的關聯式資料庫模型[1-2]
影響至今最深,如今SQL查詢語言即是以該模型為基礎所設計出來的資料庫工具。
科技隨著時間及專家心血投入得到莫大的進展,在這過去對於問題的研究著重於
發展嶄新的技術,雖然新的技術往往可以獲得更多的便利性,但也容易使人忽略
問題的本質,如今對於資料的儲存與處理方法皆有著各種工具來達成,但資料依
然是被動性的被儲藏於媒介當中,如何運用既有資訊來創造或發掘更多有用的知
識 擄 獲 了 眾 多 學 者 的 青 睞 , 如 今 資 料 庫 知 識 發 現(Knowledge-Discovery in Databases)經常出現在各種領域上的應用;如果簡單的說:『資料庫知識發現就
是在大量既有資料裡搜索出許多隱性的關聯』;那這僅是對於資料處理後的結果
而論,其中要如何找到人們想要的知識那將會透過專家系統、模式識別、機器學
習等等方法進行,現在可以把資料探勘的工作界定屬於資料庫知識發現領域,但
資料探勘的具體實現方法依舊是隨著人、事、物等等不同來做改變,資料探勘是 一種作業行為也同樣是一種協助人們解決問題的途徑。
有了許多相關的技術能將複雜問題進行分析與處理後,相關的課題也一一的
被進行討論與研究,其中有的學者著重於如何改善基本程序上的處理效能;這樣
3
的研究核心在於不斷產生日益複雜化的資料後,許多有時效性的資訊經常不易發
掘,若要能夠即時地將資料在有效期限內進行分析及探索往往會耗費不少資源,
叢集運算(cluster computing)的技術正好提供了一個相當良好的運作方式,當一組
計算機設備透過高速網路串聯並且以相同的通訊協定來交換資料,這就如同計算
機設備各組件透過系統匯流排傳遞訊息一樣,就意義上而言;叢集運算好比在一
台獨立計算機上運算般的便利。但除了叢集運算的工作方式外,對稱多處理機 SMP(Symmetric Multiprocessor)是另一種以共享記憶體模式的運算方式,其運作
原理是透過兩個以上的處理器在單一計算機設備上來進行平行運算,資料交換的
過程僅需要藉由資料匯流排的傳遞,所以在效能上的表現相當優異,但也因為匯
流排的頻寬限制而無法有效提升處理器的數量。依據摩爾定律的描述,積體電路
在電晶體的數量上每十八個月將能夠成長一倍,但日前在積體電路的製程受到限
制的情況下,處理器的技術便著重於多核心的發展。對於計算機的發展史來看,
多核心的技術並不特別的顯著或重要,但普及化策略確實使得個人電腦具備了更
強大的平行運算能力,有別過往採取的分時多工作業方式,多核心的運算方式將
計算機設備變得更如同真實世界上團隊模式。雖然在多核心的計算機架構上可以
獲得更好的效能表現,但也不是隨意將工作均衡分配給各處理器核心運算即可達
成;依照問題本身的特性、資料的相依度、特有的資料結構、工作排程等等都將 影響到整體的計算效能表現。
4
第一節 研究動機
目前共享記憶體系統當中最常被採用的程式設計工具為OpenMP[3],主要是
在於共享記憶體的多核心程式設計的指導性註解,讓程式開發人員僅需要以抽象
描述來進行程式碼的開發,隨後透過編譯器的語意分析便可以自動將程式碼轉換
成實際運作上的多程序執行碼,程式設計人員雖然可以透過同步及互斥訊號來精
準掌控程式於運作上的流程,但尚不能符合高度平行化的要求,最重要的因素在
於工作切割方法及資料結構的設計上,倘若工作無法均衡的分配至各處理器進行
運算,往往會造成等待的訊號頻繁且過長,接著便造成運算效能不彰的情況發生,
但不幸地;當工作在分配的過程中,強制將不足量的資料進行切割會導致主程序 過於忙錄在工作排程及資料運算上的線程(thread)切換,這樣的負載情況並非一
個好的運算程序所該經常發生的問題。此外;一個容易被忽略的潛在性問題是資
料結構,由於程序運作過程中資料往往是屬於未知大小,最簡便且有效的方式就
是利用動態配置記憶體來進行資料存取,因為動態記憶體配置利用指標來存取記
憶體空間,這在設計邏輯上相當簡單,但卻經常使記憶體空間變的破碎不堪,隨
時間逐漸過去,處理器變得難以預測指標性結構的記憶體位置,最後成為非常不
具有執行效能的運算程序,有鑑於各種問題得知若要有效的利用對稱多處理機系
統來提升資料探勘效能,就需要同時在資料結構及記憶體配置管理、工作分配與 排程、演算法設計等方向同時進行探討。
5
第二節 研究目標
各種以平行處理環境實現關聯規則資料探勘都不同的改善目標,而這些目標 皆與平行化過程上的執行環境息息相關,舉OpenMP的處理方式來看,確實被給
予執行能力的單位量為線程,若以多於核心數的線程來執行程序,將會造成各核 心頻繁的進行環境切換(context switch),反之較少的線程將無法充份的利用多核
心的運算資源,過與不及都無法獲得最佳化的效能,因此;本論文將探討如何控 制有效的線程數量,以避免環境切換與同步訊號額外負載。
除了即時決定有效的平行化程度外,根據許多研究皆已具體指出資料結構對 於快取記憶體的影響性,以當前處理器架構而言L2快取至少都存在有128KB以上,
其大小對於微量的資料結構皆足以預測及預載,但為了避免記憶體指標大幅度的
跳躍、配置與釋放,將透過記憶體預先配置的方式來管理各種資料結構,這樣的 機制可以同時解決記憶體在連續性及指標跳躍上的問題。
有了控制核心及記憶體管理的方法後,結合TM (Transaction Mapping)演算法
將建置一個新的平行化演算法,這演算法被稱之為PTM (Parallel Transaction
Mapping),其目的在於以平行處理的計算資源達到探勘加速的效果,若以單核心
的環境執行PTM演算法,也因為在進行工作切割的程序已給予適度的調節(平行
化上的固定計算負載),使得PTM演算法在探勘的效能將近似於TM演算法,其差
別僅只於工作在切割上的計算負載。
6
第二章 相關研究
隨著資料探勘技術快速發展及探勘結果被廣泛地運用,許多學者相繼投入資
料探勘研究領域,然而在各種探勘方法之中,以關聯規則式的探勘最常被進行討
論,到目前為止;不斷地有新的研究著墨於資料結構及項目驗證機制,以改善探
勘過程必頇重覆掃描資料庫等問題。因此,針對部份較有代表性研究在特性及方 法上進行探討。
第一節 Apriori 演算法
Apriori演算法[4]是由Agrawal等學者在1994年對關聯式法則進行資料探勘的
演算法,後續有許多研究以其為基礎方法來改進或運用;例如Savasere等學者於
次年提出改善CPU及I/O上的處理效能演算法[5]、Mueller提出PARTITION演算法
及平行化版本的SEAR及SPEAR[6]、Park等學者透過雜湊的方法來避免資料庫的
反覆存取DHP演算法[7]、Zaki等學者利用共享記憶體的方法來使其平行化[8-9]
等等,於2001年Agrawal等學者更是利用了投影樹(tree projection)的方法來進行資
料探勘[10],如今Apriori演算法已經是最具代表性的演算法。
Apriori演算法在資料探勘的過程上將換不斷掃描資料庫,並且依據支持度來
篩選出所有符合條件的項目集合,當此集合不為一個空集合時;便將該集合裡的
項目交互組合成為新的候選項目等待驗證,反覆同樣的程序直到無法產生更多的 集合為止便形成了關聯式法則的依據,其演算法的步驟如圖 2–1。
7
圖 2–1、Apriori 演算法流程架構圖
詳細的步驟如下:
1. 設定門檻值。
2. 完整的比對資料庫以取得所有符合門檻值的項目集合
3. 不為空集合時將持續進行步驟4與5
4. 交叉組合項目集裡的所有項目來產生新的候選項目集合
5. 以候選項目集合來比對資料庫以取得所有符合門檻值的新項目集合
6. 利用所得符合門檻值項目集合來分析得到最後的關聯式法則。
此演算法核心是驗證項目組合在資料庫中存在的筆數是否符合門檻值,而候
選項目集是由已經過驗證交易筆數的項目集交互組合而來,簡單說來不斷的組合 長度為k的項目集來產生需要被驗證的k+1項目集,當候選項目集不為空集合時便
8
進行比對資料庫來驗證其是否符合門檻值,反覆的程序將進行至無法組合出更多 的項目集為止。
Apriori演算法探勘過程中,所有經過組合後的候選項目都需要再次比對資料
庫,這在探勘上的效率因為龐大的交易資料而變的緩慢,此外;每次掃描資料庫 於實體硬碟經常發生長時間的I/O等待作業,嚴重將連帶造成作業系統效能降低,
因此後續便有更多的學者以Apriori演算法基礎模型進行研究。
第二節 FP-Growth 演算法
FP-Growth演算法[11]是由Han等學者於2000年所提出,相較於Apriori方法,
FP-Growth僅僅需要對資料庫進行兩次完整的存取,在存取的過程中將建立出一
個索引表(header table)及反應出原始交易資料的樹狀結構(FP-tree)。隨後便可以
透過FP-Growth的探勘程序反覆的產生新的子結構,直到無法產生更多的項目為
止,圖 2–2為一個完成建置的範例。
由於FP-tree在建置之前,針對所有儲存於header的交易項目進行了一次統計
及排序,因此在建置上將原始的交易資料依據統計後的頻率排序並且插入FP-tree
當中,頻率大的項目將會靠近於樹根(root),這樣一來便得以壓縮原始資料庫裡
龐大交易資料,對於header及FP-tree的兩個結構主要功能為:
1. 項目索引(header):利用資料串列(link-list)的方式將位於FP-tree節點上的
相同項目給予串接,並於探勘階段快速取得任何項目資訊。
9
2. 字首路徑(prefix path):以FP-tree上的任一節點出現頻率往上至樹根的路
徑即為原始資料庫所存在的交易項目與次數。
圖 2–2、Header table 及 FP-tree
一個完成建置的FP-tree將交由FP-Growth演算法來進行探勘的工作,當探勘
程序進行時將由出現頻率最低的項目開始進行搜尋,其搜尋的過程同時會依照所 有字首路徑來產生新的索引結構及FP-tree,其子結構被稱為候選樹(candidate
FP-tree),若FP-tree不為一個單一路徑(single path)時將以遞迴呼叫FP-Growth來進
行探勘。
FP-Growth演算法在探勘的程序上會反覆產生許多候選樹,且整體結構會經
由大量的記憶體指標來進行控制,而且當原始交易項目多且平均交易長度長的情
10
況下,樹節點的成長量將變得很高但利用率反而降低。同時若以平行處理的方式
來看,任何以指標形態建立出資料結構在平行化的過程會造成相當大的考驗,不
管是資料的集合、通訊、交換、行程等待都相當困難,且其不連續性的記憶體操
作也降低了處理器在快取上的效率,因此有許多研究針對各種問題進行改良,例 如:Wang等學者以上到下的探勘方式(top-down)來降低記憶體的使用量[12],
Han、Borgelt、Grahne、Jianyong、Xin等學者所領導的改良式演算法[13-17]等等。
第三節 AFOPT 演算法
AFOPT (Ascending Frequency Ordered Prefix-tree)[18]是2003年由Guimei等學
者所提出,這是一種新的資料結構,利用這種資料結構對於緊湊或稀疏的資料庫
都能有效率地探勘。比較特別的是在資料結構上同時使用到樹狀結構及陣列,陣 列是用來儲存條件長度以下的交易資料。由於此方法不像FP-Growth演算法需要
花費大量時間去建置節點的連結和索引表,因此可節省了不少建構的成本。
AFOPT的設計原理為先掃描資料庫以統計出所有項目的出現頻率,緊接著
再次掃描資料庫,將每一筆交易資料存入記憶體,刪除不符合門檻值的項目後再 以各項目的出現頻率進行升冪排序並且插入AFOPT結構之中,對於此結構的設
計方法相當的簡潔,同時也降低了FP-tree在指標上的用量,圖 2–3為一個建置
完成的AFOPT範例。
11
圖 2–3、AFOPT之資料結構
圖 2–4、AFOPT 的合併範例
AFOPT演算法使用良好的升冪排列結構,並且是以由上至下的方法來探勘
出所有的高頻項目集合,當探勘程序開始時,將會從根節點後的第一個子樹結構
開始進行深度優先的處理,當第一個子樹結構探勘完成,含有該節點項目的所有 高頻項目集皆會被組合出來,隨後再將該節點下的子結構向右合併(merge)到未
進行探勘的節點之下,這一個合併的程序稱之為push-right(如圖 2–4)。這不像
12
FP-Growth演算法需要額外的成本建構候選樹,AFOPT演算法在掃描的時候只有
更新節點的支持度與節點的串列,對於記憶體在操作上的需求相當的小。
AFOPT的執行步驟如下:
1. 掃描資料庫統計項目出現頻率並篩選符合門檻值的項目。
2. 依據項目的出現頻率進行升冪排序。
3. 重新掃描資料庫,將每筆交易資料移除非高頻項目,再依據步驟2排序
並插入於AFOPT樹狀結構。
4. 由高頻至低頻並且以深度優先掃描樹結構,產生所有符合支持度的項目
集並且將子結構向右合併到剩餘樹結構。
5. 同步驟4,直到樹結構為空集合。
與FP-Growth演算法相似,AFOPT作業原則為完整的掃描資料庫以統計所有
符合門檻值的項目,再依項目的頻率進行升冪排序,並且在整體結構當中同時運
用到樹結構及陣列的方式,所以進行資料探勘的程序時,可以快速的經由樹結構
的索引及陣列的統計來提升計算效能,另外在進行合併的程序上;陣列在搬移或
合併上的處理也相當的方便,因此整體資料結構到演算法在相互配合的情況下表 現出良好的資料探勘效能。
13
第四節 Transaction Mapping 演算法
Transaction Mapping (TM)演算法[19]是一個將原始資料庫交易給予重新進
行邏輯性編號的方法,其基礎方法主要是透過FP-tree的建置後再針對各個樹節點
項目給予邏輯上的重新編號,但最大的差異在於TM並不需要建置索引表結構,
由於在FP-tree建置時以項目的出現頻率進行壓縮式編排,因此整體樹結構必然是
為一個原始資料庫的對照組,而TM利用了這樣的特質,將各項目重新編列虛擬
編號及交易序號,如此一來各個項目將從原始資料庫上零散的交易序號整理成連
續性的交易編號區間,當項目以連續性的交易編號區間作為表示時,整體資料探
勘的程序將可透過多組編號區間的交集運算來計算出總頻率,因此這樣的作法同 時也避免了以TID list (transaction id list)之類的演算法在交集運算上的複雜度,其
完整的程序可濃縮成三個主體步驟進行:
1. 建置一個未具備有索引表的FP-tree結構(同FP-tree建置程序)
2. 以深度優先探訪FP-tree所有節點並給予各個項目邏輯性的區間編號
3. 以字典樹[10]架構(圖 2–5)來產生組合及運用交集運算來驗證項目集
正如同FP-tree建置方法,首先會對資料庫進行完整的掃描兩次來建立出一個
FP-tree結構,隨後採取深度優先的策略為各個項目進行有連續性的交易編號編列,
在探訪的過程中將利用下列公式為各個項目建立新的交易編號:
14
s1=s e1=s1+c1-1
si=ei-1+1, for i=2, 3, …, m ei=si+ci-1, for 2, 3, …m
在循序探訪完所有樹節點後各個項目的交易編號區間皆已完成,其完整的結 構將如圖 2–6所示,各個項目最後所產生的交易編號區間如表 2–1所示。而
TM在探勘的方法上是利用字典樹的組合來進行各個項目的交易編號區間上的交
集運算,也因為僅需要透過循序式的交集運算便可以迅速的完成所有驗證程序。
TM演算法最主要的優點是以虛擬的交易編號來替代原始交易編號零散的問題,
並且可透過較容易存取的陣列結構來儲存,因此對於該方法在平行化的處理上將 獲有正面的效果。
圖 2–5、字典樹範例
15
圖 2–6、重新針對 FP-tree 項目進行交易編號範例
表 2–1、項目交易編號區間列表
高頻項目 交易區間
1 [1, 5]
2 [1, 2][6, 8]
3 [1, 3][6, 6]
4 [7, 8]
經由表 2–2可以清楚的比較出各個演算法的優缺點,但由於資料是隨著時
間不間斷的產生,這將會造成資料庫日漸龐大與複雜化,如此大規模的資料庫已 難以讓單一計算機(處理器核心)再有更好的運算加快效果,為了改善及解決這樣
的問題,可透過平行或分散的作業方式來提升資料探勘的效能。而實際上對於平 行或分散的處理方式早有許多文獻在探討,有的依據Apriori演算法為基礎結合叢
集運算(cluster computing)或共享記憶體(SMP)的方式進行運作,也有在網格(grid)
16
環境上實現的探勘方法,各種方法皆有所差異及考量,例如透過叢集運算或網格
上實踐的方法大多需要將資料交換的通訊機制及時間納入考量、共享記憶體經常
在快取及行程等待上進行鞏固,如今個人計算機設備平價化所帶來的衝擊下,過
去平行化的處理方式得以實現於高速機房設備外的環境,為了能妥善運用計算機 設備的資源,除了探討許多有價值性的演算法外,許多平行化方法也值得關切。
表 2–2、演算法比較表
演算法 優點 缺點 平行處理能力
Apriori
1. 整體程序簡易
2. 適用於任何資料儲
存方式或媒介
反覆存取資料庫,容易造
成系統效能降低 相當易於實現
FP-Growth 1. 密實的樹狀結構 2. 項目索引便利
大 量 的 子 結 構 會 被 產
生,對於記憶體負擔大 指標結構不易於平行化
AFOPT 複合式資料結構能降低
記憶體在操作上負擔
樹結構的記憶體指標操
作繁多 指標結構不易於平行化
TM
1. 交 易 項 目 重 新 編 號,連續性高
2. 不需要產生任何候
選項目結構
項目龐大且支持度低將 造成效能降低
連續性的交易編號區易 於平行化
第五節 叢集運算
早期的研究裡當遇到系統效能及資源上的瓶頸時,叢集運算的方法是一種相
當好的解決方法,不過依據問題本身性質或資料在處理上的相關性,也不盡然所
有演算法都適用於平行化的處理方式,當一個問題得以被進行切割則平行化的處
理方式才能夠發揮作用。不全然相同的問題是;叢集運算是一種集中式管理的運
17
算方法,經由一台運算能力較強的設備(master)負責資料整理及行程同步管理,
雖然位於叢集環境上的設備皆透過高速網路進行串接,但如何在資料傳遞及行程 同步上取得平衡相當的重要,因此有許多不同的研究進行相關探討。
Apriori的架構是反覆的從資料庫上進行驗證項目集的頻率是否符合門檻值
的設定,這樣的架構本身相當容易進行平行化的處理,但依據不同的平行化作業 方式可分為統計分散(count distribution)、資料分散(data distribution)、候選項目分
散(candidate distribution)、混合統計及候選項目分散(hybrid count and candidate)
等等方法,對於統計、資料、候選項目的分散方法皆會有資料交換行程或同步行
程過長的因素存在,因此較後期的研究可以發現到許多混合式的方法相繼被提出,
在這類的研究當中例如Mueller[6]所提出的SEAR及SPEAR演算法,其主要的差異
在於SPEAR多了分區(partitioned)的方法、Park等學者所提出的PDM演算法[20]、
Agrawal及Shafer兩位學者共同發表了改進Apriori在平行化處理上的演算法[21]
以及[22]由Orlando等學者更近一步改善DHP演算法,並且利用平行處理的DCI與
ParDCI兩個演算法等等。
反觀FP-Growth的架構便不這麼簡單,主因是FP-tree建置的過程上將產生許
多指標性的結構,造成在平行化的過程中對於資料集合交換產生不少負擔,若依 循統計分散的方式設計,往往也會造成行程同步上的困難,不過因為FP-Growth
演算法本身的特性,其處理效能遠比Apriori的架構優越,因此依然有相當多的研
究先後探討其平行化的方式,例如;Zaiane等學者於2001年所提出的MLFPT演算
18
法[23]、Otey等學者2004年所提出的ZIGZAG演算法[24]及PFP-Tree[25]是由Javed
及Khokhar兩位學者於2004年提出,這些都是將原始FP-Tree平行化處理的方式,
主要的程序都相當的類似;透過資料的平均切割並且分散至各個計算節點,各個
計算節點再依據局部性私有資料來進行高頻項目的統計,所有完成統計的項目被
稱為區域性的高頻項目集,這是因為每一個計算節點在統計的過程中尚未能獲得
其他計算節點所統計的結果,所以各區域性的高頻項目集依然無法進行資料探勘
的程序,因此需要將所有的統計結果給予合併,在合併完的高頻項目集則稱之為
全域性的高頻項目集,最後這個完整的項目集會重新分配到所有計算節點,同時
也經由資料分配的計算公式來決定各計算節點所需要進行探勘的項目。當各個計 算節點獲得完整的高頻項目集後,便將原有的部份資料進行FP-tree的建構,但是
由於各計算節點所要進行探勘的項目並不相同且資料分散在各計算節點上,所以
會透過資料交換的方式來取得散落各計算節點的局部資料,完成資料交換的程序 後,各計算節點即可運用FP-Growth的程序完成資料探勘,每一個計算節點在完
成探勘工作後,即可收集到完整的資訊且合併成完整的高頻項目集。正是因為 FP-tree本身的資料結構不易平行化處裡,因此當資料交換行程難以掌握情況下;
TM演算法若透過平行處理的方式來產生完整的交易編號區間也有相同的困難,
但完整的交易編號區間是具有連續且獨立的特性,因此反而可以透過平行化的交 集運算來提升整體探勘運算。
19
第六節 多核心處理器運算
多核心處理器的技術是延伸於對稱多處理機的架構,當科技進步的同時電晶
體製程提升,在單位面積下便可以置入更多的電晶體,如今因應多媒體系統的發
展,雙核心、三核心、四核心等等中央處理器紛紛出現,而且以相當平價的方式
正式進入消費市場。當然在早期對稱多處理機大多屬於研究型機構所擁有,透過
這些設備以共享記憶體的方式來平行化、加速程式的運作效能,不例外的;在資 料探勘的領域中也有相當多的研究在討論,[8-9, 26]系列性的研究由Zaki所率領
的學者討論、Zaiane等學者也於2001年發表以FP-Growth為基礎的演算法[23]、
2007年由Li Liu [27]等四位學者曾經探討過關聯式資料探勘在多核心處理器下的
相關問題,由於關聯式資料在探勘的過程中,許多演算法會產生出大量的不連續
記憶體資料,這些片段性的資料在處理器執行運算指令時常常跳出快取記憶體的
內容,使得處理器需要直接從存取速度較慢的主記憶體取得資料,這稱為快取失 誤,失誤率越大即表示處理器大多數的執行狀態都是在等待記憶體的I/O,處理
器未能盡全力的來執行資料運算。
FP-array就是在這樣的情況下被提出來,雖然對於快取命中的討論FP-array
並非最早提出,但對於近代多核心處理器上的研究來說,這是一個相當不錯的參 考性文獻。該方法所提出的架構來說,FP-array僅是一個資料結構上的改變,透
過轉換FP-tree的資料結構至兩個資料陣列當中(item array, node array),這兩個陣
列的特性是對於快取來說是連續的,並且沒有任何指標在操作的記憶體跳躍性行
20
為,而轉換的程序是依據深度優先(depth-first)來探訪完整的FP-tree,並且將完整
的路徑與交易資訊存入item array及node array當中,舉例來說在圖 2–7當中第一
個以深度優先探訪到的路徑資訊為ABE,且存在有一筆交易資訊,對於項目E來
說的父節點有B與A兩個,因此在node array當中將會存入{ 6, 1, 2 }的資訊,其中6
所表示的是在item array當中的FP-Tree路徑起始項目位置,圖 2–8則為一個建置
完成的FP-array範例。
圖 2–7、建置FP-array所使用的FP-Tree範例
圖 2–8、FP-array 範例
21
圖 2–9、經過壓縮後的 FP-array
對於FP-array的基本架構只是藉由不同的資料結構轉換而來,但這樣的記憶
體使用方法尚不能稱為非常有效的利用,主要因素在於當探勘程序在處理D及E
兩個項目時,將會有共通的路徑CA,而這些項目在FP-array當中也會重覆表示,
為了降低整體快取記憶體在預測上的準確度,可以再將共通的路徑資訊進行壓縮 處理,當然對於壓縮的處理上將以動態調整的方式進行,舉例來說;1個位元組
所能表示的數值最大為256個項目,2個位元組為65536個項目,其壓縮率會依據
所有的項目數量來決定,其上限為4個位元組,圖 2–9則為經過壓縮程序所產生
的高密度FP-array資料結構。
TM演算法除了在產生項目交易編號區間的過程上採用了FP-tree的不連續性
記憶體處理模式,其完整的交易編號區間即為連續且密集的資料,因此即可透過 陣列來進行資料存取,這使得TM演算法在探勘工作上的交集運算獲得了較佳的
處理器執行效能。
22
第三章 研究架構
在過去對稱多處理機及多核心系統上的研究當中指出;許多資料結構在設計
上常採用動態記憶體配置的方法來處理未知的資料量,同時也發現到指標對於程
式開發上的便利性會造成處理器在執行快取預測上不小的負擔,並且也不容易實 現其平行化的運算方式。因此;本論文將透過管理記憶體配置的方法來改良TM
(Transaction Mapping)演算法的結構,並且透過動態調節的方法來分配適當的工
作切割數量,以便降低處理器在環境切換上的額外負擔,這樣的設計模式可以說
是將處理數量視為最大使用單位,並依據當前資料量來進行實際參與運算的處理
器數量決策,這是相當有效抑止在對稱多處理機系統下大量環境切換及行程等待
的方式,對整體的運作效能上,動態調節處理器使用量的方法僅需要比未進行平
行運算的程序增加少量處理器數量決策負擔,所以若運行於單一處理器的系統上 依然可以獲得不錯的運算效能。
圖 3–1、降低多核心處理器上閒置及行程等待的關聯式資料探勘架構
23
於 後 續 章 節 所 提 出 的 資 料 探 勘 平 行 處 理 方 法PTM (Parallel Transaction Mapping)將分作三層式架構(圖 3–1),其中囊括了記憶體管理的作業、在工作
排程上調節核心數、資料探勘演算法,其主要的作業目標為:
記憶體管理: 解決利用系統函式配置記憶體時所造成的記憶體不連續性,
同時將資料建置時指標性結構以短跳躍的方式存在於記憶體
空間上。
調節核心數: 多核心處理器在工作分配上常常有許多固定負載(overhead),
並且在微量工作時多核心的處理反而會增加行程同步與環境
切換問題,利用即時調配線程數來獲取較佳的處理器效能。
探勘演算法: 透過改善TM演算法的計算方式並且給予平行化處理的能力來
提升資料探勘效能。
完整的資料探勘程序將分別以三個層面進行探討,當資料以動態記憶體配置
來存取時,採用基礎性建設的記憶體管理方式來縮小指標在操作上的跳躍程度,
隨後在探勘程序則由核心數的調節來掌控較少的固定負載,最後將TM演算法上
的交易編號區間交集運算給予適度平行化,因此;對於三個層面來說將是密合的 作業方式,而非個別的三種作業程序。
24
圖 3–2、PTM 演算法執行程序及設計架構
PTM演算法整體的設計及執行程序可由圖 3–2得知,主要記憶體管理的方
法將會運用在任何資料結構的操作上,並且以動態調節處理器數量的方式來掌控
驗證程序在平行處理過程上的計算負載,除了驗證程序外,PTM演算法在項目的 統計、建構FP-tree到產生新的交易編號皆為單線程的處理方法。
第一節 記憶體管理
經由許多學者的討論及研究[9, 27-28],皆說明記憶體管理上的不同將會影響
整體處理器在運算上的效能表現,這樣的問題在一個對稱多處理機的系統下更是
突顯出重要性,為了提高資料探勘在平行化工作上的效能,本論文在基礎性的資
料結構將以有效記憶體配置的方法來進行建置,可分成雜湊、樹、串列三種。其 1. 統計項
目頻率 2. 給定項
目代碼
以項目代 碼建置 FP-tree
產生虛擬
交易編號 工作分配 交集運算 資料收集 記憶體管理
調節核心數量
25
中對於記憶體定址管理上,雜湊是其中一種經常被使用的方法,當一個設計得當 的雜湊函式(hash function)將可以產生一對一的雜湊表(hash table),但對於資料探
勘的工作來說,項目的數量根據不同情況皆有所不同;因此要設計出一個完美雜 湊函式(perfect hash function)相當的困難,所以實際應用上對於重覆項目在索引
上的處理方式多以串列給予實作,至此可以發現一個相當重大的問題;過大的雜 湊表經常無法將其填滿,反之過小又會造成串列的龐大,圖 3–3是在一個大小
為10的雜湊表裡連續插入13233的範例。
圖 3–3、對於大小為10的雜湊表進行插入項目範例
為了降低雜湊表在記憶體定址管理時的處理器及記憶體消耗負擔,必然需要 針對雜湊表大小進行動態配置的工作,在套用於以FP-tree為基礎架構的應用上,
可以發現到第一次掃描資料庫完成後將獲得最大項目長度及一階高頻項目數量
的資訊,本論文將採取各階層雜湊表大小遞減的策略來建造一個樹結構,其遞減
26
數量公式如下:
雜湊表大小=一階高頻項目數量-一階高頻項目數量
最大項目長度 *(最大項目長度-階層)
經過該公式的計算,可以將一個樹結構各階層節點所需要配置的雜湊表大小
計算出來,但就實際的操作上依然無法避免重覆項目所造成的串列問題,為了盡
可能以連續性的記憶體空間來提升效能,在配置記憶體的工作上將不能僅透過系
統記憶體配置函式來產生,而是所採取定額產生記憶體空間來交付管理程序將記 憶體空間實際分配給特定資料結構使用;以範例圖 3–3來說,項目3所產生的串
列在系統配置上皆為不連續的狀態,透過管理程序後的配置將可讓項目在產生跳 躍性行為上獲得較小的移動,其範例如圖 3–4所示。
串列技巧也經常被運用於各種實作上,對於串列所衍生的問題也同樣是大量
的指標造成操作上的記憶體跳躍行為,若在少量的資料需要被建置時往往不會造
成太大負擔,但以關聯規則的探勘程序來說,結構數量是取決於符合門檻值條件
的項目數,這會是相當大的變異值,從單一結構至成千上萬皆有可能發生,倘若 缺乏妥善的管理嚴重也將導致系統崩壞(system crash),因此相同於雜湊的管理方
式也運用在串列的結構上,透過前置作業請求系統配置恰當的記憶體空間,往後
在程序上有任何記憶體需時便可以存取該段記憶體空間,在整體架構上串列結構 依然保存動態性,但對於指標在操作上的跳躍也同時保持在最小幅度,圖 3–5
27
為一個進行記憶體管理後的串列結構範例。
圖 3–4、經過記憶體管理程序在大小為 10 的雜湊表進行插入項目範例
圖 3–5、串列結構採取記憶體管理策略範例
第二節 核心數調節
經由阿姆達爾定律(Amdahl's law)來說在平行化的處理環境上固定的負載
(overhead)將造成加速比無法提升,但這定律並非適用於所有平行化處理作業的
問題,該定律所提出的效能評估模型為:
28
TCPU P =(1+OP∙P)∙Tserial
TElapsed P =(f
P+1-f+OP∙P)∙Tserial
表 3–1、阿姆達爾定律在 95%平行度及 2%固定負載上的加速表現
Version Number of Processes
CPU Time (seconds)
Elapsed Time
(seconds) Speedup Efficiency
Serial 1 10.20 10.20 1.00 100%
Parallel
1 10.40 10.40 0.98 98%
2 10.61 5.76 1.77 88%
4 11.02 3.75 2.72 68%
8 11.83 3.35 3.04 38%
其中Tserial所表示為原始未進行平行化的處理器時間(CPU time),處理器的數
量為P,對於固定負載量為OP∙P且OP為一個固定的百分比值,對於整體平行化的
程度表示成f,當該值為0時則為一個未平行化的程序(兩式將相等),值為1的情況
則為程序上的任何工作皆為平行化,假設給定Tserial的值為10.20單位秒來執行一
個 俱 有95% 平 行 度 的 程 序 (f=0.95) , 並 且 該 程 序 存 在 有 2% 的 固 定 負 載 量
(OP=0.02)的情況下,可以計算出不同核心數量下的加速表現(如表 3–1)。雖然
此定律並非符合所有平行化程序,但對於關聯規則上的資料探勘程序必然有更多 的負載消耗且平行度也低於95%的相當理想值,因此整體探勘程序在建置上將需
要進一步考量降低負載值或降低平行度來提升效能。
為了使平行化工作有更好的加速表現,先針對OpenMP在工作排程上定義的
四種排程方法進行瞭解,其分別為guided、dynamic、 static及runtime,這四種不
29
同的排程方法各有其使用上的條件與方法,以下為說明(圖 3–6為圖例):
圖 3–6、OpenMP 的工作排程範例
static: 當進入迴圈控制時,立即依據區塊大小(chunk_size)來將迴圈數量 等分切割成多個區塊(chunk),若未指定區塊大小則以核心數量進
行切割。
dynamic: 依據區塊大小來切割數個執行區塊,與static的差異在於當各行程
需要取得新的計算區塊時才進行切割,預設區塊大小為1。
guided: 工作區塊隨著行程的進度來進行切割,但所切割的區塊大小
(chunk)將遞減至指定的區塊大小,預設區塊大小為1。
runtime: 於執行階段依據變數內容來決定採取的工作排程方法(static、
dynamic及guided)。
30
資料探勘的工作是依據門檻值來進行篩選符合條件的項目,當項目進行組合
的過程中,候選項目將持續的減少,一個定值的區塊大小必然無法將工作均衡的
分配給多個處理器進行運算,舉例來說:在一個四核心的多核心處理器系統中若 採取static的排程機制,則在進行驗證程序時所有的工作將被均分成四等份,但
驗證程序實際上的負載量根據不同的項目會有相當大的差異,在多數情況下會造 成效能分配不均而發生閒置等待的行程訊號,dynamic的排程機制則可以避免負
載不平衡的狀況,但過大的區塊大小將如同static所產生的問題。在PTM的架構
上將最小的執行單位視為一個項目的交易編號區間交集運算,為了使系統於負載
平衡的情況下進行兩個項目在交易區間上的交集運算;且呼應阿姆達爾定律所闡
述的問題,隨時調節參與交集運算的處理器的數量是相當不錯的方法,以下為一 個決定處理器數量的計算式:
所使用的核心數 = max( 1, min( 最大核心數, 工作量 最大核心數 ) )
由此公式可以得知工作數量在得以滿足分配至多個處理器時,將以最大的計
算機資源來進行資料處理,反之當工作量不足以均衡的切割至多處理器時,將會 以單核心的資料處理方式進行,在這(工作量/最大核心數)也可視為『平均處理器
能進行的負載量』,最後結合dynamic的排程機制方法便可以增減各個處理器於
執行階段上的負載量,同時降低較多的核心數對微量資料進行切割的問題。
31
第三節 Parallel Transaction Mapping 演算法
交易項目在原始資料中往往是零亂且分散不均勻的,若是直接將這些資料拿
來進行資料探勘處理,那將非常耗費處理器及系統資源,因此本論文所提出的 PTM演算法以四個程序進行,為了將原始資料變成為具有高度連續性的資料結構
來增進探勘程序上的效能,首先以FP-tree為基礎結構;將原始交易資料進行一次
完整性的掃描並且統計出所有項目的出現頻率,隨即依據項目頻率做遞減排序,
為了確保往後在資料探勘期間能以雜湊函式快速進行項目搜尋,此時可將各項目 依據排序後的順序給予重新編號(因為項目名稱在探勘的過程並不具有意義;不
過以文字對雜湊函式進行索引將造成相當的計算負擔),最後便可利用對照編號
進行探勘程序而非原始項目名稱,第一個項目編號程序步驟如圖 3–7所示:
1. 建立一個雜湊集合 F
2. 由原始資料庫取得單筆項目集合 t
3. 對所有 t 集合的項目 I 累計存在於 F 的頻率 4. 重覆步驟 2、3 直至交易資料掃描完成 5. 依集合 F 的項目出現做頻率遞減排序
6. 依排序後序列重新給予F 所有項目編號
圖 3–7、交易項目重新編號程序
在如表 3–2所示的範例交易資料中,給定一個門檻值為3則表示所有出現頻
率至少3次的項目即為高頻項目(表 3–3當中的編號是以項目出現頻率進行排序
後所產的),經過項目統計及排序編號後符合門檻值條件的項目即為表 3–2(編
號後高頻項目一欄)的結果,往後在FP-tree建置及探勘程序上即可以使用此新的
32
對照編號,該對照編號最重要的優點在於;可以取避免原始項目以文字進行雜湊
函式上計算的複雜度及降低記憶體使用量,且當需要進行資料索引時,數字系統 會有較好的效率於建置工作(雜湊函式)。
表 3–2、原始及篩選排序交易資料
編號 原始交易項目 編號後高頻項目
100 f, a, c, i, m, p 1, 2, 3, 5, 6 200 a, b, c, f, m, o 1, 2, 3, 4, 5
300 b, f, j, o 1, 4
400 b, c, p 2, 4, 6
500 a, f, c, p, m 1, 2, 3, 5, 6
表 3–3、原始交易項目排序及編號
項目 f c a b m p o i j
編號 1 2 3 4 5 6 7 8 9
完成原始資料的統計與編號後,將會獲得所有符合之門檻值條件的項目,以
這些符合門檻值條件的項目進行第二次資料庫掃描並且篩選,每一筆交易項目依
據該項目頻率進行遞減排序編號後,即可將所有高頻項目循序插入樹狀結構中;
在進行插入項目到樹狀結構的同時,各個樹節點的出現頻率將會從1開始進行累
計(任一節點頻率將代表該節點至樹根上的項目集所存在於資料庫的總筆數),最
後透過完整掃描原始交易資料後將建立出一個FP-tree的結構,第二個FP-tree建置
程序如圖 3–8所示,其完整的範例為圖 3–9。
33 1. 產生一個空集合的樹狀結構 Tree
2. 由原始資料庫取得單筆項目集合 t 3. 依據頻率項目集 F 順序排序 t
4. 對於所有存在 t 集合的高頻項目 I,以存在於 F 的對照編號 F(I)依序插入 Tree,在插入過程 累加各節點頻率
5. 重複進行程序 2 至 4 步驟至完成資料庫掃描
圖 3–8、以項目對照方式建置 FP-tee 程序
圖 3–9、以對照編號建置的的樹狀結構
在平行處理的計算當中,一個分散且不連續的資料將難以被分散至各個處理
器上進行計算,若要能夠對處理器在進行資料探勘時的效能進行提升,每一個項 目都將重新給予新的交易編號,由於先前已完成FP-tree的建置,因此在編號上越
靠近樹根的的項目其交易編號也越具有連續性。以圖 3–9為例;位於樹根的第
一個項目編號為1,該項目的頻率為4,所以該項目所表示的新交易編號為{1, 4};
{1, 4}所代表的意義是項目1在原始資料中存在4筆,並且經過重新編號成為第1
筆至第4筆連續的虛擬交易編號,所有項目的虛擬交易編號區間可透過巡訪樹狀
結構一次而產生出來,第三個交易編號程序為圖 3–10:
34 巡訪程序 Travel
輸入變數 樹結構T、映射編號 S 1. 對於所有 T 的子節點 TS進行下面步驟 2. 取得 TS項目的最後交易映射 {B, E}
3. 如果 E+1 為 S 執行步驟 4 否則執行步驟 5、6 4. 將 E 設定為 S+頻率(TS) – 1
5. 給予 TS項目新的交易映射 {B', E'}
6. 將 B' 設定為 S 且將 E' 設定為 S+頻率(TS) – 1 7. 呼叫程序 Travel( TS, S )
8. 將 S 累加 TS的頻率
9. 重覆步驟 2 至 8 直到巡訪所有 TS
呼叫程序Travel( Tree, 1 )
圖 3–10、交易項目重新編號程序
表 3–4、各項目交易編號區間
項目 交易編號區間
1 {1, 4}
2 {1, 3}, {5, 1}
3 {1, 3}
4 {3, 3}
5 {1, 3}
6 {1, 2}, {5, 1}
各個項目在有了連續式的交易編號,會對於資料探勘有著相當大的幫助,但
對於龐大的項目量來說,循序漸近的將所有項目進行組合驗證會花費大量的計算
時間,最有效率的驗證方法就是透過工作切割並且由多核心同時進行處理,而要
如何驗證任兩項目組合是否符合門檻值,其方法就是透過兩個映射交易區間的交
集運算而獲得,舉例來說:在表 3–4可知項目2所對映的交易區間是{1, 3}、{5,
1},而有另一個項目6對映區間為{1, 2}、{5, 1},以這四個區間進行交集運算可
產生{1, 2}、{5, 1}的新區間值。另外;各項目的交易映射是具備有遞增性,所以
項目6的{1, 2}映射已小於項目2的{1, 3},僅需要進行項目2的映射區間{5, 1}與項
35
目6的{5, 1}比對是否可能相交,由此方法處理任兩項目的映射交集運算將可大量
避免未交集區間的處理。最後以項目為最小工作單位,將組合的交集運算程序分 配至多個處理器核心進行,完整的步驟為圖 3–11:
1. 設定項目組合長度 k 為 1
2. 將項目集 F 的所有項目組合出長度為 k+1 的候選集合 C 3. 設定驗證項目 Ci為集合C 中的第一個項目
4. 產生符合處理器數量的子程序 P 執行步驟 5 到 10 直到所有候選項目集 C 完成驗證 5. 鎖定 Ci
6. 設定 D 為驗證項目 Ci
7. 指定 Ci下一個驗證項目 8. 解除 Ci鎖定狀態
9. 如果 D 的頻率不符合件則從 C 中刪去 10. 等待所有子程序完成計算
11. 將 k 累加 1 並且指定 C 成為 F 12. 如果 F 不為空集合則回到步驟 2
圖 3–11、項目交集運算的平行處理程序
PTM演算法在執行的過程中,所有的資料結構都會經由記憶體管理程序來存
取,但最重要的是在交集運算程序(圖 3–11)進行至步驟4時,將會採取動態調
節核心數的方法來決定較符合驗證集合C大小的子程序,主要目的是為了避免過
量負載所產生的計算量。然而在共享記憶體的平行處理環境上經常有資料碰撞 (collision)的問題,若未有妥善的處理將會造成資料錯誤等問題,因此在PTM演
算法先將集合C等量的複製至各個子程序,而驗證的過程上各個子程序會以工作
排程所指定的區塊位置及大小進行運算,當完成驗證後也只需要以資料合併的方 法來將各個程序所完成驗證的項目整合至原始項目集合C,如此一來便可避免在
單一的項目集上同時間進行存取所造成的碰撞問題。
36
第四章 實驗設計與結果分析
許多相關研究都採用了FIMI[29]所開放測詴的資料庫,其中以T10I4D100K
及T40I10D100K兩組經由IBM Quest synthetic data generator [30]所產生的資料最
常被用來測詴,在定義上;T為平均交易長度、I為總項目數(千種)、D為交易量(千 筆),在實驗方面除了這兩種通用型資料外,後續也將利用該資料產生器來產生
更多資料進行效能上的測詴。
第一節 FIMI 測詴資料庫
首先要進行實驗的資料是T10I4D100K,其項目在頻率上的分佈如圖 4–1
所示,其中可以發現到在10萬筆的交易資料裡存在有869個交易項目,而平均交
易長度為10.10(總項目數/交易筆),大多數的項目的出現頻率集中於1000次居多,
因此對於此類資料庫的門檻條件設定於1000為其臨界值,高於這門檻值的項目將
逐漸減少,所產生的組合條件及探勘難度也相對降低。
第二種資料類別為T40I10D100K,其項目在頻率上的分佈狀況則為圖 4–2
的樣式,該資料庫的總交易筆數同樣為10萬筆,交易項目增加為941個,但其平
均交易長度大幅度增加為39.60(總項目數/交易筆),並且其臨界點介於4000筆之
間。
完整的比較資訊將如下表 4–1所示,對於表中最大長度所提,T40I10D100K
的資料庫存在最大值為77,且平均長度為39.60,若以FP-tree的結構來進行建置,
這將會產生一顆相當深的複雜性結構,其產生的候選項目子樹也變得龐大。
37
圖 4–1、T10I4D100K 項目頻率分佈區間
圖 4–2、T40I10D100K 項目頻率分佈區間
表 4–1、FIMI 測詴資料比較
資料庫 項目量 交易筆數 最小長度 最大長度 平均長度 臨界值(筆)
T10I4D100K 869 100,000 2 29 10.10 1000
T40I10D100K 941 100,000 4 77 39.60 4000
0 1000 2000 3000 4000 5000 6000 7000 8000 9000
1 36 71 106 141 176 211 246 281 316 351 386 421 456 491 526 561 596 631 666 701 736 771 806 841
出現頻率(筆數)
依頻率排序後的項目編號
0 5000 10000 15000 20000 25000 30000 35000
1 39 77 115 153 191 229 267 305 343 381 419 457 495 533 571 609 647 685 723 761 799 837 875 913
出現頻率(筆數)
依頻率排序後的項目編號
38
實驗設計方面將分別對兩種資料庫進行門檻值的調整來評估效能表現,在硬 體上處理器為AMD系列的Phenom 9950最大工作時脈為2.60GHz的四核心處理器,
記憶體容量為8GB,所有數據資料皆於Windows Vista下以Visual C++ 8.0進行演
算法開法並以AMD的效能分析工具[31]進行實驗;相對應的Intel工具為[32]。
圖 4–3、TM 及 PTM 演算法執行效能比較
首要進行比較的問題是,由本論文所提出的PTM演算法是基於TM演算法所
進行改良並且平行化的方法,因此當以單核心處理器運行PTM演算法時與TM演
算法間的效能落差,因此在實驗上將採用相同的資料及門檻值分別運行兩種演算 法,並且進行評估;圖 4–3中可以明確得知,在T10I4D100K的資料庫當中分別
指定五種不同的門檻值來執行兩種演算法,其結果呈現PTM將以微小幅度落後,
原因主要在PTM在運算上較TM演算法增加些許工作排程及資料切割上的負載,
0.0 50.0 100.0 150.0 200.0 250.0
600 800 1000 1500 2000
執行時間(秒)
門 檻值(筆數) T10I4D100K
PTM TM
39
對於該負載量並為對整體效能造成瓶頸,因此所獲得的效能值相當近似於TM演
算法,相當符合在PTM演算法設計上的基本需求。
圖 4–4、PTM 演算法在不同核心數探勘 T10I4D100K 表現
任何經過平行處理的方法其目的都是為了降低執行上所要等待的時間,以便 提升整體核心價值,因此;同樣以T10I4D100K的資料庫為基準,將分別以1~4
個核心數進行效能上的比較(圖 4–4),其結果可以得知當門檻值降低時,所要
進行的探勘困難度相對增加,對於以四個核心上的平行運算有不錯的加速表現,
但仔細分析將發現到加速比根據核心數增加反而成等比下滑(圖 4–5),這是在
PTM的最小切割工作單位為一個項目的交易編號區間,所有的交集運算將交由一
個核心進行,同時核心的數量也並非固定的值,若經由公式計算所評估出的工作
數量不足以進行切割時,將會斟酌調整至較符合工作量的核心數。另外當程序處
0.0 50.0 100.0 150.0 200.0 250.0
600 800 1000 1500 2000
執行時間(秒)
門 檻值(筆數)
1核 2核 3核 4核
40
於字典樹的末端點或低頻項目的驗證時,將僅會有少量的項目需要被進行交集運 算,如此一來整體加速比將無法呈現出近似於線性成長的出色表現。
圖 4–5、PTM 演算法於 T10I4D100K 探勘上加速表現
圖 4–6、PTM 演算法在 T10I4D100K 動態調節及固定核心數間比較
0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50
600 800 1000 1500 2000
加速比
門 檻值(筆數)
1核 2核 3核 4核
0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0
600 800 1000 1500 2000
執行時間(秒)
門 檻值(筆數) T10I4D100K
動態 固定
41
對於先前的結果產生了是否以動態調節核心數量將限制整體平行化的效能 表現,因此針對同樣為T10I4D100K的資料庫來比較動態調節四核心與固定四核
心數上的差異,其結果如所圖 4–6;量差(固定核心執行時間/變動核心執行時
間)於圖 4–7所示。結果發現在固定核心數上並未有預想的效能表現,相反的在
固定負載的情況下反而稍稍降低其效能,如果探勘的工作是在更為雜亂且低密度 的資料中進行,則固定核心較不具備優勢。
圖 4–7、PTM 演算法在 T10I4D100K 的動態調節及固定核心數間標準化量差
最後以PTM演算法在T40I10D100K上進行實驗,同樣採取五種不同門檻值與
不同核心數量進行比較,結果效能為圖 4–8、加速比如圖 4–9,雖然在最大核
心數上僅能達到三倍的加速,但其因素是發生於資料的分佈狀況,由表 4–1可
以得知最大的交易長度有77;但平均交易長度只有其一半,這導致探勘程序於字
0.0099 0.0099 0.0100 0.0100 0.0101 0.0101 0.0102 0.0102 0.0103 0.0103
600 800 1000 1500 2000
標準化量差(%)
門 檻值(筆數) T10I4D100K
42
典樹末端點或低頻項目的驗證上產生了相當大的效能空窗期,在無法以最大效能 進行演算法程序,自然無法有效提升效能。
圖 4–8、PTM 演算法在不同核心數的探勘 T40I10D100K 表現
圖 4–9、PTM 演算法於 T40I10D100K 探勘上加速表現
0.0 100.0 200.0 300.0 400.0 500.0 600.0 700.0
4000 5000 6000 7000 8000
執行時間(秒)
門 檻值(筆數)
1核 2核 3核 4核
0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50
4000 5000 6000 7000 8000
加速比
門 檻值(筆數)
1核 2核 3核 4核
43
在同樣為四核心情況下為T40I10D100K的資料庫比較動態調節與固定核心
數的差異,其結果如所圖 4–6及圖 4–7。經由數據可以發現到固定核心在工作
量不足以進行切割情況下,其工作排程及分配的計算負載反而造成效能降低。
圖 4–10、PTM 演算法在 T40I10D100K 動態調節及固定核心數間比較
圖 4–11、PTM 演算法在 T40I10D100K 的動態調節及固定核心數間標準化量差
0.0 50.0 100.0 150.0 200.0 250.0 300.0
4000 5000 6000 7000 8000
執行時間(秒)
門 檻值(筆數) T40I10D100K
動態 固定
1.02 1.04 1.06 1.08 1.10 1.12 1.14 1.16 1.18
4000 5000 6000 7000 8000
標準化量差(%)
門 檻值(筆數) T40I10D100K