姜文秀
摘要:隨著海量數(shù)據(jù)處理的關注程度逐漸提升,分布式數(shù)據(jù)挖掘算法也成為一個熱點研究領域。在實際挖掘特定興趣時,會用到數(shù)據(jù)挖掘中的關聯(lián)規(guī)則,數(shù)據(jù)的海量性必然要求采用分布式挖掘方法,以此減輕計算壓力。分布式環(huán)境中的數(shù)據(jù)挖掘可以將數(shù)據(jù)分發(fā)到不同節(jié)點進行處理,最后將局部結果匯總,從而完成整個計算過程。
關鍵詞:分布式;數(shù)據(jù)挖掘;關聯(lián)規(guī)則;分類;聚類
中圖分類號:G642? ? ? ? 文獻標識碼:A? ? ? ? 文章編號:1009-3044(2019)02-0232-02
隨著知識發(fā)現(xiàn)應用于各個領域,數(shù)據(jù)挖掘技術扮演的角色也越來越重要;由于通常會涉及海量的數(shù)據(jù),因此實際應用數(shù)據(jù)挖掘過程中通常會采取分布式技術,以緩解海量數(shù)據(jù)帶來的計算壓力。
傳統(tǒng)的數(shù)據(jù)挖掘技術存在一個中央服務器,將其他各個節(jié)點采集到的數(shù)據(jù)通過數(shù)據(jù)倉庫匯總到中心服務器后,再進行數(shù)據(jù)挖掘或其他運算;但是,這種中心化的節(jié)點在面臨龐大的數(shù)據(jù)量時可能會存在性能瓶頸;除此之外,其他節(jié)點同時將大量的數(shù)據(jù)匯總到中心服務器時也會需要大量的帶寬,而且匯總過程中也還會面臨一定的數(shù)據(jù)安全問題。
分布式數(shù)據(jù)挖掘算法可以克服傳統(tǒng)的數(shù)據(jù)挖掘算法中存在的中心化單點問題,另外,由于分布式數(shù)據(jù)挖掘環(huán)境是建立在多個服務器上的,因此這種并行計算能力提高了整體的數(shù)據(jù)挖掘效率;相比傳統(tǒng)的數(shù)據(jù)挖掘算法而言,分布式數(shù)據(jù)挖掘算法在處理的數(shù)據(jù)量以及效率方面都有很大的優(yōu)勢。
1 分布式技術
作為基于分布式計算環(huán)境的軟件,Hadoop能夠在很大程度上解決數(shù)據(jù)不斷增長的問題:有一個分布式文件系統(tǒng)HDFS以及分布式編程模型MapReduce。新一代架構的Hadoop2.0支持集群橫向擴展,甚至可以支持成千上萬臺服務器機器,大大提高了計算能力;HDFS文件系統(tǒng)不僅可以處理常見的文本數(shù)據(jù),還能夠處理結構化及非結構化數(shù)據(jù)。最重要的是,Hadoop具有強大的容錯機制,其冗余備份機制能夠有效處理集群節(jié)點的異常突發(fā)情況。
Hadoop中包含一個分布式存儲HDFS,提供了相應的api,以完成諸如創(chuàng)建文件、讀寫文件、刪除/移動文件等操作。Hadoop集群中有一個主控服務器Namenode,負責維護整個HDFS文件系統(tǒng)的目錄結構,并管理數(shù)據(jù)block和其他數(shù)據(jù)節(jié)點之間的關系,還會保存一些元數(shù)據(jù)信息,比如文件名、文件副本數(shù)目和位置等[1]。Hadoop集群中的其他節(jié)點是數(shù)據(jù)節(jié)點Datanode,主要功能是存放數(shù)據(jù)副本。為了實現(xiàn)冗余備份的目的,每個文件都會有多個數(shù)據(jù)副本。
傳統(tǒng)的數(shù)據(jù)挖掘計算模型中,計算操作一般都是在一臺中心服務器上進行,但是單機環(huán)境勢必會存在計算瓶頸。Hadoop中的MapReduce計算框架可以克服傳統(tǒng)的中心式計算的缺陷,在將數(shù)據(jù)量很大的計算任務分塊存儲后,把計算問題分解成多個子任務,以此轉換為支持并行運行的Map任務和Reduce任務。
可以使用一個計算單詞數(shù)目的經(jīng)典程序來分析MapReduce計算模型的分布式計算思想。WordCount程序的設計思路是:把文本文件的內容以單詞為依據(jù)進行劃分,并統(tǒng)計相同單詞出現(xiàn)的次數(shù)。具體的MapReduce分布式計算過程是[2]:(1)Mapper過程。此階段的主要任務是從HDFS文件系統(tǒng)中讀取數(shù)據(jù),并把這些數(shù)據(jù)轉換為數(shù)據(jù)挖掘算法可以處理的結構;這一階段會把文本信息以單詞為粒度進行拆分,得到形如key-value形式的結果;以拆分的單詞Hello出現(xiàn)1次為例,保存結果就是
2 分布式數(shù)據(jù)挖掘方法
分布式數(shù)據(jù)挖掘方法涉及很多方面,接下來主要介紹分布式文本分類算法、關聯(lián)規(guī)則算法以及分布式聚類算法。
分布式文本分類算法的基礎是MapReduce計算思想,并結合了樸素貝葉斯分類算法。樸素貝葉斯分類算法的思想如圖1所示:
在樸素貝葉斯分類算法的基礎上,分布式貝葉斯分類算法主要包括三個過程:使用訓練集進行Map操作,使用訓練集進行Reduce操作,使用測試集進行Map操作。具體的分類流程是[3]:(1)將文件序列化。Hadoop將普通的文本文件處理為使用key-value格式進行存儲的文件類型,key存放目錄名或文件名,value存放文件內容。(2)向量化序列文件。把上一步得到的序列化轉換為有序字符串列表,即為經(jīng)過分詞后的有序文本信息。用這些有序文本信息生成詞頻向量,在計算每個詞匯出現(xiàn)次數(shù)的基礎上,把結果保存在wordcount文件內。把序列化文件進行向量化的算法如圖2所示。(3)使用訓練集生成訓練器。根據(jù)向量化的序列文件創(chuàng)建緩存,以便存儲每個分類label對應的ID,并把每個分類label對應的所有向量匯總起來,得到每個特征的權重。(4)進行分類。前面步驟中得到的
數(shù)據(jù)挖掘中,關聯(lián)規(guī)則算法的目的是找出數(shù)據(jù)集中的頻繁項集合。FP-Growth是一種常用的關聯(lián)規(guī)則算法,會執(zhí)行兩次遍歷數(shù)據(jù)庫的操作:第一次是開始的時候遍歷數(shù)據(jù)庫生成單項頻繁項集,第二次是進行分布式關聯(lián)優(yōu)化,以緩解單機的壓力。其主要流程是[4]:(1)樣本被分塊輸入到Hadoop集群中的各個節(jié)點,Map程序從HDFS系統(tǒng)中得到本節(jié)點的
3 分布式數(shù)據(jù)挖掘算法的應用
可以將分布式數(shù)據(jù)挖掘算法應用于微博熱點分析,包括數(shù)據(jù)預處理、文本預處理、特征提取處理、熱點分析等步驟。
在分析微博熱點時,本文采用的是阿里巴巴天池比賽的新浪微博預測大賽數(shù)據(jù),包括了一定時間內新浪微博的用戶轉發(fā)數(shù)、評論數(shù)以及點贊數(shù)等,能夠真實反映微博用戶的關注領域、評論的心理特征等。
數(shù)據(jù)預處理是分布式數(shù)據(jù)挖掘的基礎,對于微博數(shù)據(jù)來說,需要對以下數(shù)據(jù)進行預處理:一天之內的重復微博數(shù)據(jù)、以URL為主體的數(shù)據(jù)。以URL為主體的微博數(shù)據(jù)可能是網(wǎng)站推廣或廣告營銷,這樣的數(shù)據(jù)如果大量存在,則可以采取過濾刪除的處理方式。對于一天內的重復微博數(shù)據(jù),則需要根據(jù)實際的微博內容進行合并處理。Hadoop平臺中的Hive組件可以針對結構化數(shù)據(jù)文件完成sql操作,sql語句被轉換為MapReduce任務運行,實現(xiàn)對數(shù)據(jù)的預處理。
針對微博數(shù)據(jù)的短文本特性,從效率方面選擇IKAnalyzer分詞器對微博數(shù)據(jù)進行處理。整個數(shù)據(jù)集分為9個大類,每個類中包括2000個左右訓練樣本。對于每類數(shù)據(jù)都挖掘其頻繁項,以此作為微博熱點博文進行展示。為了去除沒有實際意義的詞匯,諸如“你”“我”“的”等,在為FP-Growth算法選擇輸入時,把按照主題劃分的分詞數(shù)據(jù)作為輸入。
采用k-means算法劃分微博的主題,其基本原理是[5]:初始選擇若干個聚類中心,然后根據(jù)數(shù)據(jù)和聚類中心的距離,把每個數(shù)據(jù)劃分到最近的聚類;然后計算每個聚類中所有數(shù)據(jù)的均值,作為新的聚類中心,迭代進行若干次運算,直到滿足終止條件。
選擇微博數(shù)據(jù)的轉發(fā)數(shù)、點贊數(shù)以及評論數(shù)作為特征向量,使用此特征向量實現(xiàn)分布式數(shù)據(jù)挖掘k-means算法。
4 總結
本文對分布式的數(shù)據(jù)挖掘算法進行研究,首先簡要介紹了分布式技術,并以此為基礎闡述了分布式數(shù)據(jù)挖掘算法;最后,對分布式數(shù)據(jù)挖掘算法的應用進行了研究。
參考文獻:
[1]方少卿,周劍,張明新.基于Map/Reduee的改進選擇算法在云計算的Web數(shù)據(jù)挖掘中的研究[J].計算機應用研究,2018, 14(2):255-279.
[2] 周奇年,張振浩,徐登彩.用于中文文本分類的基于類別區(qū)分詞的特征選擇方法[J].計算機應用與軟件,2017(3):15-26.
[3] 陳湘濤,張超,韓茜.基于Hadoop的并行共享決策樹挖掘算法研究[f].計算機科學,2013(11):36-39.
[4] Trap N L, Dugauthier Q, Skhiri S. A Distributed Data Mining Framework Accelerated with Graphics Processing Units[C]. International Conference on Cloud Computing & Big Data. IEEE Computer Society, 2017:366-372.
[5]馬青霞,王智鋼,李廣水.基于RESTFUL的面向服務數(shù)據(jù)挖掘原型系統(tǒng)的設計與實現(xiàn)[J].計算機應用與軟件,2016(2):41-43.