劉黎志,楊 敏
智能機(jī)器人湖北省重點(diǎn)實(shí)驗(yàn)室(武漢工程大學(xué)),湖北 武漢430205
支持向量機(jī)(support vector machine,SVM)分類模型的建立需要經(jīng)過大量的計(jì)算,隨著訓(xùn)練樣本集規(guī)模的增長,不僅會(huì)大量消耗主機(jī)的CPU及內(nèi)存資源,而且訓(xùn)練模型所需要時(shí)間也會(huì)急劇增加,從而使得在單機(jī)環(huán)境下得到模型變得十分困難,因此如何針對(duì)大規(guī)模數(shù)據(jù)集,使用并行化方式獲得最優(yōu)支持向量機(jī)分類模型,一直是研究的熱點(diǎn)問題[1-3]?;贖adoop平臺(tái)的分布式計(jì)算框架MapReduce及Spark為并行化訓(xùn)練大規(guī)模數(shù)據(jù)集提供了新的方法和手段[4-7],在分布式計(jì)算框架的支持下,SVM分類模型的訓(xùn)練過程可以并行化,從而顯著縮短了得到模型所需要的時(shí)間[8-10],層疊化SVM就是基于MapReduce框架并行獲取支持向量的典型應(yīng)用[11-12]。為了讓SVM分類模型能夠更魯棒地用于實(shí)際數(shù)據(jù)的預(yù)測(cè)及解決線性不可分問題,在模型的訓(xùn)練過程中,需要對(duì)模型的參數(shù)進(jìn)行選擇,從而得到最優(yōu)的模型[13-14]。相關(guān)研究運(yùn)用MapReduce框架建立分布式參數(shù)尋優(yōu)模型,完成了模型訓(xùn)練、預(yù)測(cè)和參數(shù)選擇優(yōu)化。吳云蔚等[15]針對(duì)使用網(wǎng)格搜索對(duì)SVM參數(shù)進(jìn)行全局尋優(yōu)時(shí)存在的尋優(yōu)時(shí)間長的問題,提出了一種基于Hadoop分布式文件系統(tǒng)(hadoop distributed file system,HDFS)平臺(tái)的分布式參數(shù)尋優(yōu)方法,提高了尋優(yōu)效率。白玉辛[16]基于Flink并行網(wǎng)格搜索算法對(duì)SVM參數(shù)進(jìn)行尋優(yōu),將全局參數(shù)對(duì)文件切分成若干小塊交給各個(gè)計(jì)算節(jié)點(diǎn)并行尋優(yōu),最后匯總尋優(yōu)結(jié)果,減少了尋優(yōu)時(shí)間。李坤等[17]基于Spark集群實(shí)現(xiàn)了libsvm參數(shù)優(yōu)選的并行化,提出了并行粗粒度網(wǎng)格搜索參數(shù)優(yōu)選算法,相比傳統(tǒng)算法運(yùn)行速度提升了近7倍,且隨著集群規(guī)模的擴(kuò)大而進(jìn)一步加大。
但當(dāng)前的這些研究都缺少在訓(xùn)練過程對(duì)集群內(nèi)存資源消耗情況的論述。因此本文提出一種在MapReduce框架下進(jìn)行最優(yōu)模型參數(shù)選擇的新算法,該算法能夠在合理利用集群內(nèi)存資源及保證進(jìn)行交叉驗(yàn)證的Reduce任務(wù)充分并行執(zhí)行的前提下,顯著減少最優(yōu)模型參數(shù)的獲取時(shí)間。
對(duì)于給定的訓(xùn)練數(shù)據(jù)集:D={(xi,yi)|xi∈Rn,yi∈(-1,1)}mi=1,求解SVM最優(yōu)超平面的對(duì)偶問題描述為:
其中m為支持向量的個(gè)數(shù),ɑi為支持向量對(duì)應(yīng)的拉格朗日算子。
c為懲罰參數(shù),控制SVM模型如何處理錯(cuò)誤,對(duì)于線性可分問題,合適的c值可以使得超平面間距最大,同時(shí)出現(xiàn)的分類錯(cuò)誤最少。沒有一個(gè)特定的c值可以解決所有的線性可分問題,對(duì)于具體的問題,最優(yōu)的c值只能通過實(shí)驗(yàn)的方法得到。
對(duì)于線性不可分問題,可以通過核函數(shù)將數(shù)據(jù)映射到多維空間,使其線性可分。核函數(shù)K的返回值是數(shù)據(jù)點(diǎn)在轉(zhuǎn)換為多維空間向量后的內(nèi)積值,核函數(shù)K的形式化定義為:給定一個(gè)映射函數(shù)φ:x→ν,函數(shù)K:x→R,定義為:
其中,<φ(x),φ(x')>ν表示x,x'在轉(zhuǎn)換為φ(x),φ(x')后在ν中的內(nèi)積。核函數(shù)的類型有線性核函數(shù)、多項(xiàng)式核函數(shù)、高斯核函數(shù)等。實(shí)踐證明,使用高斯核函數(shù)對(duì)線性不可分問題進(jìn)行分類,一般可以取得較好的效果,故在選擇核函數(shù)時(shí),高斯核函數(shù)一般是首選。高斯核函數(shù)的描述為:
γ和c值一樣需要通過實(shí)驗(yàn)得到其最優(yōu)值,取得最優(yōu)值的實(shí)驗(yàn)為采用交叉驗(yàn)證的網(wǎng)格搜索方法(grid search)。對(duì)于第i組給定的(ci,γi),交叉驗(yàn)證的過程為將訓(xùn)練集劃分為大小相同的n個(gè)等份,依次取其中的第j份為測(cè)試集Tj,j=(1,2,…,n),剩下的n-1份為訓(xùn)練集,使用根據(jù)訓(xùn)練集得到的分類模型預(yù)測(cè)Pj,得到預(yù)測(cè)準(zhǔn)確率Aj,整個(gè)交叉驗(yàn)證的準(zhǔn)確率Ai為:
上述的過程稱為n重交叉驗(yàn)證(n-fold cross validation)。n重交叉驗(yàn)證使得整個(gè)訓(xùn)練集中的數(shù)據(jù)均被預(yù)測(cè),其準(zhǔn)確率為整個(gè)訓(xùn)練集中的數(shù)據(jù)被正確分類的百分比,故n重交叉驗(yàn)證能有效的避免模型的過擬合問題。最優(yōu)模型參數(shù)的選擇就是在集合p={(ci,γi)|ci,γi∈R}mi=1中,使用交叉驗(yàn)證得到每組參數(shù)的Ai,取準(zhǔn)確率最高的參數(shù)(ci,γi)為最優(yōu)模型參數(shù)。使用網(wǎng)格搜索得到最優(yōu)模型是個(gè)非常耗時(shí)的過程,假設(shè)參數(shù)集合p的參數(shù)組數(shù)為m,每組參數(shù)進(jìn)行n重交叉驗(yàn)證,每一次交叉驗(yàn)證的平均時(shí)間為w,若為串行執(zhí)行,網(wǎng)格搜索的總時(shí)間t為:
由此可見網(wǎng)格搜索的時(shí)間隨著參數(shù)組數(shù)m及交叉驗(yàn)證的重?cái)?shù)n而線性增長。在網(wǎng)格搜索的過程中,由于對(duì)某組參數(shù)進(jìn)行交叉驗(yàn)證的過程與其它參數(shù)組無關(guān),故多組參數(shù)的交叉驗(yàn)證過程可以并行執(zhí)行,從而縮短網(wǎng)格搜索得到最優(yōu)模型所需要的時(shí)間。
在分布式集群環(huán)境下,MapReduce框架負(fù)責(zé)處理并行計(jì)算中的分布式存儲(chǔ)、工作調(diào)度、負(fù)載均衡、容錯(cuò)均衡、容錯(cuò)處理以及網(wǎng)絡(luò)通信等復(fù)雜問題。MapReduce框架采用“分而治之”的策略,其核心步驟主要分兩部分:Map和Reduce。在向MapReduce框架提交一個(gè)計(jì)算作業(yè)后,MapReduce會(huì)首先把作業(yè)拆分成若干個(gè)Map任務(wù),然后這些Map任務(wù)被分配到不同的機(jī)器上執(zhí)行,這些Map任務(wù)完成后會(huì)產(chǎn)生一些鍵值對(duì)構(gòu)成的中間文件,它們將會(huì)作為Reduce任務(wù)的輸入數(shù)據(jù)。Reduce任務(wù)的主要目標(biāo)就是把前面若干個(gè)Map的輸出進(jìn)行處理并給出結(jié)果。MapReduce框架的作業(yè)配置非常靈活,可以指定只單獨(dú)運(yùn)行Map或者Reduce任務(wù);指定完成具體任務(wù)的Reduce的個(gè)數(shù);通過key值指定Map任務(wù)與Reduce任務(wù)的對(duì)應(yīng)關(guān)系等。本文提出的最優(yōu)模型參數(shù)選擇方法首先在Map任務(wù)中讀取存儲(chǔ)在HDFS文件系統(tǒng)中的參數(shù)文件,然后在Reduce任務(wù)中進(jìn)行模型的訓(xùn)練及交叉驗(yàn)證,得到模型的準(zhǔn)確率?;贛apReduce的SVM最優(yōu)分類模型參數(shù)選擇的過程如圖1所示。
圖1 基于MapReduce的最優(yōu)模型參數(shù)選擇過程Fig.1 Optimal model parameter selection processbased on MapReduce
分布式集群環(huán)境下的最優(yōu)模型選擇的核心思想就是讓多組參數(shù)可以同時(shí)訓(xùn)練,以縮短得到最優(yōu)模型參數(shù)的時(shí)間。將需要訓(xùn)練的參數(shù)集合參數(shù)p={(c i,γi)|c i,γi∈R}m i=1中的每組參數(shù)(c i,γi)以一個(gè)文件的方式寫入到HDFS文件系統(tǒng),當(dāng)文件的個(gè)數(shù)達(dá)到指定的閾值n(n≤m)時(shí),啟動(dòng)MapReduce作業(yè),通過重載Map任務(wù)讀取文件的模式,使得每個(gè)Map任務(wù)讀取輸入?yún)?shù)文件的所有內(nèi)容,在確保key唯一后,將<key,參數(shù)>寫入到中間結(jié)果。由于每組參數(shù)的key值不同,且Reduce的個(gè)數(shù)設(shè)置為n,所以JobTrack可以保證每個(gè)Reduce任務(wù)只訓(xùn)練一組參數(shù)。每個(gè)Reduce任務(wù)讀取緩存在集群內(nèi)存中的訓(xùn)練數(shù)據(jù)集文件及調(diào)用緩存在集群中的libsvm包中的方法訓(xùn)練模型并進(jìn)行交叉驗(yàn)證,模型訓(xùn)練的結(jié)果寫入HBase數(shù)據(jù)庫,以便對(duì)訓(xùn)練過程進(jìn)行統(tǒng)計(jì)分析。
由于每組參數(shù)的交叉驗(yàn)證過程要在Reduce任務(wù)中完成,增加Reduce的任務(wù)并發(fā)數(shù)顯然可以加快獲得最優(yōu)模型參數(shù)的速度。但是,當(dāng)并發(fā)執(zhí)行的Reduce任務(wù)個(gè)數(shù)到達(dá)一定閾值后,集群的內(nèi)存資源將被全部占用,從而導(dǎo)致其它的MapReduce作業(yè)由于缺少內(nèi)存資源而無法執(zhí)行。因此,必須限制并發(fā)執(zhí)行的Reduce的任務(wù)個(gè)數(shù)。一種限制Reduce任務(wù)個(gè)數(shù)的方式為:將需要選擇的m個(gè)參數(shù)劃分為n個(gè)MapReduce作業(yè)(J1,J2,…,Jn-1,Jn),n≥1,其中(J1,J2,…,Jn-1)執(zhí)行mn個(gè)參數(shù)的驗(yàn)證,Jn執(zhí)行m%n個(gè)參數(shù)的驗(yàn)證,(J1,J2,…,Jn-1)在JobTrack的控制下串行執(zhí)行,執(zhí)行過程如圖2所示。
圖2(a)中的每個(gè)Ji中并行執(zhí)行m n個(gè)或者m%n個(gè)Reduce任務(wù),矩形條表示每個(gè)Reduce任務(wù)的完成時(shí)間。對(duì)于第i個(gè)作業(yè)Ji,執(zhí)行交叉驗(yàn)證耗時(shí)最長的Reduce任務(wù)完成時(shí)間為Ri,由于Ji為串行執(zhí)行方式,所以使用該方式進(jìn)行最優(yōu)參數(shù)選擇的總時(shí)間G為:
另一種方式為單個(gè)MapReduce作業(yè)方式,即只啟動(dòng)MapReduce作業(yè)一次,讓m個(gè)Reduce任務(wù)全部處于就緒狀態(tài),但限制能獲得資源并行執(zhí)行的Reduce的任務(wù)個(gè)數(shù)為k,k≤m。當(dāng)某個(gè)Reduce任務(wù)執(zhí)行完成后,處于就緒等待隊(duì)列中的某個(gè)Reduce任務(wù)獲得資源開始執(zhí)行,直到就緒隊(duì)列中的所有Reduce任務(wù)執(zhí)行完成。單個(gè)MapReduce作業(yè)方式的執(zhí)行過程如圖2(b)所示。
圖2 (a)串行MapReduce作業(yè)方式;(b)單個(gè)MapReduce作業(yè)方式Fig.2(a)Serial MapReduce job mode;(b)Single MapReduce job mode
單個(gè)MapReduce作業(yè)方式只在執(zhí)行最后一批k個(gè)Reduce任務(wù)時(shí),需要等待耗時(shí)其中最長的任務(wù)執(zhí)行完成,其它情況下,耗時(shí)長的任務(wù)將和其它任務(wù)一起并行執(zhí)行。
通過比較兩種MapReduce作業(yè)方式可以發(fā)現(xiàn),串行MapReduce作業(yè)方式調(diào)度簡單,不需要維護(hù)額外的Reduce任務(wù)就緒隊(duì)列或者等待任務(wù)執(zhí)行,但當(dāng)作業(yè)中存在耗時(shí)的Reduce任務(wù)時(shí),會(huì)顯著增加整個(gè)作業(yè)的完成時(shí)間,因此串行MapReduce作業(yè)方式適合并行執(zhí)行的各個(gè)Reduce任務(wù)的完成時(shí)間差距不大的細(xì)粒度最優(yōu)參數(shù)搜索。單個(gè)MapReduce作業(yè)方式只向集群提交一次作業(yè),如果運(yùn)行失敗,整個(gè)參數(shù)選擇的過程必須重做。但當(dāng)作業(yè)中包括耗時(shí)的Reduce任務(wù)時(shí),該作業(yè)方式可以使得耗時(shí)的任務(wù)和其它任務(wù)同時(shí)執(zhí)行,從而加快最優(yōu)參數(shù)的獲取速度,因此單個(gè)MapReduce作業(yè)方式適合Reduce任務(wù)的完成時(shí)間差距較大的粗粒度最優(yōu)參數(shù)搜索。
SVM最優(yōu)模型參數(shù)選擇的算法流程如圖3所示,其中reduceNums參數(shù)用于控制作業(yè)中并發(fā)執(zhí)行的Reduce任務(wù)的個(gè)數(shù),reduceNumsAllowed參數(shù)用于控制集群中允許執(zhí)行的Reduce任務(wù)的個(gè)數(shù)。當(dāng)reduceNums<=cnum*gnum,reduceNums-Allowed<=reduceNums時(shí)為串行MapReduce作業(yè)方式。當(dāng)reduceNums<=cnum*gnum,reduceNums-Allowed<=reduceNums時(shí)為單個(gè)MapReduce作業(yè)方式。
圖3 SVM最優(yōu)模型參數(shù)選擇算法流程圖Fig.3 Flow chart of SVM optimal model parameter selection algorithm
MapReduce作業(yè)中的Map任務(wù)讀取存儲(chǔ)在HDFS文件系統(tǒng)中的參數(shù)文件,并以<key,value>的形式寫成,交給Reduce處理,其算法描述如圖4和圖5所示,其中paramFile表示當(dāng)前參數(shù)文件,context表示MapReduce作業(yè)上下文。
圖4 MapReduce作業(yè)中的Map任務(wù)流程圖Fig.4 Flow chart of Map task in MapReducejob
圖5 MapReduce作業(yè)中的Reduce任務(wù)流程圖Fig.5 Flow chart of Reduce task in MapReduce job
存儲(chǔ)在HDFS文件系統(tǒng)中的參數(shù)文件經(jīng)過Map任務(wù)處理后,由于各自的key值不同,所以MapReduce框架的JobTrack把每組參數(shù)交給一個(gè)Reduce任務(wù)來處理,從而使得模型的選擇過程并行化,在Reduce任務(wù)的算法描述中,paramStr表示參數(shù)字符串,context表示MapReduce作業(yè)上下文。
Reduce任務(wù)中的交叉驗(yàn)證過程直接調(diào)用libsvm包中的方法完成,訓(xùn)練數(shù)據(jù)集中的輸入特征需要按libsvm規(guī)定的稀疏矩陣格式進(jìn)行壓縮,輸入特征值一般需要進(jìn)行歸一化處理,避免特征值之間的數(shù)量級(jí)差距過大對(duì)訓(xùn)練算法的影響。在每組參數(shù)對(duì)應(yīng)的Reduce任務(wù)完成后,將其交叉驗(yàn)證的結(jié)果寫入HBase表,以便對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,得到最優(yōu)模型的參數(shù)及其它性能指標(biāo)。HBase的表結(jié)構(gòu)如圖6所示。
圖6 實(shí)驗(yàn)結(jié)果存儲(chǔ)HBase表結(jié)構(gòu)Fig.6 Structure of HBase table of storing experiment results
實(shí)驗(yàn)用服務(wù)器為DELL PowerEdge R720,其配置為2個(gè)物理CPU(Intel Xeon E5-2620 V2 2.10 GHz,每個(gè)CPU含6個(gè)內(nèi)核,共12個(gè)內(nèi)核),32 GB內(nèi)存,8 TB硬盤,4個(gè)物理網(wǎng)卡。服務(wù)器安裝VMWare esxi6.0.0操作系統(tǒng),虛擬化整個(gè)服務(wù)器環(huán)境??蛻舳耸褂肰MWare VSphere client 6.0.0將服務(wù)器劃分為4個(gè)虛擬機(jī),每個(gè)虛擬機(jī)的配置為3內(nèi)核CPU,8 GB內(nèi)存,2 TB硬盤,1個(gè)物理網(wǎng)卡。每個(gè)虛擬機(jī)安裝ubuntu-16.04.1-server-amd64操作系統(tǒng),Hadoop 2.7.3分布式計(jì)算平臺(tái),組成含1個(gè)主節(jié)點(diǎn),4個(gè)數(shù)據(jù)節(jié)點(diǎn)(主節(jié)點(diǎn)也是數(shù)據(jù)節(jié)點(diǎn))的集群。實(shí)驗(yàn)選用https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/中的a8a二分類訓(xùn)練數(shù)據(jù)集,a8a共包含22 696條數(shù)據(jù),大小在1.6 MB左右。
進(jìn)行粗粒度參數(shù)選擇,比較在Reduce任務(wù)完成時(shí)間差距較大時(shí),串行MapReduce作業(yè)方式和單個(gè)MapReduce作業(yè)方式在最優(yōu)模型參數(shù)選擇時(shí)的時(shí)間性能和集群內(nèi)存消耗上的差別。設(shè)置參數(shù)nrFold=4,cnum=8,c初始值為0,遞增步長為1,搜索范圍為0~7。參數(shù)gnum=8,γ的初始值為0,遞增步長為10-1,搜索范圍為0~10-7。ci和γi的笛卡爾積為64,在這64組參數(shù)中進(jìn)行粗粒度搜索。設(shè)置reduceNums/reduceNumsAllowed參數(shù)分別為4/4,8/8,16/16,32/32,64/64,即reduceNums<=cnum*gnum,reduceNums=reduceNumsAllowed,進(jìn)行串行MapReduce作業(yè)方式實(shí)驗(yàn),得到的實(shí)驗(yàn)數(shù)據(jù)如表1所示。
表1中的Reduce任務(wù)的最快、最慢及平均完成時(shí)間,均通過查詢統(tǒng)計(jì)BMSResult表得到,具體過程在此不詳細(xì)描述。分析表1可以發(fā)現(xiàn),1)集群內(nèi)存資源的消耗隨著并行執(zhí)行的Reduce的任務(wù)個(gè)數(shù)的增加而增加,當(dāng)Reduce的任務(wù)數(shù)量達(dá)到32個(gè)時(shí),內(nèi)存被100%全部占用,無法得到內(nèi)存資源的Reduce任務(wù)只能等待正在執(zhí)行的任務(wù)完成后,再由JobTrack調(diào)度執(zhí)行。2)Reduce任務(wù)的平均完成時(shí)間,隨著并行執(zhí)行的任務(wù)數(shù)的增加而增加,說明當(dāng)集群并發(fā)任務(wù)數(shù)多時(shí),CPU的調(diào)度和內(nèi)存資源的分配緊張,Reduce完成任務(wù)的時(shí)間增加。3)獲取最優(yōu)參數(shù)的總訓(xùn)練時(shí)間,隨著并行執(zhí)行的Reduce的任務(wù)的個(gè)數(shù)的增加,MapReduce作業(yè)啟動(dòng)的次數(shù)的減少而下降,說明雖然任務(wù)并發(fā)個(gè)數(shù)多時(shí),完成每個(gè)Reduce任務(wù)的平均時(shí)間雖然增加,但由于Reduce任務(wù)的并發(fā)度增加,獲得最優(yōu)參數(shù)的總時(shí)間相反會(huì)下降。
設(shè)置reduceNums/reduceNumsAllowed參數(shù)分別為64/4,64/8,64/16,即reduceNums=cnum*gnum,reduceNumsAllowed<reduceNums,進(jìn) 行 單 個(gè)MapReduce作業(yè)方式實(shí)驗(yàn),得到的實(shí)驗(yàn)數(shù)據(jù)如表2所示。
比較表1中的實(shí)驗(yàn)1-實(shí)驗(yàn)3及表2中的實(shí)驗(yàn)1-實(shí)驗(yàn)3,可發(fā)現(xiàn)在內(nèi)存消耗相等時(shí),粗粒度參數(shù)選擇單個(gè)MapReduce作業(yè)方式獲取最優(yōu)參數(shù)的總時(shí)間均優(yōu)于串行MapReduce作業(yè)方式。比較表2中的實(shí)驗(yàn)3和表1中的實(shí)驗(yàn)3,在內(nèi)存消耗相等時(shí),獲取最優(yōu)模型的時(shí)間性能提高(4 559-3 506)/3 506≈30%;比較表2中的實(shí)驗(yàn)3和表1中的實(shí)驗(yàn)4-實(shí)驗(yàn)5,可以發(fā)現(xiàn)單個(gè)MapReduce作業(yè)方式在僅消耗集群56%的內(nèi)存時(shí),獲取最優(yōu)參數(shù)的時(shí)間與串行MapReduce作業(yè)方式消耗100%內(nèi)存時(shí)相近;比較表2中的實(shí)驗(yàn)3和表1中的實(shí)驗(yàn)1,可以發(fā)現(xiàn)通過合理的選擇獲取最優(yōu)參數(shù)的方式及設(shè)置reduceNums/reduceNumsAllowed參數(shù),在保證集群內(nèi)存的合理消耗下,獲取最優(yōu)參數(shù)的時(shí)間性能提高了(9 599-3 506)/3 506≈174%。
表1 粗粒度參數(shù)選擇串行MapReduce作業(yè)方式實(shí)驗(yàn)數(shù)據(jù)表Tab.1 Experimental results of serial MapReduce job mode for coarse-grained parameter selection
表2 粗粒度參數(shù)選擇單個(gè)MapReduce作業(yè)方式實(shí)驗(yàn)數(shù)據(jù)表Tab.2 Experimental results of single MapReduce job mode for coarse-grained parameter selection
其次,進(jìn)行細(xì)粒度粒度參數(shù)選擇,比較在Reduce任務(wù)完成時(shí)間差距不大時(shí),串行MapReduce作業(yè)方式和單個(gè)MapReduce作業(yè)方式在最優(yōu)模型參數(shù)選擇時(shí)的時(shí)間性能和集群內(nèi)存消耗上的差別。設(shè)置參數(shù)nrFold=4,cnum=8,c初始值為0.5,遞增步長為0.25,搜索范圍為0.5~2.25。參數(shù)gnum=8,γ的初始值為0.05,遞增步長為0.012 5,搜索范圍為0.05~0.137 5。設(shè)置reduceNums/reduce-NumsAllowed參數(shù)分別為4/4,8/8,16/16,64/4,64/8,64/16,得到的實(shí)驗(yàn)結(jié)果如表3所示。
比較表3中的實(shí)驗(yàn)1-實(shí)驗(yàn)3和實(shí)驗(yàn)4-實(shí)驗(yàn)6,可以發(fā)現(xiàn)在進(jìn)行細(xì)粒度參數(shù)選擇時(shí),當(dāng)Reduce任務(wù)的完成時(shí)間差距不大時(shí),在同等內(nèi)存消耗的情況下,兩種MapReduce作業(yè)方式在獲取最優(yōu)模型參數(shù)的時(shí)間性能上差距不大。
表3 細(xì)粒度參數(shù)選擇串行/單個(gè)MapReduce作業(yè)方式對(duì)比實(shí)驗(yàn)數(shù)據(jù)表Tab.3 Comparison of experimental results between serial and single MapReduce job mode for fine-grained parameter selection
SVM分類模型最優(yōu)參數(shù)的選擇是一個(gè)非常耗時(shí)的過程,本文提出的基于MapReduce框架的最優(yōu)分類模型參數(shù)選擇的算法,能夠在分布式集群環(huán)境下,讓模型參數(shù)的交叉驗(yàn)證過程并行執(zhí)行,并通過選擇不同的MapReduce作業(yè)方式,配置集群中的并發(fā)任務(wù)數(shù),可以在合理的集群內(nèi)存消耗的情況下,顯著縮短獲取最優(yōu)參數(shù)的時(shí)間。后續(xù)的研究方向設(shè)想為:(1)對(duì)于大規(guī)模的訓(xùn)練數(shù)據(jù)集,可否首先按并行層疊的方式獲取支持向量集合,然后僅根據(jù)獲取到的支持向量集合進(jìn)行最優(yōu)模型參數(shù)選擇,從而減少進(jìn)行交叉驗(yàn)證的數(shù)據(jù)規(guī)模,提高獲取最優(yōu)參數(shù)的速度。(2)研究在Spark分布式計(jì)算框架進(jìn)行SVM最優(yōu)模型參數(shù)的選擇的具體方式。