• 沒有找到結果。

適用於雲端分散儲存架構下的kNN平行演算法之研究 - 政大學術集成

N/A
N/A
Protected

Academic year: 2021

Share "適用於雲端分散儲存架構下的kNN平行演算法之研究 - 政大學術集成"

Copied!
58
0
0

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

全文

(1)國立政治大學資訊管理學系. 碩士學位論文 指導教授:楊建民博士. 立. 政 治 大. ‧ 國. 學. 適用於雲端分散儲存架構下的 kNN 平行演算法之研究. ‧. The study on paralleling the kNN algorithm suitable to Nat. n. al. er. io. sit. y. cloud-based distributed architecture Ch. engchi. i n U. v. 研究生:張伯辰 中華民國一百零二年七月.

(2) 致謝 很高興能被政大資管錄取,並在這兩年學習到相當廣泛且豐富的知識,遇見 了各式各樣的老師、同學、學長姊與學弟妹,每一次的交流與討論都讓我在各式 各樣的人們身上學到不少知識,進而能夠完成此篇論文。 首先要感謝楊建民教授兩年來的指導,若非老師提供方向與大量建議,此篇 論文不可能有完成的一天。本論文研究從起始到完成的各個階段,楊老師都用極 大的耐心提供了各式具體且實用的建議與指導,讓這篇論文能夠以更完整的內容 呈現。. 政 治 大 來的陪伴、討論、彼此互助與成長,這段期間我受到他們非常大的照顧與包容; 立. 不得不提的還有同實驗室的同伴們──偉志、弘業、子洋、珀豪與智勝兩年. ‧ 國. 學. 學長姊鴻仁、康維、國傑與婉婷,在我們碩一時期的經驗分享以及論文探討給了 不少實質的幫助;良杰與函升學弟的加入更為實驗室帶來了嶄新的氣象與活絡的. ‧. 氣氛。. sit. y. Nat. 碩二參與 EMBA 商管聯盟時的工作經驗,也成為本研究的其中一環,在此. n. al. er. io. 也特別感謝鈞華學長的多次指導,讓這篇論文更為出色;悅岑姊的加入讓實驗室. i n U. v. 的氣氛活躍不少,也讓我接觸了不同角度的思維與需求。. Ch. engchi. 最後也最重要的,是要感謝家人在這段期間的支持、鼓勵與督促,讓我毫無 後顧之憂卻不淪於荒廢玩樂,讓我有個可以完全放鬆的溫暖場合,也帶給我毫不 畏懼迎向未來的勇氣。. 在此再次感謝所有曾在我人生道路上給予協助的所有人們。. 張伯辰 謹致於 國立政治大學 資訊管理學系研究所 民國 一百零二年 九月 I.

(3) 摘要 近年來,隨著網際網路與相關設備的快速發展與普及,雲端運算逐漸興起, 並產生了大量的雲端服務,讓網路上儲存了大量一般使用者的資料與文件。為了 分析這些資料,可使用資料探勘中的資料分群來進行初步探討,而 kNN 正是廣 泛被應用於資料分群的一種方式。不過隨著資料量的成長,使用 kNN 演算法的 分群時間也會大幅度地成長。 為此,本研究試圖以平行化的方式運行 kNN 演算法,將大量資料分成少量 多次處理,並於平行分群後進行群集合併。本研究將 Google Spreadsheet 作為雲. 政 治 大 群。待各區域完成分群後,再將分群結果傳送至整合端進行群集合併。 立. 端資料庫,透過 PHP 語言對資料庫下達指令,並進行多區域的平行 kNN 資料分. ‧ 國. 學. 本研究以二種不同方式進行群集合併,並比較二種方式的結果。第一種合併 方式為給定合併門檻值,直接將質心近似的群集合併;第二種方式為同時比較二. ‧. 群集之群內相似度與群間相似度之關係,來決定是否進行合併。綜合而言,第二. Nat. sit. y. 種方式的運算時間較第一種方式為快,且合併結果也較第一種方式為佳。. n. al. er. io. 本研究進行三種資料分群測試,分別為:一般性資料(隨機分配的固定維度. Ch. i n U. v. 數值化資料) 、實際新聞文章的數值化資料、大量模擬實際文章的數值化資料(高. engchi. 維度且有部分集中群集)。根據結果顯示,三種測試皆顯示平行化後的速度有著 極大幅度的提升,表示本研究設計的平行化演算法對 kNN 的加速有相當大程度 的作用,分群品質的變化雖可接受、卻較難以掌控。. II.

(4) Abstract With the development and popularization of the Internet, many companies started offering cloud-services, allowed users to save their data on the Internet. To find information in the large amounts of data, kNN is a common method in data mining domain. But with the amount of data increased, the computing time also grew rapidly. In this study, I tried to parallel the kNN algorithm, expecting to promote the efficiency of kNN algorithm by separating the data into small amount and clustering them. In this study, Google Spreadsheet was used as a database, and accessing by PHP. Data stored in different spreadsheets separately, and clustered by different. 治 政 clusters would be integrated into final result. 大 立. regional servers. After each regional server completed the data clustering, the regional. ‧ 國. 學. I used two ways to merge clusters in the second step of the algorithm. The first way is given threshold; I merge the clusters if these centroids were similar. The. ‧. second way is to compare the difference between the summary of the inter-cluster similarity of two clusters, and their intra-cluster similarity. Then decided whether to. io. er. computing speed but also have better quality.. sit. y. Nat. merge or not. The result showed that the second way is not only have better. al. n. iv n C is random generated data with fixed second data was transformed by hdimension. i U e n g c hThe reality news. And third data was large amount of data generated by simulating reality In this study, I tested the parallel algorithm with three kinds of data. The first one. data. All of the results showed the paralleled algorithm had a great effect on accelerated KNN method, but also got the unpredictable quality change.. III.

(5) 目錄 第一章、. 緒論 ............................................................................................................ 1. 第一節、 研究背景與動機...................................................................................... 1 第二節、 研究目的................................................................................................. 2 第二章、. 文獻探討..................................................................................................... 3. 第一節、 雲端運算及服務...................................................................................... 3 2.1.1 雲端運算................................................................................................. 3 2.1.2 雲端服務模式 ......................................................................................... 4 2.1.3 雲端部屬模式 ......................................................................................... 5. 政 治 大. 2.1.4 Google 雲端硬碟(Google Drive) ............................................................. 6. 立. 第二節、 資料分群(Clustering) .......................................................................... 8. ‧ 國. 學. 2.2.1 k-最鄰近演算法(k-Nearest Neighbor,kNN) ........................................ 8. ‧. 2.2.2 相似度計算........................................................................................... 10 第三節、 平行運算(Parallel Computing) ........................................................... 13. y. Nat. io. 研究架構與設計........................................................................................ 15. n. al. er. 第三章、. sit. 第四節、 文獻探討總結........................................................................................ 14. i n U. v. 第一節、 研究架構............................................................................................... 15. Ch. engchi. 第二節、 研究設計............................................................................................... 17 3.2.1 資料處理............................................................................................... 17 3.2.2 平行化之 kNN 演算法........................................................................... 20 3.2.3 分區群集合併 ....................................................................................... 20 3.2.4 整合衡量指標 ....................................................................................... 22 3.2.5 時間複雜度........................................................................................... 24 3.2.6 資料結構與平行演算法......................................................................... 25 第四章、. 研究成果................................................................................................... 33. 第一節、 一般性資料分群成果............................................................................. 33 IV.

(6) 第二節、 新聞文章分群結果(給定門檻值)....................................................... 35 第三節、 新聞文章分群結果(比較相似度)....................................................... 37 第四節、 模擬文章資料分群結果(給定門檻值) ............................................... 39 第五節、 模擬文章資料分群結果(比較相似度) ............................................... 42 第五章、. 結論 .......................................................................................................... 44. 第一節、 結論與建議 ........................................................................................... 44 第二節、 未來研究方向........................................................................................ 46 .................................................................................................................. 48. 立. 政 治 大. 學 ‧. ‧ 國 io. sit. y. Nat. n. al. er. 參考文獻. Ch. engchi. V. i n U. v.

(7) 圖目錄 圖 2-1 kNN 群集分析示意圖 ........................................................................................... 9 圖 2-2 kNN 演算法之資料數量與運算時間關係圖 ........................................................ 10 圖 2-3 三角形的夾角與對應邊長.................................................................................. 11 圖 2-4 二維空間中的餘弦相似度.................................................................................. 12 圖 3-1 研究架構圖........................................................................................................ 16 圖 3-2 以 Google Spreadsheet 儲存資料 ....................................................................... 19 圖 3-3 半徑、質心距離與對應相似度示意圖................................................................ 22. 立. 政 治 大. ‧ 國. 學. 表目錄. 表 2-1 Google 雲端硬碟與 Google 文件發展表................................................................ 7. ‧. 表 4-1 kNN 分群結果(一般性資料)........................................................................... 33. Nat. sit. y. 表 4-2 平行化的 kNN 分群結果(一般性資料) .......................................................... 34. n. al. er. io. 表 4-3 kNN 分群結果(新聞文章分群)....................................................................... 35. i n U. v. 表 4-4 平行化的 kNN 分群結果(新聞文章分群) ...................................................... 36. Ch. engchi. 表 4-5 時間與分群品質變動(新聞文章分群)............................................................ 36 表 4-6 平行化的 kNN 分群結果(新聞文章分群,相似度法) .................................... 37 表 4-7 時間與分群品質變動(新聞文章分群,相似度法).......................................... 38 表 4-8 kNN 分群結果(模擬文章資料)....................................................................... 40 表 4-9 平行化的 kNN 分群結果(模擬文章資料) ...................................................... 40 表 4-10 時間與分群品質變動(模擬文章資料) .......................................................... 41 表 4-11 平行化的 kNN 分群結果(模擬文章資料,相似度法) .................................. 42 表 4-12 時間與分群品質變動(模擬文章資料,相似度法)........................................ 43. VI.

(8) 第一章、 緒論 第一節、 研究背景與動機 隨著網路快速發展並逐漸普及與各式設備的發展與線路的遍布,世界各地的 使用者可透過網路彼此聯繫與共享資訊。伴隨著網路發展,一系列的線上服務也 如雨後春筍般冒出。 近年來雲端運算(Cloud Computing)是網路服務中備受重視的熱門領域。自 2006 年,Amazon 與 Google 相繼提出此概念以來,雲端運算的相關應用已遍及各 種產業,而 Ovum 研究機構也指出,雲端運算是未來發展的重要 IT 科技。. 政 治 大. 而在雲端運算中,有一種服務是提供網路空間,讓使用者可在線上儲存各式. 立. 檔案或資料。當進行海量資料存取時,由於免費使用常有容量或流量的限制,使. ‧ 國. 學. 用者可能必須將資料分別儲存在業者提供的不同空間中。若使用者欲分析資料時 就得分別從不同的來源取得資料,經彙整後才能進行資料分析。. ‧. 此外,現今網路科技發達,資訊的取得管道也非常多元,使用者可能直接拿. y. Nat. er. io. sit. 網路上的資料作分析,而不是先儲存、整理後才分析。在此種狀況下,不同來源 的資料可能得作不同的前置處理,接著才進行分析。在此狀況下,若能將不同類. n. al. Ch. i n U. v. 別的資料分開來分析,代分析後再將結果統整,相信會較為方便。. engchi. 目前在資料分析領域中,kNN(k-最鄰近演算法,k-Nearest Neighbor)是常 使用於資料探勘的工具,使用者可藉由 kNN 將相似資料分在同一群,在檢視相同 群組的共通點後,給予該群組命名或定義。 不過當資料分散儲存於多處時,使用者對資料的存取可能會受到一定程度的 限制。尤其遇到海量資料時,若需一一取得後才進行分析,或是得將全數資料由 雲端下載回使用者端,會造成的影響又更加劇。因此若能先將不同處的資料分別 分群,最後再將結果統一,得出最後的分群結果,或許能夠更加強雲端資料或網 路資料分析的便利性。 1.

(9) 第二節、 研究目的 現今網路科技發達,資訊存取的管道也非常多元。使用者的資料可以存放在 自行選擇的任何雲端空間中。由於不同空間有著不同的限制,使用者可能依照需 求,將各筆資料存放在不同的雲端空間中。然而依照空間的不同,不同空間資料 的取得與彙整可能會花費相當的工夫,也會需要相當的時間與電腦運算資源。因 此本研究期望將不同區域的資料分別讀取、運算之後,才統一彙整進行最終運算。 綜上所述,本研究目的如下: 1.. 善用雲端環境,將待分析的資料儲存在網路上,並將大量資料分散儲存. 政 治 大 設計一套平行化的 立kNN 演算法,將散於各處的資料分別分群後,再統合 於多處。. 學. 成完整的 kNN 分群結果。. ‧. ‧ 國. io. sit. y. Nat. n. al. er. 2.. Ch. engchi. 2. i n U. v.

(10) 第二章、 文獻探討 第一節、 雲端運算及服務 雲端運算的「雲」(cloud)其實原本是泛指網路的代名詞,以往在電腦流程 圖中,網際網路常用雲狀的圖形來表示,所以就常將網路稱為雲(Cloud)。而雲 端運算的意涵,就是將原先在電腦上運行的作業,改成在網路上運作,因此被稱 作雲端運算(Cloud Computing)。而應用了雲端運算、供用戶線上存取與運算的 服務,就被稱為雲端服務。. 2.1.1 雲端運算. 立. 政 治 大. 雲端運算中的「雲(Cloud)」一詞,最早是 Amazon 在 2006 年 3 月提供的. ‧ 國. 學. EC2(Elastic Compute Cloud,彈性運算雲端)服務中提及。但實際上,在 2001 年左右,各家企業就已逐漸開始提供線上服務的軟體,這些軟體可說是雲端運算. ‧. 的前身。不過雲端運算這個名詞真正被提出,卻是在 2006 年 9 月,由 Google 在. y. Nat. er. io. sit. 搜尋引擎大會中正式提出。. 若以更明確的方式,雲端運算可以被定義為「透過網際網路的分散式運算. n. al. Ch. i n U. v. (Distributing Computing)架構,所提供的一種服務模式,並且具備彈性(Flexibility). engchi. 與可擴充(Scalability)的能力。」 (資策會. MIC 雲端運算應用趨勢與我國商機研 究, 2009 年 10 月)。 其中「分散式運算(Distributing Computing)」指的是將原先由單一電腦負責 的工作,拆分後由多台電腦同時運行,最後再蒐集並統整各伺服器的運算結果, 從而運算出完整作業的結果。由於雲端運算僅需將結果回應給用戶,因此用戶並 不會感受到這種分散是作業的感覺。分散式運算的優點,是可以藉由多台較低階 的計算機,合作形成可媲美高階計算機的運算系統,而這正是雲端運算可以提供 大量使用者服務的原理。 3.

(11) 雲端運算的「彈性(Flexibility)」讓用戶可以自由選用其需要的服務,並且 依照其所選擇的服務項目或是服務規模付費。以 Google 雲端服務為例,其中雲端 硬碟項目,用戶可選擇免費的 5GB 方案、月費 2.49 美元的 25GB 方案、或是月 費 100GB 的 4.99 美元等不同的方案。 「可擴充性(Scalability)」則是用戶可隨時依照其需求,在不影響現有服務 的情況下,再繼續選用其他服務。以 Google 雲端服務為例,用戶除了選用 Google 雲端硬碟之外,還可使用 Google 的雲端行事曆、電子郵件、協作平台等服務,並 依照需求選用免費或付費模式。. 政 治 大. 立. 2.1.2 雲端服務模式. ‧ 國. 學. 雲端運算有三種主要的服務模式,分別是「軟體即服務(Software as a Service, SaaS)」、「平台即服務(Platform as a Service, PaaS)」以及「基礎設施即服務. ‧. (Infrastructure as a Service, IaaS)」三類:. Nat. sit. y. (一) 軟體即服務(SaaS):. n. al. er. io. 此模式是雲端運算中最常見的服務。服務供應商將軟體架在雲端伺. i n U. v. 服器,用戶只需連線就可遠端使用軟體服務。由於運算資源等都架設在. Ch. engchi. 供應商的伺服器中,因此不論用戶的運算設備如何,均可穩定使用該軟 體服務。 (二) 平台即服務(PaaS): 此雲端服務提供用戶的是一個平台,用戶可在此平台上開發或建置 自己需要的一切應用程式。通常此模式服務的提供者,也會一併提供程 式開發所需要的環境與工具,讓用戶可藉此省下程式開發流程中,相當 可觀的時間與經費。. 4.

(12) (三) 基礎設施即服務(IaaS): 此模式是將基礎設施作為雲端服務提供,雲端供應商藉由虛擬化提 供如伺服器或多台主機的運算功能,用戶可在供應商提供的虛擬主機中 裝設自己需要的作業系統與應用程式。在此服務模式下,用戶可以自行 建置符合自己需求的環境,但不需要費神維護主機。 雲端服務的使用者可依照自身需求選用此三種服務模式。一般而言,基礎設 施即服務所提供的自由度最大,讓使用者能夠建置一套最符合自身需求的環境與 系統;但是對於部分用戶而言,軟體即服務的單一軟體服務就能夠達到自己的需. 政 治 大. 求,此時就不需要用到基礎設施及服務的層次。. 立. ‧ 國. 學. 2.1.3 雲端部屬模式. 雲端運算的部屬模式共有以下四種:. ‧. (一) 私有雲(Private Cloud). y. Nat. sit. 雲端架設後僅提供個人或組織本身使用,此種部屬模式讓使用者對. n. al. er. io. 於雲端有最完整的控制權。由於使用對象有所限制,此種部屬模式可以. Ch. i n U. v. 獲得相當程度的安全性,也可以針對使用者自身設計最符合需求的功能。. engchi. 不過除了由用戶自行管理之外,也可以將架設與維護等工作委外。 (二) 社群雲(Community Cloud) 社群雲是提供給多個組織共同使用的雲端運算,例如學校與學校共 用資訊系統即是一例。由於橫跨的規模較私有雲大,因此設置與維護的 費用也較私有雲高。除了組織間自行協調管理之外,也可委託第三方進 行維護。 (三) 公用雲(Public Cloud) 公用雲是提供公眾使用的雲端運算環境,任何使用者皆可視其需求 5.

(13) 連線並使用公用雲的服務。公用雲由服務提供廠商負責維護與經營,可 依照使用者的不同需求收取不同的費用。由於並非針對特定組織打造, 因此受到的限制會較私有雲與社群雲高,但用戶卻可以用較低的成本來 使用,也不需要費心管理。 (四) 混合雲(Hybrid Cloud) 依照用戶的需求,將以上三種方式搭配組合而成。例如公用雲的服 務可能可以達成用戶的部分需求,但其餘需求卻需要專屬服務,那麼便 可以採用公用雲+私有雲的混和型式。. 政 治 大 2.1.4 Google 雲端硬碟(Google 立 Drive). ‧ 國. 學. Google 雲端硬碟是 Google 提供的線上儲存服務,構想於 2006 年提出,於 2012 年 4 月起開放使用,主要作用於 Web 環境,並可在 Windos、Linux、iOS 等. ‧. 多種作業系統使用。Google 雲端硬碟提供的服務,包含了原先在 Google 文件. Nat. sit. n. al. er. io. 性的應用套件等。. y. (Google Docs)中的服務、名為 Google Storage 的雲端儲存空間、以及大量擴充. i n U. v. 其中 Google 文件自 2006 年啟用,至 2012 年 Google Drive 推出之後才整併至. Ch. engchi. 其中,詳細發展可見次頁表 2-1。Google 文件提供使用者在線上使用等同 Word、 Excel、Powerpoint 等功能的文件檔案,並可在線上分享、編輯與協作,也支援將 Microsoft Office 的文件上傳匯入、或是下載成指定格式的檔案。 在 Google 文件中提供用戶線上使用 Excel 的服務稱為 Google 試算表(Google Spreadsheet)。此電子試算表以表格為介面,並可支援資料儲存、函數運算、以及 圖表繪製等功能。由於其表格的特性,因此也可作為雲端資料庫使用。用戶藉由 Google 提供的 Google Spreadsheets API,開發者可透過 PHP、Java、Python 等程 式語言直接對 Google 試算表下達指令,進行資料的存取或是操作。. 6.

(14) 2006 年 3 月 9 日. Google 併購 Upstartle 公司,取得其旗下軟體 Writely 的所 有權,並進行伺服器與資料轉移。. 2006 年 6 月 6 日. Google Spreadsheet 成為 Goodle 文件中的首項服務。. 2006 年 8 月 23 日. 開放用戶註冊與使用。. 2006 年 9 月 19 日. 將 Writely 合併至 Google 帳戶中。. 2007 年 2 月. Google 將 Google 文件以 Google Apps 的形式提供用戶使 用。. 2009 年 7 月 6 日. Google 將 Google 文件由 Google Apps 中獨立出來運作。. 2010 年 3 月 7 日. Google 收購 DocVerse 這家提供線上文件協作服務的公司。. 2010 年 4 月. 以 DocVerse 的技術為基礎,Google Docs 支援 Microsoft. 政 治 大 支援 立 HTML 5 Web 方式的離線查看。. Office 的文件格式,並提供用戶線上協作的編輯模式。. Google 以 Google 雲端硬碟整合 Google 文件的服務與功能。. ‧ 國. 學. 2012 年 4 月 24 日. 表 2-1 Google 雲端硬碟與 Google 文件發展表. ‧. (來源:本研究整理). io. sit. y. Nat. n. al. er. 2011 年 9 月 29 日. Ch. engchi. 7. i n U. v.

(15) 第二節、 資料分群(Clustering) 資料分群是使用分群演算法,依照資料間的相似度,將相似的資料分類在相 同的群集。其目的在求各群集的相似性質,作為該群集的代表特性,以利後續研 究、分析。. 2.2.1 k-最鄰近演算法(k-Nearest Neighbor,kNN) k-最鄰近演算法(以下簡稱 kNN)是由 T.M. Cover 與 P.E. Hart 於 1967 年提 出,此演算法針對一筆未知群集的資料,與現有已分群的所有資料進行相似度比. 政 治 大 kNN 常見於機器學習(Machine Learning)領域,希望藉由計算機的高速來 立. 對,藉此找出該筆資料的所屬群集。. ‧ 國. 學. 處理人力無法負荷的大量資料分類。由於其演算法會產生多個相似群集,因此也 被用於資料分群使用。. ‧. io. sit. y. Nat. (一) 運作原理. n. al. er. kNN 的原理是在向量空間中,相似的資料如同接近的座標,會在比較接近的. Ch. i n U. v. 位置;而相似的一群資料彼此貼近,便會形成一相似群集。因此 kNN 賦予每一筆. engchi. 資料一個向量空間座標,當新增一筆資料時,就檢查此新進資料座標附近 k 筆資 料,計算與這 k 筆資料群集的相似程度,並將此新進資料分類。待分類完成後, 再依照分群特徵對各類別資料進行描述。 以次頁圖 2-1 為例,假設進行 kNN 分群時共採二種屬性,而現有資料已分為 「X」 、 「O」 、 「△」三類,而「?」則表示新進資料。此時若採 k=3,即表示採「?」 附近 3 筆最鄰近資料計算相似程度,此例中會發現該新進資料與現有三類資料的 相似程度相當(但與「X」較接近,相似程度較高,因此會歸類到「X」類);但 若採 k=7,也就是以周圍 7 個最接近點來計算,會發現與「O」類資料的相似度 較高,此時便會歸類到「O」類。 8.

(16) 相較於 k-means、ISODATA、階層式分群法等同樣被廣泛應用的分群法,kNN 的特點在於其並非以完整資料進行分群,而是可透過單一資料的逐漸導入,依序 架構出完整的分群結果。此特色也造就了 kNN 能夠處理資料數量會隨著時間成長 的資料,不必因為新增了數筆資料而必須重新分群,而可以將新增資料直接加入 現有群集。 k=7 的範圍 k=3 的範圍 屬性2. O X. 立. O. 治 O X 政 大 X. X. O. X. ‧ 國. 學 ‧. 屬性1. y. 圖 2-1 kNN 群集分析示意圖. Nat. n. al. sit. (來源:本研究繪製). er. io. (二) 時間複雜度. X X. O O ? X O. O. Ch. engchi. i n U. v. 由於 kNN 在每一筆資料輸入時,均需要與現有所有資料進行相似性比對。即 除了第 1 筆資料可直接獨立成群之外,當第 2 筆資料輸入時必須與第 1 筆資料比 對;第 3 筆資料輸入時必須與第 1、第 2 筆資料比對;……;依此類推,第 n 筆 資料輸入時,需要與前 n-1 筆資料比對,其後才可選出最相似的 k 個資料點。而 每筆資料的比對次數是其 term 的數量,也就是資料的維度,若假定為 x,則 kNN 演算法的運算次數能夠以方程式𝑓(𝑛) = 𝑛 ∙ (𝑛 − 1) ∙ 𝑥表示。. 經化簡𝑓(𝑛) = 𝑥𝑛2 − 𝑥𝑥,其時間複雜度為𝑂(𝑥𝑛2 )。也就是說,當資料維度 x. 固定時,kNN 演算法的運算效率是𝑂(𝑛2 ),表示其運算時間與資料量的平方成正. 比。當資料量越龐大時,kNN 演算法的運算時間也就越長,而且是隨著資料數量 9.

(17) 以二次方的速度成長(如圖 2-2)。. 運算時間(單位:萬). 12000 10000 8000 6000 4000 2000 0 0. 2000. 治 8000 政 6000 資料數量 大. 4000. 立. 10000. 12000. ‧ 國. (來源:本研究繪製). ‧ sit. y. Nat. 2.2.2 相似度計算. 學. 圖 2-2 kNN 演算法之資料數量與運算時間關係圖. n. al. er. io. 在進行資料分群時,必須計算資料與資料間的相似度,接著才進行資料分群. i n U. v. 或調整。而資料相似度的計算因應情境不同有各種適用的方法,本節探僅討應用 於本研究的數種方法。. Ch. engchi. (一) 歐幾里得距離(Euclidean distance) 歐幾里得距離是經常採用的資料相似度計算方式,也是十分直覺性的方法。 在向量空間中,歐幾里得距離是兩點間的直線距離,設空間中有二點 X、Y, X = (𝑥1 , 𝑥 2 , … , 𝑥𝑛 )、Y = (𝑦1 , 𝑦2 , … , 𝑦𝑛 ),則其公式如下: 𝑛. 𝑑 (𝑋, 𝑌) = ��(𝑥𝑖 − 𝑦𝑖 )2 𝑖=1. 10.

(18) 對應歐幾里得距離的相似度公式如下: sim(𝑋, 𝑌) =. 1 1 + 𝑑 (𝑋, 𝑌). 此公式可將距離數值轉換為介於 0 到 1 之間的數,兩點間距離越接近則相似 度越大;反之相似度則越小。此值為 1 表示兩點間距離為 0,相似度達到最大; 而當距離趨近無限大的時候,相似度值會趨近於 0。. (二) 餘弦相似度(cosine similarity) 餘弦定理在數學中表示了三角形中邊長與角度的關係。如下圖所示,根據餘. 政 治 大. 弦定理,三角形的夾角與其對應邊呈正相關,並且遵照以下公式: = 𝑏2 + 𝑐 2 − 2𝑏𝑏 cos 𝛼. ‧. ‧ 國. 2. 學. 立𝑎. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 2-3 三角形的夾角與對應邊長 (來源:wikipedia). 而根據三角函數表可知,當夾角 θ 介於 0 ゚~180 ゚之間時,cosθ 的數值會隨著 角度增大而由 1 遞減至-1。也就是說,在上述餘弦定理的公式中,隨著角度 α 增 加,cosα 值會逐漸變小,致使邊長 a 隨著角度 α 的增加而變長;同時,邊長 a 的 增加也同時表示 cosα 的值變小,表示其餘弦值會隨著二點間的距離的成長而減 小。 在向量空間中,三角形的邊長即為二頂點間的距離,如上述公式中的 a,即 表示頂點 B 與 C 之間的距離。餘弦相似度正是應用了二點間的距離與其餘弦值呈 11.

(19) 負相關的特性,來計算二筆資料在向量空間中的相似度。 如圖 2-3 所示,以二維空間的座標為例,A 與 B 二資料點的相似度即為夾角 θ;而套用至 n 維空間,餘弦夾角公式如下: �⃗ 𝐴⃗ ∙ 𝐵 cos 𝜃 = = �⃗� �𝐴⃗� × �𝐵 X. 𝑛 𝑛 �∑𝑖=1 𝐵𝑖 2 𝐴𝑖 2 × �∑𝑖=1. A (Ax , Ay). 立. 政 治 大 θ. 圖 2-4 二維空間中的餘弦相似度 (來源:本研究繪製). Y. ‧. O (0 , 0). B (Bx , By). 學. ‧ 國. ∑𝑛𝑖=1 𝐴𝑖 𝐵𝑖. Nat. sit. y. 餘弦相似度的值在 1 到-1 之間:當數值為正時,表示兩向量間的相似度,至. n. al. er. io. 1 表示兩向量完全相同;當數值為副時,表示兩向量間的相異度,-1 表示兩向量. i n U. v. 完全相反;而 0 則表示兩向量並無任何關係,為二獨立向量。. Ch. engchi. 相較於歐幾里得距離,餘弦相似度被更廣泛應用於文件分類或分群。當餘弦 相似度應用於文件分類或分群時,由於在文章中詞彙出現的頻率不會為負值,因 此餘弦相似度的值會在 0 到 1 之間。. 12.

(20) 第三節、 平行運算(Parallel Computing) 平行運算的原理是將單一工作拆解成多個可同時運行的作業,使各作業能夠 同時且平行地運行,待各拆分後的工作完成後,再將結果統整,並計算出完整工 作的結果。藉由平行運算,用戶可以組裝一系列的個人電腦,應用其統合的運算 量,來達到近似超級電腦的運算能力。 19 世紀中期的電腦市場,指的是專門提供給大型企業、體積龐大的大型電腦, 對ㄧ般人而言是極高的成本。直到 1980 年代,IBM 推出以 Intel x86 處理器搭配 Microsoft MS-DOS 作業系統的個人電腦,開始了個人電腦產業的發展,使得價格. 政 治 大 將較於個人電腦,當時眾多企業為了因應龐大計算需求,所使用的仍然是大 立. 逐年下降,電腦才逐漸在人們的生活中普及。. ‧ 國. 學. 型主機,或是使用超級電腦進行大規模的運算。超級電腦相較於同期的一般電腦, 能夠發揮更快速的運算量,並能夠處理更大規模的資料,這是個人電腦所無法比. ‧. 擬的效能。. Nat. sit. y. 然而,相較於個人電腦,具有龐大效能的超級電腦,也同樣具有相當昂貴的. n. al. er. io. 價格。1994 年夏,NASA 為了發展地球與太空科學計畫,其下的 CESDIS(Center. i n U. v. of Excellence in Space Data and information science)開始嘗試以較廉價的個人電腦. Ch. engchi. 組裝可平行運算的系統。這個由 Thomas Sterling 與 Don Becker 負責進行的計畫, 被稱為 Beowulf。他們將個人電腦組合成叢集(cluster),以進行可達到他們需求 效能的平行運算。自此,平行運算開始在 NASA 內部廣泛使用,也逐漸遍及到美 國的其他研究單位。. 13.

(21) 第四節、 文獻探討總結 隨著雲端環境發展逐漸成熟,更多的資料可以儲存於網路上,同時網路中也 充斥著大量的資訊。當欲分析這些資料時,由於資料的數量對運算量有著高度的 影響,為了處理海量資料,勢必得花費上高度的運算量。 在透過 kNN 演算法進行資料分群時,由於 kNN 必須與現已分群的所有資料 進行相似度比對,因此隨著資料量的大增,分群所需要的運算時間也會飛躍性地 成長。此時,平行化的運算就派上了用場。 平行化的原理在於將完整作業劃分為多個小工作,並由多個伺服器或平行緒. 政 治 大 能。由於 kNN 的時間複雜度是𝑂(𝑛 ),假設分為 y 次運算,則每次處理的資料量 立. 同時運算,期望藉由大量低階伺服器或多執行緒的分工達到高階伺服器的運算效 2. 𝑛. 𝑛 2. 𝑛2. ‧ 國. ,因此時間複雜度變為𝑂 ��𝑦 � � = O �𝑦2 �。若以循序運算執行,其 𝑦 𝑛2. 𝑛2. 學. 變為原先的. ‧. 所耗費的時間為y ∙ O �𝑦2 � = O � 𝑦 �,可省去 y 倍的時間;若以平行運算執行,重. sit. y. Nat. 疊的時間可不計,更可節省原先 y2 的時間(整合時間另計)。. io. er. 現今雲端服務供應商也有提供運算的服務,即便沒有足夠的伺服器,也可使. al. 用雲端環境進行平行運算。若使用雲端環境進行平行運算,於各區域分別進行各. n. iv n C 區儲存資料的分群,待取得各區初步分群結果之後再將結果彙整,並於主伺服器 hengchi U 進行分群結果整合,此種情況下大量的資料儲存與分群運算都在雲端完成,客戶 端的設備就不必具備非常高階的效能。 近年來網路發展成熟,雲端運算與服務也日趨成熟,供應商提供的服務品質 與效能也日益提升。在此環境下,將大量而繁雜的運算移向雲端也成為了可行的 做法。而這正是本研究期望設計出一套可以在此類環境運作的 kNN 平行化演算法 的原因,期望能夠以此來減少對於客戶端系統的負荷以及分群時間的耗費。. 14.

(22) 第三章、 研究架構與設計 第一節、 研究架構 本研究將儲存在多個 Google Spreadsheet 中的資料分別取得,並各自進行 kNN 分類。待各筆資料分類完成後,再統一進行彙整。 本研究可分為二個主要步驟,以及一個前置作業: (0) 前置作業: 先 將 欲 採 用 kNN 分 群 的 資 料 , 預 先 分 散 儲 存 於 多 個 Google Spreadsheet 中。 (1) 各分區 kNN 分群:. 立. 政 治 大. 本研究會將已分散儲存於 Google Spreadsheet 中的資料分別取出,. ‧ 國. 學. 並個別進行 kNN 分群。分群後,各區域可得到各自資料的 kNN 分群結. sit. y. Nat. 見得會等同於完整資料的分群。. ‧. 果。由於各區域資料不見得是平均分配,因此此初步結果的分群,並不. io. er. (2) 資料傳輸與相似群整合:. al. iv n C hengchi U 群集的相似度進行分群整合,將相似度高的群集合併為一群。依照伺服 n. 在得到初步分群結果後,接著將各區域的分群結果統整,並依照各. 器與需分類資料量的多寡,本階段可選擇由多個伺服器平行整合或是由 單一伺服器負責,惟最後仍須有一主伺服器負責最終分群結果。 (3) 結果評量: 待分群整合完畢後,由於在各區域分群的結果,可能會因為各區域資料 的不完整,而造成分群過度離散甚至錯誤的情況。因此在此步驟會以已分好 的群組為單位,檢查各群的組內資料離散程度,以及群與群之間的間距。視 情況將分群合併、甚至重新打散再個別整合,以取得完整資料的分群結果。. 15.

(23) 綜上所述,本研究架構圖如下:. 各區資料平行處理. 雲端資料. kNN 資料分群. 雲端資料 雲端資料. 區域分群結果 區域分群結果 區域分群結果. kNN 資料分群. 立. 政 治 大 群集資料轉移與彙整. ‧ 國. 學 ‧. 相似群整合(視情況平行與否). 分群整合. 相似群整合結果. n. er. io. al. sit. y. Nat. 重分區後 的資料 重分區後 重分區後 的資料 的資料. Ch. e分群整合 n分群整合 gchi. i n U. 結果分析與彙整. 最終分群結果 圖 3-1 研究架構圖 (來源:本研究繪製) 16. v. 相似群整合結果 相似群整合結果.

(24) 第二節、 研究設計 3.2.1 資料處理 本研究採用 PHP 程式語言撰 寫主要程式, 搭配 Google 提供 的 Google Spreadsheet API 對 Google Spreadsheet 進行操控,以取得儲存在其中的資料。. (一). Google Spreadsheet API. Google Spreadsheet API 是由 Google 提供的試算表操作工具,提供程式開發 人員可對 Google 試算表直接下達指令,以存取試算表中的資料或是進行運算或資. 政 治 大. 料操作與修改。具體來說,透過 Google Spreadsheet API,使用者可以下達以下的. 立. 指令:. 創建新試算表:可透過指令直接創立一個全新的試算表。. 2.. 權限調整:可調整試算表的權限,包含開放瀏覽、編輯等。. 3.. 工作表操作:可以新增、刪除與編輯工作表(單一試算表中,可以有多. ‧. ‧ 國. 學. 1.. y. Nat. io. sit. 個工作表);亦可編輯工作表標題等工作表資訊。. 列操作:可以新增、修改、刪除與查詢指定的列;亦可進行列排序。. 5.. 單元格操作:取得或更改指定單元格的內容;亦可批量更改單元格的內. n. al. er. 4.. 容。. (二). Ch. engchi. i n U. v. Zend Gdata Google Spreadsheets. 前段由 Google 公司提供的 Google Spreadsheet API,已可對 Google 試算表進 行資料的操作。但上述功能均只是最基礎的表格處理,而且僅能透過.NET 以及 Java 程式語言使用,若要將 Google 試算表作為網路資料庫來應用,卻還略有不足。 為了讓開發者能夠更為便利地對 Google 試算表下達指令,同時擴張 PHP 於各方 面的應用,Zend 公司以 Google Spreadsheet API 架構為基礎,開發出了可於 PHP 17.

(25) 運作的套件,稱為 Zand Gdata Google Spreadsheet。 藉由 Zand Gdata Google Spreadsheet,開發者可使用 PHP 對 Google 試算表下 達指令,進行以前述五項指令為基礎的資料操作。因此本研究藉由此套件,透過 PHP 將預先儲存於多個 Google 試算表中的資料取出,並於接著於不同分區分別 進行資料分群。. (三). 以 Google Spreadsheets 作為資料庫. 本研究使用 Google Spreadsheet 作為資料庫,主要使用的 API 如下: 1.. 政 治 大. insertEntry():新增一個資料表. 立. 透過此函式可新增一空白資料表單,並套用指定的表單名稱。若對應於. ‧ 國. 學. 一般資料庫,即是新增一個空的資料庫。 insertRow():儲存一筆資料. ‧. 2.. 此函式以 insert 的方式在 Google Spreadsheet 的指定資料表內最下方新增. y. Nat. er. io. sit. 一行資料,即以插入一列的方式將資料存入指定的資料表中。若對應於一般 資料庫,即是存入一筆新的資料。. n. al. 3.. i n Ch getListFeed():取出單一表單中全數資料 engchi U. v. 將指定資料表中的資料全數取出,並以類似二維陣列的方式儲存,二個 維度必須分別以 getCustom()與 getText()函式取得。 透過上述函式,可以依照資料數量自動將欲分析的資料分別儲存到一個或多 個表單中,並在過程中自動產生與分區數量對應的資料表,讓各分區能夠單獨處 理對應的資料。如次頁圖 3-2 為一組資料儲存的實際方式,A 欄為資料代碼、B 欄為維度代碼、C 欄為維度數值。也就是說該圖中的 22 列分別是編號 940 資料的 編號 22 維度與其對應的數值。圖片下方的「2330_1」、「2330_2」、…、「2330_5」 五個資料表,則為五個分區各自的待處理資料。而視情況的不同,也可將五個分 18.

(26) 區的待處理資料,個別儲存於不同的 Google Spreadsheet,甚至可選擇儲存於多種 不同的資料庫中。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 3-2 以 Google Spreadsheet 儲存資料 (來源:本研究截圖). 此外,當使用 Google Spreadsheet API 進行搜尋、部分資料更新或取出等操作 時,由於 Google 伺服器端的運算是以列為單位進行資料搜尋,並且每次的列搜尋 都會將該列前的每一列「掃」過一遍,因此當行數增加時,會造成單次操作的時 間極大幅度的提升。不過本研究的操作並不涉及這些,因此不會受到此類操作的 影響。 19.

(27) 3.2.2 平行化之 kNN 演算法 當各區資料備妥後,便開始進行 kNN 分群演算法。此步驟與一般的 kNN 演 算法相同,差別僅在於各分區獨立且平行進行分群,待各區的資料分群完成後, 才統一傳送至負責群集合併的伺服器整合。 根據第二章第二節的數據可知,隨著已分群的資料量逐漸提升,kNN 分群時 所需要比較的資料也隨之提升,便會造成運算量及花費時間的大幅增加。為了避 免平行化演算法發生相似的狀況(即雖然分為多個分區處理,但各分區的效能皆 顯得低落的狀況) ,當已分群資料量累積到一定程度時,就必須將分群結果先傳送. 政 治 大 此外,由於本演算法進行分群整合時,也會針對群與群進行相似度的計算, 立. 至分群整合伺服器,並接著對尚未分群的資料重新分群。. ‧ 國. 學. 以判定是否要合併或是維持現有分群狀況。為了避免在次階段進行過多的分群相 似度運算,當本階段產生的群集超過一定數量時,就必須先將分群結果傳送至合. ‧. 併伺服器,並對尚未分群的資料開始進行全新的分群。. sit. y. Nat. 至於已分群資料量達到何種程度,以及已產生的分群數量達到多少數量時必. n. al. er. io. 須進行資料傳送,則視負責處理的伺服器效能而定(前者視分區伺服器效能;後. i n U. v. 者視分群整合伺服器效能) 。若伺服器效能高,則可訂較高的數值;反之則必須在. Ch. engchi. 較低數值時就進行資料傳送,以利縮短耗用的時間。. 3.2.3 分區群集合併 在各分區完成各自的分群作業之後,負責進行分群整合的伺服器會收到各區 傳送的分群結果,接著便可進行群集合併。合併的目的是為了使原先應處於同一 群集、卻因資料分散儲存而被分於不同區域群集的資料,可以重新被組合成同一 群集。 本研究以群集質心作為衡量群組相似度的標準,並擬定二種合併方式進行結 果比較。群集合併的判定標準「質心」為各群組的中心點,以群集中所有資料加 20.

(28) 總再平均後可計算得出。二種合併方式分別是: 1.. 給定合併門檻值: 在計算出各群集的質心後,接著將質心相近的群集彙整,將相似度高過. 門檻值的群集直接進行合併。 此方法不考量待合併群集的大小,僅以質心作為判斷依據,因此在二大 群集是否合併的判斷可能會出現問題。為此,本研究接著提出了第二種分群 合併的方法。 2.. 計算二群集的群內相似度與二群集之間的群間相似度之關係:. 政 治 大. 群集的平均群間相似度能表現出該群集的資料離散性:群集內資料間的. 立. 相似性越高,表示群集內各資料在向量空間中的距離越近;反之若相似性越. ‧ 國. 學. 低,在向量空間中的距離越遠。若資料彼此間的離散度越高,則群集在向量 空間中的大小也會相對的大,而離散度又能以平均群間相似度來顯示。因此. ‧. Nat. sit. 半徑的表示,用以作為判定群集間是否合併的指標。. y. 本研究取平均群間相似度作為群集大小的一個代表數值,將此數值視為群集. n. al. er. io. 在二維向量空間中,以質心為中心並以半徑畫圓,可以概略表示一群集. Ch. i n U. v. 的分布狀況;判定二圓是否交會時,可計算二圓的質心距離是否大於其半徑. engchi. 相加,若是則表示二圓並未交會。但由於一一計算各群集內資料點與質心之 距離,會耗用相當大量的運算時間。且質心會隨著新進資料點而不斷變動, 每次的資料調整都必須重新計算各點與質心之距離,若要不斷重複計算便會 喪失演算速度。 為了避免大量耗費時間,反而喪失本研究演算法之優勢,本研究以群集 的群內相似度來表示其半徑(距離越大則相似度越低) ,取兩群集之群內相似 度平均後,接著乘上一特定值(二群集的資料須有一定程度的重疊才合併), 與二群集之質心相似度比較,來判斷其是否要合併,公式為: (𝑆𝑆𝑆 𝐶1 + 𝑆𝑆𝑆 𝐶2 ) × 𝑘 ≥ 𝑆𝑆𝑆 (𝐶1 , 𝐶2 ) 21.

(29) (其中 SimC1 、SimC2 分別表示二群集的群內相似度,Sim(C1 , C2 )表示兩群集 質心的相似度,k 則為給定的特定值,取決於決定合併的相似程度,由使用 者給定。) 換言之,本方法在計算時仿照向量空間中二圓是否重疊的判斷方式(參 考下圖 3-3),以各群的群內相似度來代表各圓的半徑,再以群集之間質心的 相似度來代表各圓圓心之距離,藉此判斷是否要將二群集合併。而由於群內 相似度可於資料新增入該群集時直接計算,並且不需要在每一筆新資料導入 時重新計算舊有資料之間的相似度,因此相較於與質心平均距離的計算,此 方法可以省去大量時間。. 立. 政 治 大 R2Sim2. 學. O2. O1. ‧. ‧ 國. R1  Sim1. O1 O2Sim(O1,O2). sit. y. Nat. n. al. er. io. 圖 3-3 半徑、質心距離與對應相似度示意圖. i n U. (來源:本研究繪製). Ch. engchi. v. 本階段可視情況採平行或非平行方式運作。若分區甚多且有足夠資源可進行 整合處理,則此步驟亦可進行平行運算。各分區伺服器在進行分群結果傳送時可 以選擇將資料傳送至負荷最輕的整合伺服器,並由該伺服器負責進行整合。不過 當各整合伺服器都完成整合後,依然給將各自的整合結果傳送至最終的整合伺服 器中,將所有的分群資料進行整合,才完成全部的作業。. 3.2.4 整合衡量指標 由於資料分散儲存於不同區域,且各區的可能並非平均分配,因此各區的 kNN 結果可能與實際結果有所落差,在整合時必須視各區分群的狀況進行調整。 22.

(30) 以下為本研究採取的調整衡量指標: (一) 平均群內相似度(Mean of Intra-cluster Similarity) 平均群內相似度是比較同一群集內資料的相似度,將群內資料兩兩比較 後,計算資料間的相似度。接著將所有計算出的相似度加總,再除以比較次 數,可取得各群集的群內相似度。 獲得各群的群內相似度後,接著將各群的群內相似度乘上各群的資料數 量,再除以總資料數量,此一加權後的資料,即為該群的平均群內相似度。 此數值會介於 0 到 1 之間,越接近 1 表示該群內的相似度越高。. 立. 政 治 大 ∑𝑑𝑖 ∈𝐶𝑘 ∑𝑑𝑗 ∈𝐶𝑘 𝑠𝑠𝑠 (𝑑𝑖 , 𝑑𝑗 ) 1 𝑁𝑘 × (𝑁𝑘 − 1) × 2. ×. ‧. 平均群內相似度 =. 學. ‧ 國. 平均群內相似度計算公式為:. 𝑁𝑘 𝑁. al. y. sit. io. 內𝑑𝑖 與𝑑𝑗 二筆資料比較後得到的相似度。. er. Nat. 其中,N 表示資料總數,𝑁𝑘表示𝐶𝑘群的文件數量, 𝑠𝑠𝑠(𝑑𝑖 , 𝑑𝑗 )則表示𝐶𝑘群. n. iv n C (二) 平均群間相似度(Mean of Inter-cluster h e n g c hSimilarity) i U. 平均群間相似度則是計算不同群集之間的相似度。計算時以質心為群集 的代表點,將各群集質心兩兩比較後,取得其間的相似度。接著將相似度加 總後,除以各群間的比較次數,便可算出平均群間相似度。此數值越高表示 群間的相似度越高。 平均群間相似度計算公式為: 平均群間相似度 =. ∑𝐶𝑖 ∈𝐶 ∑𝐶𝑗 ∈𝐶 𝑠𝑠𝑠(𝐶𝑖 , 𝐶𝑗 ) 1 𝐶 × (𝐶 − 1) × 2. 其中 C 為群集總數,𝑠𝑠𝑠(𝐶𝑖 , 𝐶𝑗 )為𝐶𝑖 與𝐶𝑗 兩群集的質心相似度。 23.

(31) (三) 分群品質(Cluster Quality) 為了評量分群品質的優劣,可以使用以下公式(Lai & Liu, 2009)判斷: 分群品質 =. 平均群內相似度 平均群間相似度. 也就是說,要使群集分群品質提升的方法有二:提升平均群內相似度以 及降低平均群間相似度。群內的資料越為相似,且群與群之間的相似性越低, 就能夠得到越高的分群品質。為了得到較高的分群品質,當群內資料的相似. 政 治 大 最高的幾個群組進行合併。 立. 度過低時,就必須將群集拆解並重新分群;群間相似度過高時,則將相似度. ‧ 國. 學. 為了使整體分群品質提升,達到符合要求的門檻,必須使平均群類相似 度提升,並使平均群間相似度降低。但在合併、拆分、或是重分組的過程中,. ‧. 平均群內相似度與平均群間相似度也會隨之改變,必須隨之進行調整。而若. Nat. n. al. 3.2.5 時間複雜度. Ch. engchi. er. io. 群間相似度過高的群集)可能必須重複多次。. sit. y. 調整後的分群品質仍未達門檻,此步驟(拆分群內相似度過低的群集、合併. i n U. v. 如第二章所述,kNN 演算法的時間複雜度為𝑂(𝑥𝑛2 ),其中 x 為各筆資料的維. 度,n 為資料數量。. 本研究設計的平行演算法的第一階段將 n 筆資料分為 y 次平行分群,每次處 𝑛 2. 𝑛. 𝑥𝑛2. 理的資料量均為 𝑦,其時間複雜度為𝑂 �𝑥 ∙ �𝑦 � � = O � 𝑦2 �;第二階段的合併演算. 法與第一階段相似,只是由單筆資料與所有資料的比較,改為群集與群集質心的. 比較,因此其時間複雜度變為𝑂(𝑥𝐶 2 ),其中 x 為各筆資料的維度,C 為群集數量; 𝑥𝐶 2. 若同樣分成 y 次進行平行化運算,則此階段的時間複雜度為O � 𝑦2 �。 24.

(32) 𝑥𝑛2. 因此本研究的主要演算法的時間複雜度為𝑂 � 𝑦2 +. 𝑥𝐶 2. � = 𝑂� 𝑦2. 𝑥 �𝑛2 +𝐶 2 � 𝑦2. �,而其. 中相較於原始資料量 n,在有效分群的狀況下,各區的分群量 C 均會減小相當的 𝑥𝑛2. 量,因此可以將 C 忽略,得O � 𝑦2 �,相較於原始 kNN 演算法的𝑂(𝑥𝑛2 ),本研究. 設計的平行畫演算法可節省 y2 的時間。. 3.2.6 資料結構與平行演算法 本研究以 php 程式語言進行 kNN 演算法之平行化處理,關鍵步驟的虛擬程式 碼(pseudo code)與資料儲存結構如下: (一). 立. class_info:array,紀錄每個群集的資訊。. 學. ‧ 國. 1.. 資料結構. 政 治 大. (1) key 值為群集的編號。. ‧. (2) [attr]:array,所有非 0 的 term 與其對應數值(平均值)。. Nat. sit. y. (3) [cnt]:integer,在此群集的資料筆數. n. al. er. io. (4) [include]:array,此群集包含哪些資料,以編號的方式記錄。. Ch. i n U. v. (5) [InterSim]:群內相似度,此處僅計算相似度總和,待計算分群品質 時才除以比較次數。 2.. engchi. Pointlist:array,紀錄每筆資料的資訊。 (1) key 值為資料的編號。 (2) [attribute]:array,紀錄該筆資料的每個[term]與其對應的值。 (3) [inclass]:string,此資料被歸類的群集。. (二). 各階段門檻值 25.

(33) 本研究依照處理階段的不同,有多個門檻值可進行調整。以下將對各階段的 門檻值進行說明: 1.. 第一階段門檻值: 第一階段的門檻值是在各分區處理時,決定該筆資料是否要納入最接近. 群集的門檻值。由於資料本身並不一定是緊密接近,如果新加入的資料距離 所有群集都有相當的距離(即與每個群集的資料相似度都不高) ,此時應該要 讓此筆資料獨立成群。 第一階段的門檻值正是針對此狀況設定,決定新進資料與現有資料群集. 政 治 大. 的相似度達到何種程度,才納入現有群集中;若未達到相似度門檻,則將該. 立. 筆資料獨立成新的群集。. ‧ 國. 學. 為了避免後續整合時要對群集進行多次的拆解、重組,本研究將第一階 段門檻值設定為較高的數值,也就是新進資料必須達到相當程度的相似度才. ‧. 會歸類於現有群集。期望藉此產生大量較小且資料較緊密的分群,待第二階. Nat. n. al. er. io. sit. y. 段整合時才產生出更完整的分群。. 2.. 第二階段門檻值:. Ch. engchi. i n U. v. 第二階段主要進行的工作是將各區的分群整合,產生整合的分群結果。 此階段的門檻值乃合併之條件,即群集間的相似度必須達到該門檻值才進行 合併,也就是「最低可合併相似度」。 相較於第一階段的較高門檻值,第二階段的門檻值會低一些,以避免整 合後仍有大量小型群集,造成實際上並未真正整合的情況發生。此數值必須 採用適當的數值,若過大則群集與群集無法適當合併,過小則會發生群集合 併過度的情況。 3.. 第三階段門檻值: 26.

(34) 第三階段主要進行群集品質的檢驗,若品質未達標準則必須視情況進行 拆分、重組、重新分群。分群品質受到群間相似度與群內相似度的影響,因 此本階段的門檻值有二,分別是群間相似度與群內相似度。 為使分群品質較高,必須要有較低的平均群間相似度與較高的平均群內 相似度。為此,各群集的群內相似度必須高,而群集間的相似度必須低。因 此本階段門檻值分別是最高群間相似度與最低群內相似度。若某二群集的群 間相似度超過最高群間相似度門檻值,則將此二群集視狀況合併,或是針對 其中相似度較低的群集拆分、重組;若某一群集的群內相似度過低,則將此. 政 治 大. 群集拆分,並對其中的資料進行分群重組。. 立. 虛擬程式碼:各分區平行處理. ‧ 國. 學. (三). get data from GoogleSpreadsheet (or other database saved data). 2.. data_num_counter = 0. 3.. (loop start, stop until all data classified). 4.. add 1 to data_num_counter. 5.. data_num (as a string) = region_num‘+’data_num_counter. ‧. 1.. n. er. io. sit. y. Nat. al. Ch. engchi. //region_num 為分區編號 6.. pointlist[data_num] = data that gotton at step 1. 7.. foreach loop : pointlist. 8.. {. 9.. data_num = key of pointlist. 10.. similarity[ data_num ] = 0. 11.. foreach loop : attributes. 12.. { 27. i n U. v.

(35) 13.. attr_sim = compute attributes similarity //視選用的相似度計算. 14.. similarity[ data_num ] = similarity[ data_num ] + attr_sim. 15.. }. 16. }. //至此,similarity array 儲存了新近資料與現有資料點的相似度. 17. select the top k of similarity. // k 值為 kNN 的 k,本研究訂為 30. 18. for loop : top k of similarity array 19. { 20.. class_num = key of current similarity array. 21.. avg_class_similarity[class_num] =. 22. }. // avg_class_similarity array 是將這最接近的 k 個點的相似度,以群集分. 政 治 大. 立. ‧ 國. 學. 別加總並平均. y. sit. n. al. er. add to this class:. io. 25.. // threshold_01 為納入群集的相似度門檻. Nat. 24. {. //達到第一階段門檻值. ‧. 23. if : largest avg_class_similarity >= threshold_01. i n U. v. 26.. [attr] : compute new attribute average. 27.. [cnt] : add 1 to [cnt]. 28.. [include] : include this data_num. 29.. [InterSim] : add sum of similarity which data in this class to [InterSim]. Ch. engchi. 30. } 31. else. //未達到第一階段門檻值,就獨立成一群. 32. { 33. 34.. Create a new class: key = data_num 28.

(36) 35.. [attr] = attributes of this data. 36.. [cnt] = 1. 37.. [include] include this data_num (only include one data currently). 38.. [InterSim] = 0. 39. } //n 視計算能力而定。當分群數量超過 n 時,. 40. if : count(class_info) >= n 41. {. //就準備進行整合,可避免分群數量過多而造成整合費時。. 42.. send data to integrate server. 43.. clear class_info array. 政 治 大. 立. 學. ‧ 國. 44. }. 45. back to step 3, until all data are classified into a class. ‧. 虛擬程式碼:各區相似群合併. sit. y. Nat. (四). 2.. get class_info array from regional server. n. al. er. get integrated_class_info from GoogleSpreadsheet (or other database). io. 1.. Ch. 3. 4.. foreach loop : class_info. 5.. {. engchi. 6.. foreach loop : integrated_class_info. 7.. {. i n U. 8.. class _num = key of integrated_class_info. 9.. similarity[ class_num ] = 0. 10.. foreach loop : attr 29. v.

(37) 11.. {. 12.. attr_sim = compute attributes similarity //視選用的相似度計算. 13.. add attr_sim to similarity[ class_num ]. 14.. }. 15.. }. 16.. get the largest similarity in similarity array. 17.. //以下將 class_info 合併至 integrated_class_info 中. 18.. if : largest similarity >= threshold_02. 19.. {. 立. 治 為分群合併相似度門檻 政 // threshold_02 大. merge to this class (in integrated_class_info array) :. 學. ‧ 國. 20.. //達到第二階段門檻值. 21.. [attr] : compute new attribute average. ‧. by all ( integrated_class_info[attr]* integrated_class_info[cnt] +. 23.. [include] : include this data_num. 24.. [InterSim] : add class_info[InterSim] to [InterSim]. sit. y. 22.. Nat. class_info[attr]*class_info[cnt] ) / integrated_class_info[cnt]+class_info[cnt]. n. al. er. io. [cnt] : add class_info[cnt] to [cnt]. Ch. engchi. i n U. v. and compute the similarity of data between two classes 25.. }. 26.. else : add this class to integrated_class_info array. 27. }. (五). 虛擬程式碼:分群品質檢驗與重新分群. 1.. get integrated_class_info from GoogleSpreadsheet (or other database). 2.. compute the inter-cluster similarity and safe as an array : sim_inter[], key as 30.

(38) class_num 3.. sort the sim_inter array in ascending order. 4.. while loop : smallest value in sim_inter array <= threshold_03_Inter. 5.. {. //threshold_03_Inter 是可接受的最低群內相似度. 6.. class_num = key of the smallest value of sim_inter. 7.. Foreach loop : integrated_class_info[include] (data in this class). 8.. {. 9.. compute similarity with integrated_class_info[attr]. 政 治 大. //僅與現有群集的質心做相似度運算,避免落入一般 kNN 費時之處. 立. find the most similar class and add to this class:. 學. ‧ 國. 46.. [attr] : compute new attribute average. 48.. [cnt] : add 1 to [cnt]. 49.. [include] : include this data_num. 10.. [InterSim] : add sum of similarity which data in this class to [InterSim]. ‧. 47.. n. er. io. sit. y. Nat. al. 11.. }. 12.. unset integrated_class_info[class_num]. Ch. engchi. i n U. v. 13. } 14. //接著調整群間相似度 15. compute the intra-cluster similarity and safe as an array : sim_intra[], key as string : class_num’+’ class_num, which means the similarity of these two classes 16. sort the sim_intra array in descending order 17. while loop : largest value in sim_intra array >= threshold_03_Intra 18. {. //threshold_03_Intra 是可接受的最高群間相似度 31.

(39) 19.. merge these two classes :. 28.. [attr] : compute new attribute average. 29.. [cnt] : add these two classes’ [cnt]. 30.. [include] : include all data_num in these two classes. 31.. [InterSim] : add these two classes’ [InterSim] and compute the similarity of data between two classes unset integrated_class_info[(second)class_num]. 21. }. 立. 政 治 大. ‧. ‧ 國. 學. io. sit. y. Nat. n. al. er. 20.. Ch. engchi. 32. i n U. v.

(40) 第四章、 研究成果 第一節、 一般性資料分群成果 本研究在此階段以隨機性方式產生數值資料,進行 kNN 分群結果。本節用意 在於檢驗 kNN 平行化演算法之可用性,並比較平行化之 kNN 演算法與原始 kNN 演算法之速度與分群品質。 本節使用之數據,係以隨機變數生成之 5000 筆 4 維度的資料座標,資料數值 由 0~100 隨機生成,將之儲存後分別以未平行化的 kNN 演算法、以及經本研究平 行化的 kNN 演算法分別運算。本階段過程中相似度採歐幾里得距離(Euclidean distance,令為 d),並取. 1. 1+𝑑. 立. 政 治 大. 作為其相似度,並依此計算平均群內相似度、平均. 群間相似度以及分群品質。. ‧ 國. 學. 平行化 kNN 演算法過程中以 5 個區塊各別分群,並於各區各自進行初步分群. ‧. 運算。待各區運算皆完成後,將資料統整並進行整合。過程中紀錄分群與整合所. sit. y. Nat. 使用的運算時間,實際結果如下表 4-1 與次頁表 4-2 所示。在表 4-2 中「分群時間. io. al. n. 整合所使用的時間。. er. 1~5」分別表示 5 個區塊資料分群的運算時間,整合時間則是將 5 個區塊的結果. Ch. engchi. i n U. v. 表 4-1 kNN 分群結果(一般性資料). 資 料. 結 果. 第一次. 第二次. 第三次. 第四次. 第五次. 平均值. 資料總數. 5000. 5000. 5000. 5000. 5000. 5000. 平行數量. 1. 1. 1. 1. 1. 1. 分群時間(秒) 平均群間相似度. 441.4271. 443.2496. 437.1011. 454.6090. 414.7192. 438.2212. 0.0150. 0.0148. 0.0148. 0.0158. 0.0145. 0.0150. 平均群內相似度. 0.0290. 0.0290. 0.0304. 0.0265. 0.0286. 0.0287. 分群品質. 1.9325. 1.9646. 2.0567. 1.6756. 1.9759. 1.9211. ※註:以上數據均於計算後四捨五入至小數點後第 4 位。. 33.

(41) 表 4-2 平行化的 kNN 分群結果(一般性資料) 第三次. 第四次. 第五次. 平均值. 資料總數. 5000. 5000. 5000. 5000. 5000. 5000. 平行數量. 5. 5. 5. 5. 5. 5. 分群 1 時間(秒). 12.2211. 12.4475. 12.7029. 12.8619. 12.8841. 12.6235. 分群 2 時間(秒). 12.0514. 12.7856. 13.0246. 13.2052. 13.2210. 12.8576. 分群 3 時間(秒). 12.3304. 12.7531. 12.5697. 12.8495. 13.3878. 12.7781. 分群 4 時間(秒). 13.0134. 13.1885. 12.7400. 13.3386. 13.7396. 13.2040. 分群 5 時間(秒). 13.7650. 12.9397. 13.1854. 12.9053. 13.4714. 13.2534. 整合時間(秒) 平均群間相似度. 0.0228. 0.0250. 0.0274. 0.0253. 0.0243. 0.0250. 0.0153. 0.0153. 0.0153. 0.0141. 0.0162. 0.0152. 平均群內相似度. 0.0281. 0.0298. 0.0272. 0.0276. 分群品質. 1.8323. 2.1168. 1.6819. 1.8161. 立. 0.0263 治0.0266 政 大 1.7122 1.7374. ※註:以上數據均於計算後四捨五入至小數點後第 4 位。. 學. 由此二表格可見,使用本研究設計之平行化處理的 kNN 相較於一般的 kNN. ‧. 運算,其耗用的時間大幅降低(440 秒提升至 15 秒內,大約節省 95%的時間),. sit. y. Nat. 而平均分群品質則略微降低(1.92 降低至 1.81,約降低 5%)。此外,上列表格刪. io. 除了一筆分群品質由 1.99 提升至 4.87 的離散性質數據,這表示資料的分群品質可. n. al. er. 結 果. 第二次. ‧ 國. 資 料. 第一次. i n U. v. 能並不穩定。但由上列資料來看,平行化前後的分群品質之間,並無法看出明顯 的對應關係。. Ch. engchi. 由於 kNN 演算法分群時,會因應資料的輸入順序而產生不同的結果。也就是 說,即使是完全相同的母體資料,只要輸入的順序不同,便會有不同的分群結果 與分群品質。因此本研究認為,以節省了 95%的時間來看,當有海量資料需要快 速分群時,僅降低 5%的分群品質是可接受的。. 34.

(42) 第二節、 新聞文章分群結果(給定門檻值) 然而,一般使用於文章型的資料探勘時,分群的相似度計算並非採用前述的 歐幾里得相似度,而是採用 cosine 相似度進行計算。因此本研究接著以 cosine 相 似度來進行 kNN 分群演算。 本節使用以實際文章轉換成數值之資料庫(薛弘業,2013)做為測試。該資 料庫以鉅亨網匯集的股票新聞做為資料來源,將企業個股的相關財經新聞作為原 始資料,並藉由中研院研發的 CKIP 中文斷詞系統進行文章斷詞後,以 TF-IDF 與 TFC-Weighting 計算各篇文章的特徵值。本研究取得該研究資料庫中三家企業(鴻. 政 治 大 分別針對上述新聞文章轉換後之數值資料進行平行分群,並將三家企業資料合併 立. 海(2317)、台積電(2330)與宏達電(2498))於 2012 年 6 月至 2013 年 5 月之資料,. ‧ 國. 學. 後進行分群,共計四項平行分群測試。. 以下表格 4-3、4-4 同樣紀錄各分群時間、整合時間,並針對分群品質進行計. ‧. 算,三家企業的股票新聞分別以編號 2317、編號 2330、編號 2498 表示,並以「綜. er. io. sit. y. Nat. 合」表示三家企業的新聞綜合分群結果。. n. al. i n U. v. 表 4-3 kNN 分群結果(新聞文章分群). 資 料. 結 果. Ch. #2317 資料總數. e n#2330 gchi. 236. 平行數量. #2498. 綜合. 平均值. 138. 402. 776. 388. 1. 1. 1. 1. 1. 分群時間(秒) 平均群間相似度. 20.5686. 5.9119. 59.7114. 205.2393. 72.8578. 0.1929. 0.1982. 0.2271. 0.1903. 0.2021. 平均群內相似度. 0.5412. 0.5108. 0.4693. 0.6109. 0.5331. 分群品質. 2.8058. 2.5771. 2.0660. 3.2111. 2.6650. ※註:以上數據均於計算後四捨五入至小數點後第 4 位。. 35.

(43) 表 4-4 平行化的 kNN 分群結果(新聞文章分群). 資 料. 結 果. #2317. #2330. #2498. 綜合. 平均值. 資料總數. 236. 138. 402. 776. 388. 平行數量. 5. 5. 5. 5. 5. 分群 1 時間(秒). 0.8750. 0.2112. 2.5553. 7.9955. 2.9092. 分群 2 時間(秒). 0.7326. 0.2307. 2.3598. 7.5613. 2.7211. 分群 3 時間(秒). 0.8427. 0.2310. 2.5252. 8.3125. 2.9779. 分群 4 時間(秒). 0.8639. 0.2891. 2.6360. 8.2075. 2.9991. 分群 5 時間(秒). 0.8102. 0.3602. 2.7211. 8.0591. 2.9876. 整合時間(秒) 平均群間相似度. 2.7656. 1.9183. 8.6312. 25.9869. 9.8255. 0.1620. 0.1942. 0.1854. 0.1803. 0.1805. 平均群內相似度. 學. ‧ 國. 分群品質. 0.4866 治 0.5370 0.5411 0.5248 政 大 3.3001 2.5060 2.8969 3.0008 2.9259 立 ※註:以上數據均於計算後四捨五入至小數點後第 4 位。 0.5345. 由上二表格可知,各資料量的分群時間都有著高度的加速,而分群品質則依. ‧. 照資料的不同而有升有降,平均後甚至比未平行化時來得高,即便降低也只是略. sit. y. Nat. 微下降(#2330 的 2.58 降至 2.50 與綜合的 3.21 降至 3.00),在大量降低運算時間. io. er. 的情況下,都還在可接受的範圍內。. al. n. iv n C hengchi U 時間與分群品質變動(新聞文章分群). 表 4-5. 時 間 變 動 品 質 變 動. #2317. #2330. #2498. 綜合. 平均值. 未平行化時間(秒). 20.5686. 5.9119. 59.7114. 205.239. 72.8578. 平行化時間總和(秒). 3.6406. 2.2785. 11.3523. 34.2994. 12.8246. 變化比例. -82.30%. -61.46%. -80.99%. -83.29%. -82.40%. 未平行化分群品質. 2.8058. 2.5771. 2.066. 3.2111. 2.665. 平行化後分群品質. 3.3001. 2.506. 2.8969. 3.0008. 2.9259. 變化比例. +17.62%. -2.76%. +40.22%. -6.55%. +9.79%. ※註:以上數據均於計算後四捨五入至小數點後第 4 位。. 36.

(44) 第三節、 新聞文章分群結果(比較相似度) 如第三章研究方法所述,由於給定門檻值的方法並未考量到待合併的群集大 小,而是直接就質心的距離或相似度來判斷二群集是否該合併,可能會對分群結 果造成誤差。雖然如第二節的結果顯示,在大量提升速度的情況下僅稍微降低分 群品質,但卻也造成分群品質變化量的不穩定,本研究遂進行第二種整合方式, 期望獲取更加的分群品質。 本節採用與第二節相同的資料,以計算二群集質心相似度與群內相似度之關 係來決定是否要進行合併。下表 4-6、4-7 採用關係值 0.8(即二群集的群內相似 度相加後乘上 0.8,若大於二群集質心之間的相似度即進行合併)進行分群合併, 此數值經多次測試結果可產生較佳分群品質。表 4-6 紀錄分群時間、整合時間以 及最終分群品質,表 4-7 則進行結果比較。. 政 治 大 #2330 #2498. 表 4-6 平行化的 kNN 分群結果(新聞文章分群,相似度法). 402. 5. 5. 5. 分群 1 時間(秒). 0.7168. 0.2059. 2.2844. 分群 2 時間(秒). 0.6522. 0.2208. 2.4664. 分群 3 時間(秒). 0.8453. 0.2386. 2.5199. 分群 4 時間(秒). 0.8556. 0.2851. 2.1921. 0.3135. 2.3157. 1.1969. 5.6471. 0.8318. n. al. 整合時間(秒) 2.4243 平均群間相似度 0.1523. Ch. 平均群內相似度 0.5838 分群品質 3.8326. e0.1878 ngchi. 平均值. 776. 388. i n U 0.1531. 5. 5. 8.5229. 2.9325. ‧. io. 分群 5 時間(秒). 8.4422. 2.9454. 8.7206. 3.0811. y. er. 平行數量. ‧ 國. 138. Nat. 結 果. 資料總數. 綜合. 學. 資 料. 立 236. sit. #2317. v. 8.9935. 3.0816. 7.9561. 2.8543. 10.7267. 4.9987. 0.1585. 0.1629. 0.5385. 0.6110. 0.6230. 0.5891. 2.8671. 3.9916. 3.9307. 3.6555. ※註:以上數據均於計算後四捨五入至小數點後第 4 位。. 37.

(45) 表 4-7 時間與分群品質變動(新聞文章分群,相似度法). 時 間 變 動. 品 質 變 動. #2317. #2330. #2498. 綜合. 平均值. 未平行化時間(秒). 20.5686. 5.9119. 59.7114. 205.239. 72.8578. 門檻值法時間總和(秒). 3.6406. 2.2785. 11.3523. 34.2994. 12.8246. 門檻值法變化比例. -82.30%. -61.46%. -80.99%. -83.29%. -82.40%. 相似度法時間總和(秒) 3.279887. 1.510423. 8.167064. 19.72017. 8.080323. 相似度法變化比例. -84.05%. -74.45%. -86.32%. -90.39%. -88.91%. 未平行化分群品質. 2.8058. 2.5771. 2.066. 3.2111. 2.665. 門檻值法分群品質. 3.3001. 2.506. 2.8969. 3.0008. 2.9259. 門檻值法變化比例. +17.62%. +40.22% 治 政 2.8671 大3.9916 3.8326. -6.55%. +9.79%. 3.9307. 3.6555. +11.25%. +22.41%. +37.17%. 相似度法分群品質. 立+36.60%. +93.20%. 學. ‧ 國. 相似度法變化比例. -2.76%. ※註:以上數據均於計算後四捨五入至小數點後第 4 位。. ‧. 表 4-6 與前一節的表 4-4,分別是二種方法的分群時間與品質,比較此二表格 可發現第二種方法的分群品質不僅優於未平行化的分群品質,同時也較第一種方 法的分群品質為優。時間部分,二種方法均大幅度優於未平行化演算法的運算時 間,二種方法在第一階段各區的分群時間是相當的,真正發生較大變動之處是在. sit. y. Nat. n. al. er. io. 第二階段的分群整合時間──比較群集間相似度關係的方式,運算時間又比給定門 檻值的方式更低。. Ch. engchi. 38. i n U. v.

(46) 第四節、 模擬文章資料分群結果(給定門檻值) 由於第二、三節之分群資料尚屬小量,無法確認在大量資料下,本演算法的 分群狀況為何,本節生成 5000 筆測試資料,測試資料以模仿文章行資料做為測試。 由於文章的特性會造成斷詞並數值化後的資料會是包含大量為數值 0 的稀疏矩陣 (每個單詞為一向量維度,數值 0 表示該文章無此單詞) ,因此本節的測試資料仿 照此特性,在隨機生成的測試資料中,生成維度為 50000 的資料,共計 5000 筆資 料;並在這些隨機產生的資料中,產生了大量為 0 的數值,每篇文章的非零維度 大約 130~150 之間(即模擬總單詞數量為 50000 的 5000 篇文章,每篇文章包含. 政 治 大 在測試資料中,單一資料向量表示一篇文章數值化後的資料,而其各向量數 立. 130~150 個單詞的數值化資料)。. ‧ 國. 學. 值則分別表示文章中的單詞數值化後的數字,每個維度隨機產生的數值設定在 0~0.6 之間。同時為了避免過度隨機而導致整筆資料過於平均分布而難以分群,. ‧. 本研究也模仿有主題性的資料,在此 50000 個單詞中,隨機選出 100 個做為較常. sit. y. Nat. 出現之關鍵單詞,其隨機產生數值在 0.1~0.7 之間。雖說無法產生完全符合現實. io. n. al. er. 文章之數值化結果,但也屬於具備可分群性之相似資料。. i n U. v. 由於資料數量過大,為避免耗費時間過長,也藉此展現此演算法之靈活性,. Ch. engchi. 此處同樣採用 5 分區分群,並將第一階段的資料限制設定為 500(即處理完 500 個資料分群後,就將分群結果傳送至整合伺服器),故會有 10 筆分群時間。次頁 表格 4-6、4-7 詳細紀錄分群時間、整合時間,並針對分群品質進行計算。表 4-8 則比較了平行化前後,所消耗的時間與分群品質的差異。. 39.

(47) 表 4-8 kNN 分群結果(模擬文章資料). 資 料. 結 果. 第一次. 第二次. 第三次. 第四次. 第五次. 平均值. 資料總數. 5000. 5000. 5000. 5000. 5000. 5000. 平行數量. 1. 1. 1. 1. 1. 1. 分群時間(秒) 平均群間相似度. 8514.2198. 9013.8322. 9539.8232. 9025.1832. 9440.2138. 9106.6545. 0.0335. 0.0358. 0.0295. 0.0363. 0.0312. 0.0333. 平均群內相似度. 0.9839. 0.9783. 0.9789. 0.9872. 0.9793. 0.9815. 分群品質. 29.3705. 27.3028. 33.1751. 27.2044. 31.3791. 29.6864. ※註:以上數據均於計算後四捨五入至小數點後第 4 位。. 政 治 大 第二次 第三次 第四次. 表 4-9 平行化的 kNN 分群結果(模擬文章資料) 第一次. 5000. 5000. 5000. 10. 10. 10. 10. 學. 10. 10. 分群 1 時間(秒). 103.1327. 103.2814. 107.2385. 103.1283. 108.2397. 105.0041. 分群 2 時間(秒). 105.2198. 101.8326. 105.2987. 105.3220. 108.0821. 105.1511. 分群 3 時間(秒). 107.1298. 102.2184. 108.1298. 110.2315. 107.2937. 107.0007. 109.1983. 104.2831. 105.2399. 115.2139. 104.1298. 107.6130. 105.2385. 110.2398. 120.3295. 103.1924. 109.0260. 107.2817. 107.8744. 108.2937. 107.8585. 平行數量. ‧ 國. 5000. ‧. 5000. sit. 平均值. 分群 5 時間(秒). 106.1298. 分群 6 時間(秒). 109.2140. 分群 7 時間(秒). 104.1982. 分群 8 時間(秒). 103.1985. 108.3285. 112.2398. 103.0913. 104.1903. 106.2097. 分群 9 時間(秒). 104.3219. 109.2385. 108.2984. 105.1087. 105.2985. 106.4532. 分群 10 時間(秒). 105.2982. 110.3287. 104.2198. 104.1824. 110.3295. 106.8717. 整合時間(秒) 平均群間相似度. 43.1328. 48.2109. 46.3285. 42.0933. 50.2837. 46.0099. 0.0349. 0.0344. 0.0295. 0.0393. 0.0293. 0.0335. 平均群內相似度. 0.9627. 0.9884. 0.9789. 0.9999. 0.9829. 0.9826. 分群品質. 27.6076. 28.7045. 33.1751. 25.4352. 33.4982. 29.6841. er. n. al. y. 分群 4 時間(秒). Nat. 結 果. 資料總數. 第五次. io. 資 料. 立 5000. 105.8348 103.9321 113.1094 iv n C109.3285 h e n g c111.2320 h i U 106.2398. ※註:以上數據均於計算後四捨五入至小數點後第 4 位。. 40.

參考文獻

相關文件

理解並欣賞幾何的性質可以透過坐標而轉化成數與式的 關係,而數與式的代數操作也可以透過坐標產生對應的

進行 18 以內的加法和減法口算 學生須透過口算解主要以圖像闡述的應用 題,並以橫式作記錄。.. 加法和減法的直式在學習單位 1N4

 點擊按鈕「Rollover」,工作表便會剪下紅色線以下的資料並複 製至綠色線以下的儲存格。

YouTuber 們只要點開網頁,就能快速使用這些服務。此外 Google 也推出 了 YouTube API,能讓開發者利用 YouTube

本論文之目的,便是以 The Up-to-date Patterns Mining 演算法為基礎以及導 入 WDPA 演算法的平行分散技術,藉由 WDPA

介面最佳化之資料探勘模組是利用 Apriori 演算法探勘出操作者操作介面之 關聯式法則,而後以法則的型態儲存於介面最佳化知識庫中。當有

本論文結合了 GPU-FPM 以及 Bitmap 的優點,並利用 Multi-GPU 架構提出 Multi-GPU CSFPM 的演算法,由於 CSFPM 如同 GPU-FPM

斷詞:在文件資料經過前處理後,文件中只剩下文字資料,對於英文 而言,空白以及標點符號