高 飛
(廣西現代職業技術學院,廣西 河池 547000)
隨著信息技術的不斷發展,信息系統及數據庫系統在許多領域得到了廣泛應用[1]。從相對宏觀的角度分析,數據挖掘本身在學科構成上具有較強的交叉性[2],正是因為這一特點,使得其能夠在種類繁多的數據中實現對隱藏信息的有效提煉[3]。將數據隱藏信息轉化為一種可以被理解的結構形式,可以對相關工作的開展起到重要的指導作用[4]。如王營等通過對FP-growth 算法進行改進,提出了一種以售后服務數據為目標的數據挖掘方法,提高了數據挖掘的全面性,使運算效率存在提升空間[5]。李瑞峰等以具有離群屬性的數據為研究對象,通過將加權深度森林融入到數據挖掘的過程中,實現對數據的有效分類[6]。但是,上述文獻涉及的方法難以滿足大規模數據的計算需求。李珺等通過對K-means 算法進行改進,以具有關聯規則的數據為研究目標,設計的數據挖掘算法,提高了算法的運算效率[7]。但受數據規模的影響,該算法與實際需求之間仍存在差距。在數據挖掘算法可靠性相對完善的背景下,運行效率是現階段數據挖掘算法需要重點攻克的難題之一[8]。為此,本文提出基于hadoop 平臺的數據挖掘算法,借助于hadoop 平臺的并行屬性,使得算法能夠實現多節點并行運算,以此提高其計算效率。
在傳統的數據挖掘算法中,主要是采用基于深度優先的策略來構建數據分析決策樹。這種方式需要優先為在每個節點創建對應的子樹,在此基礎上再創建對側的子樹結構。這就意味著在實施對目標數據的分析計算階段中,需要對同一節點待處理數據集進行多次、重復的讀取和處理。這不僅增加了算法執行期間的計算時間,同時也影響了算法的執行效率,使得對應的時長增加。
針對上述問題,本研究在利用hadoop 平臺進行數據集挖掘算法設計階段,對于決策樹的構造采用了廣度優先策略,通過建立層級關系實現對待處理數據集的逐層處理,這樣既可以減少對磁盤讀取的次數,同時也可以降低算法執行前進的運行負載。以此為基礎,本研究利用hadoop 平臺設計的數據挖掘算法執行流程主要從兩個角度入手。首先,要確保執行數據挖掘算法階段按照逐層構造的方式對決策樹進行分析,其次,在實施對數據挖掘算法對應決策樹節點的分枝操作處理時,將hadoop 平臺的MapReduce 程序調用到其中,建立算法運算期間的并行關系。
圖1 為本研究設計的具體數據挖掘算法執行流程。按照圖1 所示的數據挖掘算法的執行流程。在執行對每一輪數據的迭代計算前,本研究將上一層節點的劃分規則寫入到hadoop 平臺的HDFS文件中,此時的數據挖掘算法各個層級的計算結果將以并列的方式存在。在此基礎上,再調用hadoop 平臺的 MapReduce 程序,計算出HDFS 文件中數據挖掘算法決策樹各節點對相應數據屬性的輸出結果。

圖1 基于hadoop 平臺的數據挖掘算法執行流程圖
需要特別注意的是,由于決策樹本身已經構建了對應的層級關系,因此MapReduce 程序在對輸出結果進行存儲時,也要按照層級關系逐層存儲。以此為基礎,在具體的信息存儲階段,為了適應hadoop 平臺的讀取模式,本研究將其轉化為Hash 表。最后,hadoop 平臺以Hash 表為基礎,結合常規的N 維空間歐式距離計算公式,根據分支屬性的權重參量,計算出每個節點的最佳分枝屬性,過程如下:

其中,dxixj表示根據Hash 表計算出的節點i和j節點對應分枝屬性的加權歐氏距離,xi和xj分別表示節點i和j節點對應分枝屬性參量,表示分支屬性的權重參量,n表示數據挖掘算法分支節點的總量。
結合數據挖掘的精度要求,本研究將加權歐氏距離的最小值mindxixj作為分枝操作的基準參量,實施對決策樹節點的分枝處理。通過這樣的方式,實現對數據挖掘流程的設計,為挖掘算法在具體運行期間的并行運算提供有效保障。
對于數據挖掘算法Map 階段的設計,本研究首先按照決策樹中各個層節點對應的劃分條件對待處理的數據進行劃分。假設待分析的數據集為S,通過決策樹分支處理,生成的葉子節點的訓練樣本數據集為S',那么,根據條件概率,按數據屬性特征劃分在同一層級的節點,過程如下:

其中,Sm表示第m層級的節點構成。需要注意的是,為了在算法執行階段出現節點交叉或節點重復計算的情況,本研究為Sm建立了約束條件,及任意層級的節點構成不存在包含關系,通過這樣的方式確保各個層級節點之間沒有交集。
在此基礎上,本研究對數據挖掘算法Map 函數的設計是以單個數據形式處理,以

其中,M(Sm) 表示數據挖掘算法的Map 函數,Sm表示輸入的單個待分析數據參量,dmax表示決策樹的最大加權歐氏距離,dsm表示第m層級加權歐氏距離,通過這樣的方式,計算得到第m層級輸出的待分析數據對應
根據數據挖掘算法各個節點輸出

其中,P表示設置的數據分類基準參量,其具體的取值結果與數據的實際屬性和分類標準為基礎設置。在式(4) 中,對于分類結果的計算是以單一指標為基礎進行的,結合實際的數據處理需求,可以對P值進行適應性調節,包括其取值范圍、大小以及數量,以此來確保數據分析的結果能夠與實際分析需求之間具有較高的契合度。通過這樣的方式,數據挖掘算法決策樹能夠實現對數據的分級并行處理,提高分析的效率。
為進一步分析本文設計的基于hadoop 平臺的數據挖掘算法的設計執行效果,設計了如下應用測試過程。
在本研究構建的測試環境中,對應集群的計算機器數量為4 臺,為每臺計算機硬件配置了千兆以太網,以此滿足其運行的需求,對應的CPU參數信息為Intel8 Core(IM) i5-2450M@4.0GHz。考慮到參與測試數據規模較大,在8.0GB DDR3 內存的基礎上,為計算機搭載了大小為500G 的普通硬盤裝置。其次就是對測試環境軟件的設置,本研究以red hat10.0 操作系統作為測試運行的主體,利用Java_1.8.0_12 實施對相關邏輯指令的編碼,結合Hadoop2.5.0 和HBase 0.94.23 共同構建測試環境的框架結構。
在對Hadoop 云計算平臺進行具體搭建的過程中,本研究將參與測試的4 臺計算機中的一臺作為NameNode 節點,其余則作為DataNode 節點,并且為了降低測試節點的時間開銷,為其配置了ssh,并設置了無密碼登陸機制,在此基礎上為其配置 core-site. xml、hdfis-sit.e xml、 mapred-site. Xml以此滿足測試階段對數據的處理需求。在運行階段,通過啟動NameNode 進程使得sh Hadop/bin/stat-dfs.sh start 腳本能夠在主節點上順利運行,對應的DataNode 節點運行DataNode 進程。
在測試數據準備階段,為了保障測試結果的可靠性,降低由于測試數據異常對此測試結果的影響,本研究以機器學習網站(htp://ftp.ics.uic. edu/pub/machine-learming-databases/iris) 中 的 權 威實驗數據作為本文測試的數據信息。其中,數據集中包含元素的總量為210 個,根據元素類型可以將其劃分為三大類,對應每個類別中包含元素數量為70 個。在此基礎上,本研究結合海量數據挖掘算法的測試需求,按照不同類別數據的實際維度信息,利用代碼對上述數據進行拓展處理,生成了3 組測試數據集,對應的數據集大小及維度:測試數據集1 的數據規模為100.26M,維度為30;測試數據集2 的數據規模為500.33M,維度為40;測試數據集3 的數據規模為1.52GB,維度為50。
在對算法的執行效果進行評價階段,本研究結合數據挖掘的實際需求,分別以分類運算的時間開銷以及加速比作為評價指標。其中,分類運算時間開銷主要算法計算開始執行的時刻到結束的時刻之間的時間差,其直接體現了算法的運算效率,具體的計算方式可以表示為:

其中,t表示算法執行分類運算的時間開銷,Te表示算法開始執行運算的時間參量,Ts表示算法完成運算的時間參量。按照式(5) 所示,在以相同測試數據集進行分類處理時,算法的時間開銷越小,表示算法的運算速度越快,對應的運算效率越高。
其次就是算法的加速比,其主要是指在對同一個測試數據集進行處理時,單計算節點和多節點并行對應的時間開銷比值。其直接體現了算法的并行能力,具體的計算方式可以表示為:

其中,a表示算法的加速比,td表示單個運算節點執行運算的時間開銷,tb表示運算節點集群下執行運算的時間開銷。根據式(6) 可以看出,算法的加速比越大,表明其在處理大規模數據階段的性能越好。
在上述基礎上,本研究在測試結果引入了對照組,分別以文獻[6]中提出的以加權深度森林為基礎的數據挖掘算法和文獻[7]中提出的以改進K-means 為基礎的數據挖掘算法作為對照組的應用算法。在此基礎上,分別對比三種算法的執行效果。其中,得到的分類運算的時間開銷如表1 所示。

表1 不同算法分類運算時間開銷對比表
從表1 中可以看出,對比三種算法的測試結果,其中,當測試數據集的數據規模較小時(測試數據集1),三種算法對應的分類運算時間開銷并未表現出明顯差異,但是隨著測試數據集數據規模的不斷增加,文獻[6]和文獻[7]算法的時間開銷均呈現出了較為明顯的上升趨勢,在數據規模以接近倍數的模式增加時,時間開銷的上升幅度明顯高于數據規模的增長幅度,當測試數據集的數據規模達到1.52GB 時(測試數據集3),兩種算法的時間開銷均達到了100.0s 以上。相比之下,本研究設計算法的時間開銷表現出與數據規模的增長幅度較高的一致性,其中,當測試數據集的數據規模大小為100.26M 時(測試數據集1),分類運算的時間開銷為4.55s,當測試數據集的數據規模大小為1.52GB 時(測試數據集3),執行分類運算的時間開銷為62.44s,與文獻[6]和文獻[7]算法相比,分別降低了37.78s 和37.74s,具有較為明顯的優勢。測試結果表明,本研究設計的基于hadoop 平臺的數據挖掘算法具有較高的運算效率。
其次,本研究統計了三種算法在運算過程中的加速比,得到的數據結果如圖2 所示。

圖2 不同算法加速比對比圖
在對加速比進行測試的階段,本研究按照測試環境的設置情況,令集群節點數量為4 個。在此基礎上,對比圖2 中三種算法的加速比可以看出,文獻[6]算法對應的加速比最大值為2.80,文獻[7]算法對應的加速比最大值為3.12,相比之下,本研究設計算法的加速比最大值達到了3.96,明顯高于另外兩種對比方法。
上述測試結果表明,本研究設計的基于hadoop 平臺的數據挖掘算法具有較高加速比,能夠滿足海量數據在分析效率上的需求。
在數據集規模不斷擴大,數據復雜度不斷增加的環境下,如何實現對數據的快速處理成為了數據挖掘算法亟需解決的問題。在此基礎上,為了實現對海量數據中潛在價值的有效獲取,發揮其在實際工作中的作用,實施可靠的數據挖掘技術成為了重要的內容之一。
Hadoop 作為一種開源分布式計算平臺,將其融入到數據挖掘算法中將提高其運算效率。本研究提出基于hadoop 平臺的數據挖掘算法及實現研究,提高了算法在運行階段的效率,能夠滿足海量數據的處理需求。通過本次研究以期為相關數據的處理工作提供參考借鑒,助力大數據在實際工作中發揮更大作用。