錢真坤, 周思吉
1.四川文理學(xué)院 后勤服務(wù)處,四川 達州 635000; 2.四川文理學(xué)院 信息化建設(shè)與服務(wù)中心,四川 達州 635000
在信息技術(shù)高速發(fā)展的社會,數(shù)據(jù)正以前所未有的速度增長[1-2],大數(shù)據(jù)作為一種新的戰(zhàn)略資源正在推動創(chuàng)新,改變不同領(lǐng)域的研究以及人們的生活、思維方式[3-4].分布式計算是一種大數(shù)據(jù)策略,常用的大數(shù)據(jù)框架之一是Hadoop,在Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)上實現(xiàn)MapReduce并行計算[5-6].Apache Spark是另外一個常用的并行計算框架,Spark基于MapReduce算法實現(xiàn)分布式計算,與Hadoop 框架的不同之處是: Job中間輸出和結(jié)果可以保存在內(nèi)存中,因此不需要讀寫HDFS,Spark的核心依然是MapReduce.Spark對于數(shù)據(jù)挖掘與機器學(xué)習(xí)等需要迭代的算法更友好,適應(yīng)性更強[7-8].MapReduce由兩個階段組成: Map和Reduce,Map階段處理輸入的數(shù)據(jù)拆分,生成不同的鍵值對,Reduce階段按鍵匯總在映射階段獲得的結(jié)果[9].
大數(shù)據(jù)分類研究已經(jīng)應(yīng)用到各個行業(yè),如金融、醫(yī)療、工業(yè)等.文獻[10]針對大數(shù)據(jù)分類中的噪聲問題,提出兩種消除噪聲樣本的大數(shù)據(jù)預(yù)處理方法: 同質(zhì)集合和異類集合過濾器,通過對大數(shù)據(jù)中噪聲的處理得到高質(zhì)量和干凈的數(shù)據(jù).文獻[11]提出一種Spark框架下K最鄰近(KNN)分類器的網(wǎng)絡(luò)大數(shù)據(jù)分類處理方法,該方法通過Map階段分區(qū)K近鄰操作,并通過Reduce階段確定最終K近鄰,同時對近鄰的標簽集合進行聚合,得出分類結(jié)果,但是該方法分類準確度較低.文獻[12]提出了物聯(lián)網(wǎng)大數(shù)據(jù)的隨機森林分類方法,并根據(jù)蜻蜓優(yōu)化選取特征對電子醫(yī)療數(shù)據(jù)進行分類,但該方法僅考慮了目標和當前特征變量的數(shù)據(jù).文獻[13]設(shè)計了一種線性支持向量機大數(shù)據(jù)分類方法,相較于傳統(tǒng)支持向量機,該方法在訓(xùn)練速度和分類精度上具有明顯的優(yōu)勢,但用于更大數(shù)據(jù)集時會影響性能.文獻[14]提出了蟻群優(yōu)化-人工神經(jīng)網(wǎng)絡(luò)聯(lián)合算法,該算法使用了深度人工神經(jīng)網(wǎng)絡(luò),并進行了蟻群優(yōu)化,提升了分類準確度.文獻[15]使用蝙蝠算法優(yōu)化人工神經(jīng)網(wǎng)絡(luò),提高了分類準確率.
本文在研究了大數(shù)據(jù)處理框架和現(xiàn)有大數(shù)據(jù)分類方法的基礎(chǔ)上,提出了基于自適應(yīng)指數(shù)蝙蝠和堆疊自編碼器(Stacked AutoEncoder,SAE)的并行大數(shù)據(jù)分類方法,該方法根據(jù)大數(shù)據(jù)分類方法的MapReduce并行實現(xiàn),設(shè)計了基于自適應(yīng)指數(shù)蝙蝠算法.在Map階段進行特征選擇,在Reduce階段,使用AEB訓(xùn)練的深度堆疊自動編碼器分類,得到分類結(jié)果.實驗結(jié)果表明,該方法能夠?qū)崿F(xiàn)較高精度的大數(shù)據(jù)分類.
MapReduce是一個編程范例,用于在分布式環(huán)境中處理大數(shù)據(jù)集,MapReduce框架為大數(shù)據(jù)提供了一個可擴展的容錯環(huán)境.在MapReduce范例中,Map階段執(zhí)行過濾和排序,Reduce階段執(zhí)行分組和聚合操作.
圖1 MapReduce框架
圖1給出了MapReduce框架流程.一個節(jié)點被選為負責(zé)分配工作的Master,其余的都是Worker,輸入數(shù)據(jù)分為多個Split,Master設(shè)備分配給Map Worker.每個Worker處理相應(yīng)的輸入Split,生成<鍵/值>對并將其寫入中間文件(在磁盤或內(nèi)存中).Master通知Reduce階段Worker關(guān)于中間文件的位置和讀取數(shù)據(jù),根據(jù)Reduce階段處理它.最后,將數(shù)據(jù)寫入輸出文件.
MapReduce范例的主要貢獻是可擴展性,因為MapReduce允許在大量節(jié)點上進行高度并行化和分布式執(zhí)行任務(wù).在MapReduce范例中,Map或Reduce任務(wù)分成多個作業(yè),這些作業(yè)被分配給網(wǎng)絡(luò)中的節(jié)點,通過將任何失敗節(jié)點的作業(yè)重新分配到另一個節(jié)點來實現(xiàn)可靠性.開源MapReduce在Hadoop分布式文件系統(tǒng)(HDFS)之上實現(xiàn).
Hadoop MapReduce的主要優(yōu)點之一是允許非專家用戶輕松地對大數(shù)據(jù)運行分析任務(wù).Hadoop MapReduce使用戶可以完全控制輸入數(shù)據(jù)集的處理方式,用戶使用Java編寫查詢代碼,便于多數(shù)沒有數(shù)據(jù)庫背景,只需具備Java基礎(chǔ)知識的開發(fā)人員使用.
本文基于自適應(yīng)指數(shù)蝙蝠和SAE的并行大數(shù)據(jù)分類方法,Map階段使用AEB算法從數(shù)據(jù)庫中選擇特征.然后,將選定的特征提供給Reduce進行大數(shù)據(jù)分類,Reduce階段使用深度堆疊自動編碼器進行大數(shù)據(jù)分類,該編碼器由AEB算法選擇特征訓(xùn)練而成.圖2給出了基于AEB堆疊自動編碼器算法進行大數(shù)據(jù)分類的框圖.
圖2 自適應(yīng)深度堆疊自動編碼器大數(shù)據(jù)分類
將輸入的大數(shù)據(jù)集合視為H,并將多個屬性表示為H=xnm,1≤m≤G,1≤n≤q.其中,xnm表示第m個數(shù)據(jù)的第n個屬性的大數(shù)據(jù),所有數(shù)據(jù)均由G個數(shù)據(jù)點和q個屬性組成.
特征提取是Map階段的重要功能,其中選擇相關(guān)特征通過減小維度來最大程度地提高分類精度.Map階段使用AEB算法選擇特征.
(1)
(2)
(3)
(4)
指數(shù)加權(quán)移動平均值(EWMA)是平均數(shù)據(jù)的過程,以獲得較少的權(quán)重隨時間而被刪除的數(shù)據(jù),可表示為:
(5)
(6)
AEB算法是通過引入自適應(yīng)速度的概念而得到的,蝙蝠個體繼承上一代的速度,并獲得最佳個體飛行,當算法進行到后期時,大多數(shù)蝙蝠個體都會陷入局部優(yōu)化,而蝙蝠的速度無法使其逃脫局部優(yōu)化,為了解決這個問題,本文提出了自適應(yīng)蝙蝠速度算法. 該算法基于每個蝙蝠的適應(yīng)度(距離越近適應(yīng)的最佳距離值越高,距離越遠值越低),給其速度加上權(quán)重,如果個體比其他個體更接近最優(yōu)解,則其適應(yīng)價值更高,此時迅速放慢個體速度,使個體收斂到最優(yōu)解,在這種情況下給出較小的權(quán)重值.相反,如果個體的適應(yīng)價值非常低,則意味著個體距離最佳解決方案還很遠,需要給它更大的權(quán)重值.權(quán)重計算方法設(shè)計為:
(7)
(8)
大數(shù)據(jù)被分為數(shù)據(jù)子集,表示為xnm={qe},1≤e≤F,數(shù)據(jù)子集的總數(shù)等于Map階段中的映射器數(shù)量,表示為D={D1,…,DF},其中F是從大數(shù)據(jù)開發(fā)的總子集數(shù).Map的輸入由E個總屬性組成,表示為:
qe={Sj,q},1≤j≤M,1≤q≤E
(9)
其中,M u={u1,u2,…,ub,…,ul} (10) 其中,選擇特征的總數(shù)表示為l.解向量是特征尺寸為[1×l]的向量. 在MapReduce處理框架中,首先對大數(shù)據(jù)集進行不同子集的劃分,每個子集對應(yīng)不同的Split,然后在Map進行特征選擇,輸出鍵值對為<分類準確率,特征>,對所有分類準確率進行排序,選擇最大的分類準確率,其對應(yīng)的特征即為最終特征,所有特征以集合形式輸入Reduce階段. 在Map階段將獲得的AEB算法用于從數(shù)據(jù)庫中選擇特征.并且在Reduce階段使用的深度堆疊自動編碼器由AEB訓(xùn)練而成. 圖3 深度堆疊自動編碼器網(wǎng)絡(luò)體系結(jié)構(gòu) 使用最常用的深度學(xué)習(xí)方法深度堆疊自動編碼器對Map中選定的特征進行分類,深度堆疊自動編碼器是一個對稱的神經(jīng)網(wǎng)絡(luò),用于無人監(jiān)督方式學(xué)習(xí)數(shù)據(jù)集的特征,分為3層: 輸入層、隱藏層和輸出層.輸入層完全連接到隱藏層,隱藏層進一步連接到輸出層,如圖3所示. (11) (12) 其中,W1是編碼權(quán)向量,b1是編碼偏置向量,W2是解碼權(quán)向量,b2是解碼偏置向量.f(·)和g(·)表示非線性的輸入和輸出映射函數(shù),采用Sigmoid函數(shù)可表示為f(x)=1/[1+exp(-x)].深度自動編碼器為了使隱藏層稀疏,使用稀疏約束最小化重構(gòu)誤差,這種架構(gòu)被稱為稀疏自編碼器. (13) (14) 多層自動編碼器是多個自動編碼器的串聯(lián),是將連續(xù)層輸入與堆疊在該層上的自動編碼器輸出連接的過程.對于第p層,激活輸出為: (15) (16) 深層自動編碼器包含3個過程.①初始化成本函數(shù)局部最小值附近的各個自動編碼器參數(shù).②學(xué)習(xí)到下一個自動編碼器隱藏層的輸入.③執(zhí)行反向傳播進行微調(diào),通過同時更改所有模型參數(shù),可以改善整體分類性能. 將本文所提AEB堆疊自動編碼器的大數(shù)據(jù)分類方法進行實驗,并通過現(xiàn)有方法對本文方法進行比較分析,以證明本文方法的有效性.本文所有實驗在Windows 10操作系統(tǒng)的電腦中運行.MapReduce實驗環(huán)境由6臺集群結(jié)點組成,選取1臺作為主節(jié)點,另外5臺作為從節(jié)點,每個節(jié)點的配置如下: Intel Core i5-8GB,RAM為64 G,硬盤容量為1 T,軟件配置為CentOS 6.5,Hadoop版本為5.4.5,6個節(jié)點都連接在100 Mb的交換機上. 本文采用準確度(Accuracy)和真正例率(TPR)這兩個指標評估模型的性能,數(shù)學(xué)定義為: (18) (19) 當一個樣本為正類,且被預(yù)測為正類時,稱為真正類(TP); 假若負類被預(yù)測為正類,稱為假正類(FP); 假若是負類被預(yù)測成負類,稱為真負類(TN); 假若正類被預(yù)測為負類,稱為假負類(FN). 本文使用的兩個標準數(shù)據(jù)集分別是加州大學(xué)歐文分校(UCI)機器存儲庫中Cleveland數(shù)據(jù)集和Pima India數(shù)據(jù)集.對比算法有: 文獻[11]中的KNN大數(shù)據(jù)分類方法,文獻[13]中SVM分類方法,文獻[14]中蟻群優(yōu)化-人工神經(jīng)網(wǎng)絡(luò)聯(lián)合算法以及文獻[15]中蝙蝠算法+人工神經(jīng)網(wǎng)絡(luò).對比實驗通過改變組合數(shù)據(jù)集中訓(xùn)練數(shù)據(jù)的百分比來對不同方法進行分析.經(jīng)過多次實驗,本文對于自適應(yīng)蝙蝠算法的參數(shù)設(shè)置為: 種群200,迭代次數(shù)70,初始發(fā)射速率0.95,響度衰減系數(shù)0.95,頻度增加系數(shù)0.5. 圖4和圖5給出了Cleveland數(shù)據(jù)集中不同訓(xùn)練數(shù)據(jù)在百分比條件下準確度和TPR的對比結(jié)果. 圖4 Cleveland數(shù)據(jù)集的準確度對比結(jié)果 圖5 Cleveland數(shù)據(jù)集的TPR對比結(jié)果 從圖4和圖5中的對比數(shù)據(jù)可以看出,在Cleveland數(shù)據(jù)集上針對不同訓(xùn)練數(shù)據(jù)百分比,本文所提算法的準確度都優(yōu)于其他4種方法.在訓(xùn)練數(shù)據(jù)百分比為90%時,本文所提算法具有最高的準確度,達到0.887 5,這是因為本文所提算法設(shè)計了自適應(yīng)指數(shù)蝙蝠算法來選擇最優(yōu)特征,增加了分類準確度,同時深度堆疊自動編碼器通過AEB訓(xùn)練得到的分類結(jié)果更加準確.文獻[14]中蟻群優(yōu)化-人工神經(jīng)網(wǎng)絡(luò)聯(lián)合算法準確度次之,這是因為使用了深度人工神經(jīng)網(wǎng)絡(luò),并進行了蟻群優(yōu)化,提升了分類準確度.文獻[15]中蝙蝠算法+人工神經(jīng)網(wǎng)絡(luò)算法使用了蝙蝠算法優(yōu)化人工神經(jīng)網(wǎng)絡(luò),但是由于蝙蝠算法的局限性,導(dǎo)致其分類準確度與SVM分類性能接近.在Cleveland數(shù)據(jù)集上,針對不同訓(xùn)練數(shù)據(jù)百分比,本文所提算法的TPR都優(yōu)于其他4種方法,在訓(xùn)練數(shù)據(jù)百分比為90%時,本文所提算法具有最高的真正例率,達到0.928 9.這是因為本文AEB+堆疊自動編碼器對分類性能的提升. 圖6和圖7給出了Pima India數(shù)據(jù)集上不同訓(xùn)練數(shù)據(jù)在百分比條件下準確度和TPR的對比結(jié)果. 圖6 Pima India數(shù)據(jù)集的準確度對比結(jié)果 圖7 Pima India數(shù)據(jù)集的TPR對比結(jié)果 圖8 Higgs大數(shù)據(jù)集的準確度對比結(jié)果 從圖6和圖7中數(shù)據(jù)可以看出,當訓(xùn)練數(shù)據(jù)百分比達到80%時,Pima India數(shù)據(jù)集上本文所提算法的準確度最高; 當訓(xùn)練數(shù)據(jù)百分比達到90%時,TPR最高.而且,在所有不同訓(xùn)練數(shù)據(jù)百分比條件下,本文所提算法的性能都比其他算法高,說明了本文方法的有效性. 為了驗證本文方法在大數(shù)據(jù)集上的優(yōu)越性能,在Higgs大數(shù)據(jù)集上給出性能對比結(jié)果.Higgs大數(shù)據(jù)集樣本數(shù)量為11 000 000,特征向量28,標簽數(shù)量42. 從圖8中可以看出,本文方法在Higgs大數(shù)據(jù)集上的準確度能夠達到0.83,比文獻[14]算法準確度提高了0.11.針對不同的大數(shù)據(jù)集,本文所提方法能夠以高精度實現(xiàn)大數(shù)據(jù)分類,且分類性能優(yōu)于其他方法,說明了本文方法的普適性和優(yōu)越性. 針對大數(shù)據(jù)分類性能低的問題,本文提出一種自適應(yīng)指數(shù)蝙蝠和SAE的并行大數(shù)據(jù)分類方法,該方法在Map階段使用設(shè)計的自適應(yīng)指數(shù)蝙蝠算法進行特征選擇; 在Reduce階段使用經(jīng)過AEB算法訓(xùn)練的深度堆疊自動編碼器進行分類,進一步提升了分類性能.使用不同的實驗數(shù)據(jù)集對本文所提方法進行實驗,不同百分比條件下的分類性能結(jié)果顯示,本文所提方法能夠以高精度實現(xiàn)大數(shù)據(jù)分類,且在準確度和TPR性能方面都優(yōu)于現(xiàn)有其他方法,說明本文方法的有效性和優(yōu)越性.未來的工作將通過擴展本文所提出的方法來處理安全約束.2.2 Reduce階段
3 實驗分析
4 結(jié)論