時間:2023-03-23 15:18:24
序論:在您撰寫數據挖掘論文時,參考他人的優秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。
數據挖掘技術是近些年發展起來的一門新興學科,它涉及到數據庫和人工智能等多個領域。隨著計算機技術的普及數據庫產生大量數據,能夠從這些大量數據中抽取出有價值信息的技術稱之為數據挖掘技術。數據挖掘方法有統計學方法、關聯規則挖掘、決策樹方法、聚類方法等八種方法,關聯規則是其中最常用的研究方法。關聯規則算法是1993年由R.Atal,Inipusqi,Sqtm三人提出的Apriori算法,是指從海量數據中挖掘出有價值的能夠揭示實體和數據項間某些隱藏的聯系的有關知識,其中描述關聯規則的兩個重要概念分別是Suppor(t支持度)和Confi-dence(可信度)。只有當Support和Confidence兩者都較高的關聯規則才是有效的、需要進一步進行分析和應用的規則。
二、使用Weka進行關聯挖掘
Weka的全名是懷卡托智能分析環境(WaikatoEnviron-mentforKnowledgeAnalysis),是一款免費的、非商業化的、基于JAVA環境下開源的機器學習以及數據挖掘軟件[2]。它包含了許多數據挖掘的算法,是目前最完備的數據挖掘軟件之一。Weka軟件提供了Explorer、Experimenter、Knowledge-Flow、SimpleCLI四種模塊[2]。其中Explorer是用來探索數據環境的,Experimenter是對各種實驗計劃進行數據測試,KnowledgeFlow和Explorer類似,但該模塊通過其特殊的接口可以讓使用者通過拖動的形式去創建實驗方案,Simple-CLI為簡單的命令行界面。以下數據挖掘任務主要用Ex-plorer模塊來進行。
(一)數據預處理
數據挖掘所需要的所有數據可以由系統排序模塊生成并進行下載。這里我們下載近兩年的教師科研信息。為了使論文總分、學術著作總分、科研獲獎總分、科研立項總分、科研總得分更有利于數據挖掘計算,在這里我們將以上得分分別確定分類屬性值。
(二)數據載入
點擊Explorer進入后有四種載入數據的方式,這里采用第一種Openfile形式。由于Weka所支持的標準數據格式為ARFF,我們將處理好的xls格式另存為csv,在weka中找到這個文件并重新保存為arff文件格式來實現數據的載入。由于所載入的數據噪聲比較多,這里應根據數據挖掘任務對數據表中與本次數據任務不相關的屬性進行移除,只將學歷、職稱、論文等級、學術著作等級、科研獲獎等級、科研立項等級、科研總分等級留下。
(三)關聯挖掘與結果分析
WeakExplorer界面中提供了數據挖掘多種算法,在這里我們選擇“Associate”標簽下的Apriori算法。之后將“lowerBoundMinSupprot”(最小支持度)參數值設為0.1,將“upperBoundMinSupprot”(最大支持度)參數值設為1,在“metiricType”的參數值選項中選擇lift選項,將“minMetric”參數值設為1.1,將“numRules”(數據集數)參數值設為10,其它選項保存默認值,這樣就可以挖掘出支持度在10%到100%之間并且lift值超過1.1且排名前10名的關聯規則。其挖掘參數信息和關聯挖掘的部分結果。
三、挖掘結果與應用
以上是針對教師基本情況和科研各項總分進行的反復的數據挖掘工作,從挖掘結果中找到最佳模式進行匯總。以下列出了幾項作為參考的關聯數據挖掘結果。
1、科研立項得分與論文、科研總得分關聯度高,即科研立項為A級的論文也一定是A。這與實際也是相符的,因為科研立項得A的教師應該是主持了省級或是國家級的立項的同時也參與了其他教師的科研立項,在課題研究的過程中一定會有國家級論文或者省級論文進行發表來支撐立項,所以這類教師的論文得分也會很高。針對這樣的結果,在今后的科研工作中,科研處要鼓勵和幫助教師搞科研,為教師的科研工作提供精神上的支持和物質上的幫助,這樣在很大程度上能夠帶動整個學??蒲泄ぷ鞯倪M展。
2、副教授類的教師科研立項得分很高,而講師類教師和助教類教師的科研立項得分很低,這樣符合實際情況。因為副教授類的教師有一定的教學經驗,并且很多副教授類的教師還想晉職稱,所以大多數副教授類教師都會申請一些課題。而對于講師類和助教類的教師,由于教學經驗不足很少能進行省級以上的課題研究,因此這兩類教師的科研立項分數不高。針對這樣的結果,在今后的科研工作中,科研處可以采用一幫一、結對子的形式來幫助年輕教師,這樣可以使青年教師參與到老教師的科研課題研究工作中去,在課題研究工程中提高科研能力和教學能力。
[關鍵詞]數據挖掘數據挖掘方法
隨著信息技術迅速發展,數據庫的規模不斷擴大,產生了大量的數據。但大量的數據往往無法辨別隱藏在其中的能對決策提供支持的信息,而傳統的查詢、報表工具無法滿足挖掘這些信息的需求。因此,需要一種新的數據分析技術處理大量數據,并從中抽取有價值的潛在知識,數據挖掘(DataMining)技術由此應運而生。
一、數據挖掘的定義
數據挖掘是指從數據集合中自動抽取隱藏在數據中的那些有用信息的非平凡過程,這些信息的表現形式為:規則、概念、規律及模式等。它可幫助決策者分析歷史數據及當前數據,并從中發現隱藏的關系和模式,進而預測未來可能發生的行為。數據挖掘的過程也叫知識發現的過程。
二、數據挖掘的方法
1.統計方法。傳統的統計學為數據挖掘提供了許多判別和回歸分析方法,常用的有貝葉斯推理、回歸分析、方差分析等技術。貝葉斯推理是在知道新的信息后修正數據集概率分布的基本工具,處理數據挖掘中的分類問題,回歸分析用來找到一個輸入變量和輸出變量關系的最佳模型,在回歸分析中有用來描述一個變量的變化趨勢和別的變量值的關系的線性回歸,還有用來為某些事件發生的概率建模為預測變量集的對數回歸、統計方法中的方差分析一般用于分析估計回歸直線的性能和自變量對最終回歸的影響,是許多挖掘應用中有力的工具之一。
2.關聯規則。關聯規則是一種簡單,實用的分析規則,它描述了一個事物中某些屬性同時出現的規律和模式,是數據挖掘中最成熟的主要技術之一。關聯規則在數據挖掘領域應用很廣泛適合于在大型數據集中發現數據之間的有意義關系,原因之一是它不受只選擇一個因變量的限制。大多數關聯規則挖掘算法能夠無遺漏發現隱藏在所挖掘數據中的所有關聯關系,但是,并不是所有通過關聯得到的屬性之間的關系都有實際應用價值,要對這些規則要進行有效的評價,篩選有意義的關聯規則。
3.聚類分析。聚類分析是根據所選樣本間關聯的標準將其劃分成幾個組,同組內的樣本具有較高的相似度,不同組的則相異,常用的技術有分裂算法,凝聚算法,劃分聚類和增量聚類。聚類方法適合于探討樣本間的內部關系,從而對樣本結構做出合理的評價,此外,聚類分析還用于對孤立點的檢測。并非由聚類分析算法得到的類對決策都有效,在運用某一個算法之前,一般要先對數據的聚類趨勢進行檢驗。
4.決策樹方法。決策樹學習是一種通過逼近離散值目標函數的方法,通過把實例從根結點排列到某個葉子結點來分類實例,葉子結點即為實例所屬的分類。樹上的每個結點說明了對實例的某個屬性的測試,該結點的每一個后繼分支對應于該屬性的一個可能值,分類實例的方法是從這棵樹的根結點開始,測試這個結點指定的屬性,然后按照給定實例的該屬性值對應的樹枝向下移動。決策樹方法是要應用于數據挖掘的分類方面。
5.神經網絡。神經網絡建立在自學習的數學模型基礎之上,能夠對大量復雜的數據進行分析,并可以完成對人腦或其他計算機來說極為復雜的模式抽取及趨勢分析,神經網絡既可以表現為有指導的學習也可以是無指導聚類,無論哪種,輸入到神經網絡中的值都是數值型的。人工神經元網絡模擬人腦神經元結構,建立三大類多種神經元網絡,具有非線形映射特性、信息的分布存儲、并行處理和全局集體的作用、高度的自學習、自組織和自適應能力的種種優點。
6.遺傳算法。遺傳算法是一種受生物進化啟發的學習方法,通過變異和重組當前己知的最好假設來生成后續的假設。每一步,通過使用目前適應性最高的假設的后代替代群體的某個部分,來更新當前群體的一組假設,來實現各個個體的適應性的提高。遺傳算法由三個基本過程組成:繁殖(選擇)是從一個舊種群(父代)選出生命力強的個體,產生新種群(后代)的過程;交叉〔重組)選擇兩個不同個體〔染色體)的部分(基因)進行交換,形成新個體的過程;變異(突變)是對某些個體的某些基因進行變異的過程。在數據挖掘中,可以被用作評估其他算法的適合度。
7.粗糙集。粗糙集能夠在缺少關于數據先驗知識的情況下,只以考察數據的分類能力為基礎,解決模糊或不確定數據的分析和處理問題。粗糙集用于從數據庫中發現分類規則的基本思想是將數據庫中的屬性分為條件屬性和結論屬性,對數據庫中的元組根據各個屬性不同的屬性值分成相應的子集,然后對條件屬性劃分的子集與結論屬性劃分的子集之間上下近似關系生成判定規則。所有相似對象的集合稱為初等集合,形成知識的基本成分。任何初等集合的并集稱為精確集,否則,一個集合就是粗糙的(不精確的)。每個粗糙集都具有邊界元素,也就是那些既不能確定為集合元素,也不能確定為集合補集元素的元素。粗糙集理論可以應用于數據挖掘中的分類、發現不準確數據或噪聲數據內在的結構聯系。
8.支持向量機。支持向量機(SVM)是在統計學習理論的基礎上發展出來的一種新的機器學習方法。它基于結構風險最小化原則上的,盡量提高學習機的泛化能力,具有良好的推廣性能和較好的分類精確性,能有效的解決過學習問題,現已成為訓練多層感知器、RBF神經網絡和多項式神經元網絡的替代性方法。另外,支持向量機算法是一個凸優化問題,局部最優解一定是全局最優解,這些特點都是包括神經元網絡在內的其他算法所不能及的。支持向量機可以應用于數據挖掘的分類、回歸、對未知事物的探索等方面。
事實上,任何一種挖掘工具往往是根據具體問題來選擇合適挖掘方法,很難說哪種方法好,那種方法劣,而是視具體問題而定。
三、結束語
目前,數據挖掘技術雖然得到了一定程度的應用,并取得了顯著成效,但仍存在著許多尚未解決的問題。隨著人們對數據挖掘技術的深人研究,數據挖掘技術必將在更加廣泛的領域得到應用,并取得更加顯著的效果。
1.1數據挖掘相關技術數據挖掘相關技術介紹如下[6]:(1)決策樹:在表示決策集合或分類時采用樹形結構,在這一過程中發現規律并產生規則,找到數據庫中有著最大信息量的字段,從而可建立起決策樹的人工智能及識別技術。(2)聚類分析:聚類分析指將物理或抽象對象的集合分組為由類似的對象組成的多個類的分析過程。它是一種重要的人類行為。(3)關聯分析:關聯分析又稱關聯挖掘,就是在交易數據、關系數據或其他信息載體中,查找存在于項目集合或對象集合之間的頻繁模式、因果、關聯或相關性結構。也可以說,關聯分析是用來發現有關交易的數據庫中不同商品(項)之間的聯系。(4)神經網絡方法:顧名思義,類似于生物的神經結構,由大量簡單的神經元,通過非常豐富和完善的連接組成自適應的非線性動態系統,具有自適應、自組織、自學習、聯想記憶、分布存儲、大規模并行處理等功能。粗集方法:也就是在數據庫里把行為對象列視為元素,將不同對象在某個(或多個)屬性上取值相同定義為等價關系R。其等價類為滿足R的對象組成的集合[5]。
1.2IBMSPSSModelerIBMSPSSModeler是一個數據挖掘工作臺,用于幫助用戶快速直觀地構建預測模型,而無需進行編程。其精密的數據挖掘技術使用戶能夠對結果進行建模,了解哪些因素會對結果產生影響。它還能可提供數據挖掘相關的數據提取、轉換、分析建模、評估、部署等全過程的功能[3]。通常,SPSSModeler將數據以一條條記錄的形式讀入,然后通過對數據進行一系列操作,最后將其發送至某個地方(可以是模型,或某種格式的數據輸出)[3]。使用SPSSModeler處理數據的三個步驟:(1)將數據讀入SPSSModeler;(2)通過一系列操縱運行數據;(3)將數據發送到目標位置。
2客戶流失預測分析
2.1數據預處理數據預處理[6],將需要的客戶投保數據按照業務預測分析的要求,將數據抽取到中間數據中,同時對數據清洗和轉換,滿足業務預測分析要求。每日凌晨調用存儲過程將核心業務系統數據提取到中間數據庫,壽險業務數據與其他數據一樣,存在不安全和不一致時,數據清洗與轉換可以幫助提升數據質量,進而提升數據挖掘進程的有效性和準確性。數據清洗主要包括:遺漏數據清洗,錯誤數據處理,垃圾數據處理[1]。
2.2數據選取數據預處理后,可以從中得到投保人的投保信息,包括投保人姓名,投保年齡(有效保單為當前年齡,無效保單為退保年齡),保費,投保年期,保單狀態等。數據如圖1所示。
2.3客戶流失預測模型建立壽險業務按渠道來分可分為個人保險、團體保險、銀行保險、網銷保險、經代保險五類。由于團體保險在壽險公司發展比較緩慢,團險業務基本屬于停滯階段。結合壽險公司的營銷特點,選定個人保單作為分析的對象,通過IBMSPSSModeler預測模型工具[3],使用決策樹預測模型對客戶流失進行預測分析。
2.4結果分析通過使用IBMSPSSModeler決策類預測模型分析某壽險公司2013年個人客戶承保情況來看有以下規則:(1)投保年數在1年以內,首期保費在0~2000元或大于9997.130保費的客戶比較容易流失。(2)保單終止保單中,女性客戶較男性客戶容易流失。(3)投保年數在2年以上,湖北及河北分支機構客戶流失率比較容易流失。(4)分紅壽險相對傳統壽險,健康壽險的客戶比較容易流失[1]。
3總結
關聯規則最初是針對購物籃分析問題提出的,目的是發現事務數據庫(TransactionDatabase)中不同商品之間的聯系。關聯規則是形如A=》B的蘊涵式,其中A稱為該關聯規則的前項,B稱為該關聯規則的后項。事務,是一個明確定義的商業行為,如顧客在商店購物就是一次典型的事務。由用戶設定的支持度和置信度的門檻值,當sup-port(A=>B)、confidence(A=>B)分別大于等于各自的門檻值時,認為A=>B是有趣的,此兩值稱為最小支持度(minsupport)和最小置信度(minconfidence)。同時滿足minsupport和minconfidence的這種關聯規則就叫做強的關聯規則。設任務相關的數據D是數據庫事物的集合,當項集的支持計數≥D中事務總數|D|與minsup-port的乘積時,就叫做頻繁項集,當項集的支持計數可能≥D中事務總數|D|與minsupport的乘積時,就叫做侯選項集。所有侯選項集K-項集的集合記作Ck,所有頻繁項集K-項集的集合常記作Lk,很明顯Lk奐Ck。如果僅依賴最小支持度和最小置信度這兩個參數的限制,所挖掘出的強關聯規則不一定是用戶感興趣的,因此,用戶可以根據實際應用的需求,再結合自身的領域知識,通過選擇與實際分析任務有關的數據集,設置不同的參數,限定前項和后項的個數,選擇前項和后項包含的屬性等操作,對關聯規則的挖掘進行約束。
2模糊集理論的引入
在討論實際問題的時候,需要判定模糊概念涵義,如判斷某個數據在模糊集的定義和歸屬,這時就需要普通集合與模糊集合可依某種法則相互轉換。模糊理論中的截集是模糊集合和普通集合之間相互轉換的一座橋梁。
3基于事務間數值型關聯規則的數據挖掘算法
假設有一就業數據庫,先通過數據整理,將原始數據記錄值區間[0,10]偏置10個單位。由此就得到了經過偏置后的數據庫記錄。再依滑動窗口方法,設maxspan=1(該值可以依實際情況的需要來定),就可將偏置后的數據庫數據整理轉化為擴展事務數據庫。再把擴展事務數據庫記錄通過隸屬度函數轉化為對應的隸屬度。
4結語
數據挖掘技術是延伸和擴展了傳統分析方法,可以發現傳統分析方法不能發現的內容和規律,并且它將人們從單調、枯燥的閱讀專利文獻的工作中解放出來,使用計算機代替了人類勞動,這樣不僅提高了效率,而且提升了準確度。因此,數據挖掘作為一個專利分析的強有力工具被引入到專利分析中來,并且得到快速的發展應用。專利數據挖掘流程應考慮的問題:一是用數據挖掘解決什么樣的問題;二是為進行數據挖掘所做的數據準備;三是數據挖掘的各種分析算法。故專利數據挖掘的一般過程通常按照以下步驟來完成:領會數據挖掘的目的,獲取分析所用的數據集合,探索、清理和預處理數據,選擇要使用的數據挖掘技術,使用算法解決問題,解釋算法的結果。而其一般流程可簡化為三個階段:數據準備數據挖掘結果解釋和評價。本文采用簡化的流程進行實證分析。
二、石家莊地區制藥企業專利數據挖掘
本文對石家莊地區制藥企業的專利數據進行挖掘分析,挖掘對象是華北制藥集團公司、石家莊制藥集團有限公司、石家莊神威藥業股份有限公司、石家莊四藥股份、河北以嶺藥業股份有限公司、石家莊市華曙制藥集團、河北醫科大學制藥廠、河北圣雪大成制藥有限責任公司等地址在石家莊且具有一定代表性的藥企,希望通過這些藥企數據能夠找到石家莊地區制藥領域的核心組成,并能為藥企更好地發展提供有力的信息支持。IPC號是目前權威的專利技術主題的標識編碼之一,基本包含了各行各業的專利信息,是一個龐大的專利信息體系。目前國內外很多分析方法及技術大部分是基于專利的IPC分類號來分析專利技術主題的,此分析方法有一定的參考價值和科學性,而且對于具有大量專利信息的分析具有很好的總結概括效果。本文以專利全部IPC號為分析對象,并且構建IPC號之間的關聯規則,在最大程度上揭示隱含的專利技術關聯性,從而為石家莊地區制藥企業專利技術的發展提供參考。
1.數據準備。數據來源的準確與否是數據分析與挖掘的基礎,是數據分析與挖掘的根本。本文所使用的石家莊地區制藥領域專利數據由萬方數據公司提供,以制藥企業地址為石家莊為檢索條件,搜索出了包括從1985—2014年間石家莊地區制藥領域專利644條,分別分布在A、B、C、D、E、F、G、H八個大部。對專利數據庫中的644條專利進行篩選,根據“分類號”字段限制,它涉及專利信息的分類,有些IPC所涉及的范圍與石家莊地區制藥領域沒有聯系或聯系很小,不宜保留。根據“申請人(專利權人)”字段的限制,剔除與石家莊地區制藥不相關或制藥企業地址不在石家莊地區的專利。最后篩選出590條最符合該領域特點的專利。由于IPC號在幾乎所有現存數據庫中均是以一個字段存儲一個專利的所有IPC分類號的,形如:A61K38/26、A61K9/08、A61K47/12、A61P3/10,且每個專利一般都有好幾個分類號,而每個企業又研究大量的專利,所以在進行專利分析之前,需要對專利IPC號進行數據整理。由于過于細致的IPC分類號并不利于專利主題的分析與揭示,所以本文中采用專利小類分析,就是取IPC號的前4位。并將申請人與其對應的多條IPC號進行拆分,拆分后的數據項有773條,即顯示每個申請人對應的一條IPC分類號。
2.數據挖掘。本文數據挖掘過程將采用Excel和SQLsever2005軟件,首先對所得到的數據導入SQLserver2005進行挖掘,利用SQLserver2005可以直接進行IPC號的關聯規則挖掘,然后對專利信息進行分析。
3.數據挖掘結果與分析?;陉P聯規則制作依賴關系網絡圖,可以更加直觀地看到各個IPC號之間的關聯和依賴狀態。
(1)以A61K、C12N、C12P、C07D、C07C為中心的核心專利技術群。這些專利的IPC分類號是關鍵部分藥物組成的各種化合物即藥物主要成分的重要聚集組。A61K(醫用、牙科用等的配置品)是項集次數最多的,即支持度較高的,C12P(發酵或使用酶的方法合成目標化合物或組合物或從外消旋混合物中分離旋光異構體)、C12N(微生物或酶;其組合物)、C07D(雜環環合物,例如鄰氯芐星青霉素的合成)、C07C(無環和碳環化合物)通過專利相關知識我們已經知道這些都是藥物的合成成分,即土霉素、鏈霉素、青霉素等多種抗生素和維生素的主要成分組成,是制藥領域的核心。這也是和石家莊地區制藥企業的核心領域相符合的。另外這些專利主題的相互關聯、依賴說明了石家莊地區制藥企業在該領域具有很好的布局網絡,在研發數量上也占有一定優勢,所以說是石家莊地區制藥企業的主要研究領域。
(2)以B65G、C12M為中心的輔助設備專利技術群。藥品的生產離不開設備的支持,所以設備方面的專利也能體現制藥企業的技術水平。在圖1中也能體現出來,專利間有著很強的依賴性和關聯性,在核心專利周邊有B65G(運輸或貯存裝置,例如裝載或傾斜用輸送機、車間輸送機系統、氣動管道輸送機)、C12M(酶學或微生物學裝置),這些是制藥的輔助技術手段,與中心專利是相互聯系的,也是制藥過程中必不可少的,在這些方面的提高有利于制藥核心領域的發展。先進藥品的研制離不開先進制藥設備支持,所以設備水平的提高也是關鍵的。如圖3所示,石家莊地區制藥企業在這一方面的技術依賴網絡也已經形成,說明在此技術領域也已經擁有較強實力。但與中心主要專利相比,輔助設備專利技術還是需要不斷提高的。
三、總結
系統采用C/S+B/S結構,主要由前端數據采集設備(位移及載荷傳感器)、站點客戶端、數據庫及Web服務器等組成。各部分采取分布式協同處理運行方式,站點客戶端利用前端采集的數據獨立分析計算,分析完成后上傳至數據庫服務器,并通過網頁服務器對外。
2系統數據
2.1系統數據結構系統采用MicrosoftSQLServer,創建了WPGUI與WPCHQ數據庫來管理3萬余口油井數據采集、處理及存儲等,建設數據表65張(見主要數據表的關系圖2),主要包括生產井的完井數據、靜態數據、動態數據、采集數據、原油物性數據、機桿管泵等技術數據,同時系統保存了油井近兩年功圖電參數據(每天每口井到少100張),以及根據這些數據分析計算出來的結果和匯總生成的數據。
3數據挖掘應用
數據挖掘是從大量數據集中發現可行信息的過程,是統計分析技術、數據庫技術及人工智能技術的綜合。面對油井工況實時分析及功圖計產系統大量的油井生產完備數據,長慶油田充分利用數據挖掘技術,對數據進一步清理、集成、轉換、挖掘應用,深化功圖系統數據分析,先后開展了動液面計算,系統效率在線實時監測、區塊動態分析研究等,并應用于油田現場,取得了較好的效果,既節約了生產成本,又方便了現場管理應用,進一步提升系統在長慶油田數字化前端的核心地位。
3.1區塊動態分析
油井生產中,每天都會獲得大量的實時生產數據,目前系統主要對單井完成工況分析及產液量計算,如何通過分析和處理這些數據,及時全面了解油田區塊產油量、壓力、含水等變化規律是數據挖掘應用又一問題。長慶油田開展了基于油井工況診斷及功圖計產系統的區塊動態分析,從空間和歷史角度,對油井分類、分級、分層次進行統計分析,挖掘生產數據里有用的信息,提煉區塊共性問題,并按照設計的模板(區塊指標統計圖表、供液能力分析、產量分析、故障井分析等)每月30日自動生成全面及時的區塊油井生產動態分析,從而指導區塊生產管理,實現油田的精細管理,為油田開發決策提供依據。
4結束語
隨著長慶油田數字化建設的不斷深入,各種生產、研究、管理等數據庫不斷增加,如何深化數據應用,準確迅速從數據庫是提取有用信息,已成為是數字油田生產管理的迫切需求。在基于油井工況實時分析及功圖計產系統數據挖掘應用中我們積累了不少經驗,拓展了系統功能,提升系統在長慶油田數字化前端的核心地位。在今后應用中,油田數據挖掘應用注意幾個問題:
(1)數據是數字油田的血液,為了保證數據挖掘效率,在數據庫建設中要規范數據存儲格式,保證數據源及數據類型的統一,同時加強數據審核,注重數據入庫的質量;
(2)數據挖掘中盡可能使用可視化工具,一幅圖勝過千句話,數據挖掘可視化主要包括數據可視化、挖掘結果可視化、挖掘過程可視化等;
1.1GPUGPU之所以在某些應用中較CPU能夠獲得更高的性能,主要是因為GPU和CPU在硬件結構設計上存在很大差異。如圖1所示[10],GPU將大量的晶體管用作ALU計算單元,從而適應密集且可并行的圖像渲染計算處理需要。相對GPU而言,CPU卻是將更多的晶體管用作復雜的控制單元和緩存等非計算功能,并以此來提高少量執行單元的執行效率。此外,存儲帶寬是另一個重要問題。存儲器到處理器的帶寬已經成為許多應用程序的瓶頸。目前GPU的芯片帶寬是CPU芯片帶寬的6倍左右。
1.2CPU/GPU協同并行計算在諸多適用于高性能計算的體系結構中,采用通用多核CPU與定制加速協處理器相結合的異構體系結構成為構造千萬億次計算機系統的一種可行途徑。而在眾多異構混合平臺中,基于CPU/GPU異構協同的計算平臺具有很大的發展潛力。在協同并行計算時,CPU和GPU應各取所長,即CPU承擔程序控制,而密集計算交由GPU完成。另外,除管理和調度GPU計算任務外,CPU也應當承擔一部分科學計算任務[12]。新型異構混合體系結構對大規模并行算法研究提出了新的挑戰,迫切需要深入研究與該體系結構相適應的并行算法。事實上,目前基于GPU加速的數據挖掘算法實現都有CPU參與協同計算,只是討論的重點多集中在為適應GPU而進行的并行化設計上。實踐中,需要找出密集計算部分并將其遷移到GPU中執行,剩余部分仍然由CPU來完成。
1.3CUDA為了加速GPU通用計算的發展,NVIDIA公司在2007年推出統一計算設備架構(ComputeUnifiedDeviceArchitecture,CUDA)[10,13]。CUDA編程模型將CPU作為主機,GPU作為協處理器,兩者協同工作,各司其職。CPU負責進行邏輯性強的事務處理和串行計算,GPU則專注于執行高度線程化的并行處理任務。CUDA采用單指令多線程(SIMT)執行模式,而內核函數(kernel)執行GPU上的并行計算任務,是整個程序中一個可以被并行執行的步驟。CUDA計算流程通常包含CPU到GPU數據傳遞、內核函數執行、GPU到CPU數據傳遞三個步驟。CUDA不需要借助于圖形學API,并采用了比較容易掌握的類C/C++語言進行開發,為開發人員有效利用GPU的強大性能提供了條件。CUDA被廣泛應用于石油勘探、天文計算、流體力學模擬、分子動力學仿真、生物計算和圖像處理等領域,在很多應用中獲得了幾倍、幾十倍,乃至上百倍的加速比[13]。
1.4并行編程語言和模型過去幾十年里,人們相繼提出了很多并行編程語言和模型,其中使用最廣泛的是為可擴展的集群計算設計的消息傳遞接口(MessagePassingInterface,MPI)和為共享存儲器的多處理器系統設計的OpenMP[14]。OpenMP最初是為CPU執行而設計的。OpenACC[15]是計算機廠商為異構計算系統提出的一種新編程模型,其主要優勢是為抽象掉許多并行編程細節提供了編譯自動化和運行時系統支持。這使得應用程序在不同廠商的計算機和同一廠商不同時代的產品中保持兼容性。然而,學習OpenACC需要理解所有相關的并行編程細節。在MPI編程模型中,集群中的計算節點之間相互不共享存儲器;節點之間的數據共享與交互都通過顯式傳遞消息的方式實現。MPI成功應用于高性能科學計算(HPC)領域?,F在很多HPC集群采用的是異構的CPU/GPU節點。在集群層次上,開發人員使用MPI進行編程,但在節點層次上,CUDA是非常高效的編程接口。由于計算節點之間缺乏共享存儲器機制,要把應用程序移植到MPI中需要做大量針對性分析和分解工作。包括蘋果公司在內的幾大公司在2009年共同開發了一套標準編程接口,稱之為OpenCL[16]。與CUDA類似,OpenCL編程模型定義了語言擴展和運行時API,使程序員可以在大規模并行處理中進行并行管理和數據傳遞。與CUDA相比,OpenCL更多地依賴API,而不是語言的擴展,這允許廠商快速調整現有編譯器和工具來處理OpenCL程序。OpenCL和CUDA在關鍵概念和特性上有諸多相似之處,因此CUDA程序員可以很快掌握OpenCL。
1.5MATLAB因提供豐富的庫函數庫以及諸多其他研究者貢獻和共享的函數庫,MATLAB是研究人員實現算法的常用平臺。通過封裝的數據容器(GPUArrays)和函數,MATLAB允許沒有底層CUDA編程能力的研究人員可以較容易獲得GPU計算能力,因此MATLAB較OpenCL更容易上手。截止準備本文時,2014版本的MATLAB提供了226個內置的GPU版本的庫函數。對于有CUDA編程經驗的人員,MATLAB允許直接集成CUDA內核進MATLAB應用。本文第四節的實驗亦基于MATLAB實現。
1.6JACKET引擎JACKET[17]是一個由AccelerEyes公司開發專門用于以MATLAB為基礎的基于GPU的計算引擎,其最新版本已經包含了高層的接口,完全屏蔽了底層硬件的復雜性,并支持所有支持CUDA的GPU計算,降低了進行CUDA開發的門檻。JACKET是MATLAB代碼在GPU上運行的插件。JACKET允許標準的MATLAB代碼能夠在任何支持CUDA的GPU上運行,這使得廣大的MATLAB及C/C++用戶可以直接使用GPU強大的計算能力進行相關應用領域的快速原型開發。JACKET包含了一套運行于MATLAB環境中優化并行計算的基礎函數庫。并且支持MATLAB數據類型,可將任何存儲于MATLABCPU內存中的變量數據轉換為GPU上的數據類型,對以往的MATLAB程序來說,只需更改數據類型,就能遷移到GPU上運行。本文的第四節的實驗亦基于JACKET在MATLAB上實現。
2相關工作綜述
2.1基于CPU的數據挖掘算法實現數據挖掘算法的研究一直很活躍,許多成熟和經典的算法已經實現在諸多研究或商用軟件包/平臺,例如開源的Weka[18]和KNIME,以及商用的IBM公司的PASWModeler(即之前SPSS公司的Clementine®)。這些軟件默認都是單機版本,可運行在普通PC或高性能服務器上,基于CPU的計算能力。為了適應目前大規模的計算,出現了基于Google公司提出的MapReduce[19]計算框架實現的開源數據挖掘平臺Mahout[20]。相關的研究起源于斯坦福大學AndrewNg研究組2006年的經典論著[21]。由于現有的算法需要先找到可“遷移”到MapReduce的方式,因此目前Mahout平臺上僅有幾個能支持分布式部署的數據挖掘算法,包括用于分類的樸素貝葉斯、隨機森林,用于聚類的k-Means,基于項目的協同過濾等。目前Mahout仍然是基于CPU的計算能力。
2.2聚類算法聚類是數據挖掘中用來發現數據分布和隱含模式的一種無監督學習,每個訓練元組的類標號是未知的,并且要學習的個數或集合也可能事先不知道。對于給定的數據集,聚類算法按照一定的度量,將數據對象分組為多個簇,使得在同一個簇中的對象之間具有較高的相似度,而不同簇中的對象差別很大[22-23]。k-Means算法是經典的基于距離/劃分的聚類分析算法,也是應用得最廣泛的算法之一,采用距離作為相似性的評價指標,即認為兩個對象距離越近,其相似度就越大。k-Means算法的流程如下[24]:輸入:簇的數目k和包含n個對象數據集D。輸出:k個簇的集合。方法:1)從D中任意選擇k個對象作為初始簇中心。計算每個數據對象到各簇中心的歐氏距離,將每個數據對象分配到最相似的簇中。2)重新計算每個簇中對象的均值。3)循環執行步驟2-3兩個步驟,直到各個簇內對象不再變化。上述算法步驟2屬于計算密度最大的部分,且具備并行化的條件。計算各個數據對象到各簇中心的歐氏距離和將數據對象分配到最近的簇的時候,數據對象之間都是相互獨立的,不需要進行交換,且沒有先后順序,后計算的對象不需要等待前一次計算的結果,僅在完成全部分配過程之后,才需要進行一次數據匯總。所以文獻[25]的作者們使用GPU并行優化了一維數據的k-Means算法的步驟2,并使用帶緩存機制的常數存儲器保存中心點數據,能獲得更好的讀取效率。文獻中還展示了實驗結果,在8600GT上取得了14倍左右的加速效果。DBSCAN屬于基于密度的聚類算法中最常被引用的,G-DBSCAN是它的一個GPU加速版本[26]。文獻[26]的實驗顯示較DBSCAN可以實現高達112倍的加速。BIRCH是經典的基于層次的聚類算法,文獻[27]中基于CUDA實現的GPU加速版本在實驗中獲得了高達154倍的加速。
2.3分類算法分類是數據挖掘中應用領域極其廣泛的重要技術之一,至今已經提出很多算法。分類算法[28]是一種監督學習,通過對已知類別訓練集的分析,從中發現分類規則,以此預測新數據的類別。分類算法是將一個未知樣本分到幾個已存在類的過程,主要包含兩個步驟:首先,根據類標號已知的訓練數據集,訓練并構建一個模型,用于描述預定的數據類集或概念集;其次,使用所獲得的模型對新的數據進行分類。近年來,許多研究已經轉向實現基于GPU加速分類算法,包括k-NN(k近鄰)分類算法[29],支持向量機分類算法[30],貝葉斯分類算法[31-32]等。kNN算法[33]是數據挖掘中應用最廣泛的一種分類算法,簡單易實現。它是一種典型的基于實例的學習法,將待判定的檢驗元組與所有的訓練元組進行比較,挑選與其最相似的k個訓練數據,基于相應的標簽和一定的選舉規則來決定其標簽。在ShenshenLiang等人的文章[34]指出,由于kNN算法是一種惰性學習法,對于每個待分類的樣本,它都需要計算其與訓練樣本庫中所有樣本的距離,然后通過排序,才能得到與待分類樣本最相鄰的k個鄰居。那么當遇到大規模數據并且是高維樣本時,kNN算法的時間復雜度和空間復雜度將會很高,造成執行效率低下,無法勝任大數據分析任務。所以加速距離的計算是提高kNN算法的核心問題。因為每個待分類的樣本都可以獨立地進行kNN分類,前后之間沒有計算順序上的相關性,因此可以采用GPU并行運算方法解決kNN算法串行復雜度高的問題。將計算測試集和訓練集中點與點之間的距離和排序一步采用GPU并行化完成,其余如判斷類標號一步難以在GPU上高效實現,由CPU完成。文獻[34]通過GPU并行化實現kNN算法,讓kNN算法時間復雜度大幅度減少,從而說明GPU對kNN算法的加速效果是非常明顯的。
2.4關聯分析算法關聯規則挖掘是數據挖掘中較成熟和重要的研究方法,旨在挖掘事務數據庫頻繁出現的項集。因此,挖掘關聯規則的問題可以歸結為挖掘頻繁項集[35]。關聯分析算法首先找出所有的頻繁項集,然后根據最小支持度和最小置信度從頻繁項集中產生強關聯規則。Apriori算法[36]是最有影響力的挖掘布爾關聯規則頻繁項目集的經典算法。Apriori算法使用逐層搜索的迭代方法產生頻繁項目集,即利用k頻繁項集來產生(k+1)項集,是一種基于生成候選項集的關聯規則挖掘方法。在劉瑩等人的文章[37]中指出,產生候選項和計算支持度,占據Apriori的大部分計算量。產生候選項的任務是連接兩個頻繁項集,而這個任務在不同線程之間是獨立的,所以這個過程適合在GPU上被并行化。通過掃描交易數據庫,計算支持度程序記錄一個候選項集出現的次數。由于每個候選項集的計數與其他項集的計數相對獨立,同樣適合于多線程并行。所以文獻[37]的作者們在實現Apriori時使用GPU并行化了產生候選項和計算支持度這兩個過程,取得了顯著的加速效果。文獻[38]是目前發現的對于在GPU上實現頻繁項集挖掘最全面細致的研究。他們使用的是早期的CUDA平臺,采用了bitmap和trie兩種數據結構來實現GPU的挖掘算法,并且根據不同數據集和支持度進行了算法性能的對比,均相對于CPU版本的算法獲得的一定的加速比。
2.5時序分析由于越來越多的數據都與時間有著密切的關系,時序數據作為數據挖掘研究的重要分支之一,越來越受到人們的重視。其研究的目的主要包括以下兩個方面:一是學習待觀察過程過去的行為特征;二是預測未來該過程的可能狀態或表現。時序數據挖掘主要包含以下幾個主要任務:數據預處理,時序數據表示,分割,相似度度量,分類,聚類等。這些任務中很多都涉及到相當大的計算量。由于問題規模的不斷擴大,并且對于實時性能的要求,時序數據挖掘的任務就必須要求充分地提高計算速度或者通過優化減少計算量。時序數據的表示有時候會采取特征來表示,這就涉及到了特征提取問題,當特征數量龐大的時候就需要進行維數約簡,主要的方法有奇異值分解法,離散小波變換。這些計算都涉及到很大的時間復雜度,為了減少計算的時間消耗,SheetalLahabar等人使用GPU加速SVD的計算,獲得了60多倍的加速效果[39]。動態時間彎曲(DynamicTimeWarping,DTW)起初被應用于文本數據匹配和視覺模式識別的研究領域,是一種相似性度量算法。研究表明這種基于非線性彎曲技術的算法可以獲得很高的識別、匹配精度。Berndt和Clifford提出了將DTW的概念引入小型時間序列分析領域,在初步的實驗中取得了較好的結果[40]。隨著問題規模的擴大,對于DTW的計算成為了時序數據挖掘的首先要處理的問題。在DTW中,搜索需要找出與訓練數據最近距離的樣本,這就需要搜索與每個訓練樣本的距離,這就可以很好的利用GPU進行并行化處理。DorukSart等人在對DTW加速的處理中,獲得了兩個數量級的加速效果[41]。而對于分類和聚類任務的加速,上面已經提到,這里不再累贅。
2.6深度學習深度學習雖然隸屬機器學習,但鑒于機器學習和數據挖掘領域的緊密聯系,深度學習必定將在數據挖掘領域獲得越來越多的應用。從2006年Hinton和他的學生Salakhutdinov在《科學》上發表的文章[42]開始,深度學習在學術界持續升溫。深度學習的實質是通過構建具有很多隱層的機器學習模型和海量的訓練數據,來學習更有用的特征,從而最終提升分類預測的準確性[43]。如何在工程上利用大規模的并行計算平臺來實現海量數據訓練,是各個機構從事深度學習技術研發首先要解決的問題。傳統的大數據平臺如Hadoop,由于數據處理延遲太高而不適合需要頻繁迭代的深度學習。神經網絡一般基于大量相似的神經元,故本質上可以高度并行化訓練;通過映射到GPU,可以實現比單純依賴CPU顯著地提升。谷歌搭建的DistBelief是一個采用普通服務器的深度學習并行計算平臺,采用異步算法,由很多計算單元獨立更新同一個參數服務器的模型參數,實現了隨機梯度下降算法的并行化,加快了模型訓練速度。百度的多GPU并行計算平臺克服了傳統SGD訓練不能并行的技術難題,神經網絡的訓練已經可以在海量語料上并行展開。NVIDIA在2014年9月推出了深度學習GPU加速庫cuDNN,可以方便地嵌入高層級機器學習框架中使用,例如Caffe[45]。cuDNN支持NVIDIA的全系列GPU,包括低端的TegraK1和高端的TeslaK40,并承諾可向上支持未來的GPU。
2.7小結并行化能帶來多少倍的加速取決于算法中可并行化的部分。例如,如果可并行部分的時間占整個應用程序執行時間的20%,那么即使將并行部分加速100倍,總執行時間也只能減少19.8%,整個應用程序的加速只有1.247倍;即使無限加速也只能減少約20%的執行時間,總加速不會超過1.25倍。對于一個數據挖掘(學習和預測)算法進行GPU加速實現,首先要思考是否存在可并行執行的部分,之后再結合GPU的架構特點進行針對性實現優化。然而,由于數據挖掘算法普遍是數據密集型計算,而GPU片內存儲容量有限,如何降低與內存交換數據集是一個要解決的關鍵問題。通過以上相關工作的分析,可以發現數據挖掘算法在GPU上的加速具有數據獨立,可并行化共同特征。本文提出數據挖掘算法在GPU上加速實現的一種解決思路:在大數據下,分析算法的性能瓶頸,從而確定算法中耗時大,時間復雜度高的部分,將此部分在GPU上執行,不耗時部分在CPU上串行執行,以達到加速效果。為了更充分利用GPU的并行計算的體系結構,可深入分析耗時大的部分,將具有數據獨立,可并行化的部分在GPU上并行執行,達到更進一步的加速效果。
3實踐和分析:協同過濾推薦
當前主要的協同過濾推薦算法有兩類:基于用戶(r-based)和基于項目(item-based)的協同過濾推薦算法。基于項目的協同過濾推薦算法[46-50]認為,項目間的評分具有相似性,可以通過用戶對目標項目的若干相似項目的評分來估計該項目的分值?;谟脩舻膮f同過濾推薦算法認為,如果用戶對一些項目的評分比較相似,那么他們對其他項目的評分也比較相似。本文根據以上總結的算法特征圍繞兩種經典協同過濾算法的實現,通過大規模數據的實驗來驗證GPU相對于傳統CPU的優勢。
3.1算法實現
3.1.1基于CPU實現協同過濾推薦的兩類經典算法本文基于MATLAB實現CPU版本的基于用戶和基于項目的兩種經典協同過濾推薦算法。實現的步驟:1)數據表示:收集用戶的評分數據,并進行數據清理、轉換,最終形成一個mn的用戶-項目評分矩陣R,m和n分別代表矩陣中的用戶數和項目數,矩陣中的元素代表用戶對項目的評分值。2)最近鄰居搜索:主要完成對目標用戶/項目的最近鄰居的查找。通過計算目標用戶/項目與其他用戶/項目之間的相似度,算出與目標用戶/項目最相似的最近鄰居集。該過程分兩步完成:首先采用協同過濾推薦算法中運用較多的度量方法“Pearson相關系數”計算用戶/項目之間的相似度得到相應的相似度矩陣,其次是采用最近鄰方法找到目標用戶/項目的最近的K個鄰居,這些鄰居是由與目標相似度最高的一些用戶/項目組成的。3)產生推薦:根據之前計算好的用戶/項目之間的相似度,并使用相應的預測評分函數對用戶未打分的項目進行預測,得到預測評分矩陣,然后選擇預測評分最高的Top-n項推薦給目標用戶。4)性能評估:本研究擬采用平均絕對誤差MAE作為評價推薦系統預測質量的評價標準。MAE可以直觀地對預測質量進行度量,是最常用的一種方法。MAE通過計算預測的用戶評分與實際評分之間的偏差度量預測的準確性;MAE越小,預測質量越高。
3.1.2基于GPU實現協同過濾推薦的兩類經典算法在大數據下,協同過濾算法中主要的時間消耗在于相似度計算模塊,占了整個算法的大部分時間,且每個用戶/項目之間的相似度可以被獨立計算,不依靠其他用戶/項目,具備并行化的條件,所以在以下的實驗中,將相似度計算模塊在GPU上執行,其他部分在CPU上執行,進而提高整個算法的執行效率。使用MATLAB編程技術和JACKET編程技術在GPU上分別實現基于用戶和基于項目的兩種經典協同過濾推薦算法。實現步驟如下:1)數據表示:收集用戶的評分數據,并進行數據清理、轉換,最終形成用戶-項目評分矩陣。2)將收集的數據從CPU傳輸至GPU。3)對傳輸到GPU上的數據執行GPU操作,調用相關函數庫,采用公式(1)和(2)分別計算并獲取用戶/項目間的相似度矩陣。4)將GPU計算結果返回CPU中以便后續操作。5)采用公式(3)和(4)在CPU上分別獲取兩種經典算法的評分預測矩陣。6)選擇預測評分最高的Top-n項推薦給目標用戶。7)采用公式(5)求兩種經典算法的平均絕對誤差MAE。
3.2實驗結果與分析
3.2.1實驗環境本實驗所用的CPU是IntelXeonE52687W,核心數量是八核,主頻率是3.1GHz,內存大小是32GB;所使用的GPU是NVIDIAQuadroK4000,顯存容量是3GB,顯存帶寬是134GB/s核心頻率是811MHz,流處理器數是768個。使用Windows764位操作系統,編程環境使用最新的CUDA。
3.2.2實驗數據本實驗使用目前比較常用的MovieLens[56]數據集作為測試數據,該數據集從MovieLens網站采集而來,由美國Minnesota大學的GroupLens研究小組提供,數據集1包含943個用戶對1682部電影約10萬的評分數據,數據集2包含6040個用戶對3952部電影約100萬的評分數據,其中每個用戶至少對20部電影進行了評分。評分的范圍是1~5,1表示“很差”,5表示“很好”。實驗需要將每個數據集劃分為一個訓練集和一個測試集,每次隨機選出其中80%的評分數據用作訓練集,另20%用作測試集。
3.2.3實驗結果與分析本文采用加速比來比較算法的CPU實現和GPU實現的運行效率。計算加速比的方法如式(6)所示:在公式中,TimeCPU表示算法在CPU上的平均運行時間,TimeGPU表示算法在GPU上的平均運行時間。所有實驗中均取最近鄰居數為20,且各實驗結果均為5次獨立測試的平均值。圖2是關于兩個算法核心步驟的加速效果,而圖3則展示了算法整體加速效果??梢钥闯?,(1)整體加速效果取決于核心步驟的加速效果,(2)GPU版本的算法在性能上較CPU版本有較顯著地優勢,且面對大數據集的加速效果更為明顯。例如在基于100萬條數據集時,Item-based的整體算法的加速比達到了14倍左右,而面對10萬條數據集時,加速比不到8倍。這可以解釋為GPU的多核優勢在面對大數據集時被更為充分地得到釋放;(3)算法對r-based和Item-based兩種算法的加速比相近。圖4是關于算法預測效果的評估,可以看出基于GPU加速的兩類經典協同過濾算法與基于CPU的兩類經典協同過濾算法在預測效果上相近。如果結合圖2和圖3,可獲得結論-能夠基于GPU獲得得可觀的計算加速而不犧牲應用效果。
3.3小結
本文通過使用JACKET加快開發過程。目前國內還缺少對JACKET的了解和應用,JACKET的出現為科學領域進行大規模計算仿真提供了新的研究方法,并使得研究人員可以在熟悉的MATLAB平臺上實現相關算法。
4結束語