◆周顯春 肖 衡
(三亞學(xué)院信息與智能工程學(xué)院 海南 572022)
Spark框架下聚類模型在網(wǎng)絡(luò)流量異常檢測(cè)中的應(yīng)用
◆周顯春 肖 衡
(三亞學(xué)院信息與智能工程學(xué)院 海南 572022)
本文在Spark 平臺(tái)上采用基于RDD的聚類模型對(duì)網(wǎng)絡(luò)流量異常進(jìn)行檢測(cè)。在Spark的集群環(huán)境下,通過(guò)對(duì)比測(cè)試準(zhǔn)確率、WCSS發(fā)現(xiàn),k-means++聚類模型比BisectingKMeans模型更加適合對(duì)網(wǎng)絡(luò)流量進(jìn)行檢測(cè)。該實(shí)驗(yàn)結(jié)果對(duì)從事網(wǎng)絡(luò)流量異常的檢測(cè)的研究者有一定的借鑒作用。
網(wǎng)絡(luò)流量檢測(cè);Spark ;k-means++;BisectingKMeans
近年來(lái),隨著“互聯(lián)網(wǎng)+”、云平臺(tái)、大數(shù)據(jù)等新技術(shù)高速發(fā)展,互聯(lián)網(wǎng)現(xiàn)在已經(jīng)成為經(jīng)濟(jì)發(fā)展和社會(huì)進(jìn)步的不可或缺的推動(dòng)力量。與此同時(shí),網(wǎng)絡(luò)信息的數(shù)據(jù)量也呈現(xiàn)爆炸式增長(zhǎng),呈現(xiàn)4V特性(量大、多樣性、速度快、價(jià)值密度低)。在大數(shù)據(jù)的環(huán)境下,原有的病毒、黑客、電子竊聽(tīng)、電子欺詐的檢測(cè)技術(shù)效率底下,使得網(wǎng)絡(luò)的安全問(wèn)題尤其突出。
同時(shí),為了滿足大容量數(shù)據(jù)分布式處理的要求,國(guó)外研究者提出Apache Spark。Spark是一種分布式、開(kāi)源的計(jì)算框架,目的是為了簡(jiǎn)化基于計(jì)算機(jī)集群的并行程序的編寫。Spark不僅可以發(fā)揮MapReduces的對(duì)大數(shù)據(jù)的處理能力[1],還可以充分利用數(shù)據(jù)集內(nèi)存緩存、啟動(dòng)任務(wù)的低遲延、迭代類運(yùn)算、實(shí)時(shí)計(jì)算的支持和強(qiáng)大的函數(shù)式編程接口[2]。國(guó)外學(xué)者已經(jīng)在 Spark平臺(tái)用使用機(jī)器學(xué)習(xí)算法KMM檢測(cè)網(wǎng)絡(luò)流量異常,而且檢測(cè)效果較好[3]。但是聚類算法在檢測(cè)網(wǎng)絡(luò)流量異常檢測(cè)時(shí),仍然存在對(duì)分類數(shù)K值和初始化中心缺乏有效機(jī)制保證的缺陷。針對(duì)這個(gè)問(wèn)題,無(wú)論是在非Spark還是Spark平臺(tái)上,有國(guó)內(nèi)學(xué)者提出改進(jìn)KMM,實(shí)驗(yàn)證明檢測(cè)效果很好[4-7],但是在Spark平臺(tái)上研究網(wǎng)絡(luò)流量異常的較少,尤其是對(duì)各種聚類方法檢檢測(cè)效果的對(duì)比研究。
因此,本文提出在Spark平臺(tái)上利用各種常見(jiàn)的聚類模型進(jìn)行網(wǎng)絡(luò)流量異常檢測(cè),對(duì)比k-means++、BisectingKMeans的測(cè)試效果進(jìn)行比較,找到更適合網(wǎng)絡(luò)流量異常檢測(cè)的方法,為有效分析網(wǎng)絡(luò)海量數(shù)據(jù)提供一條有力的解決途徑。
1.1 網(wǎng)絡(luò)流量檢測(cè)技術(shù)的現(xiàn)狀
目前,基于機(jī)器學(xué)習(xí)算法的網(wǎng)絡(luò)流量異常檢測(cè)方法分為監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí)。其中,有監(jiān)督學(xué)習(xí)網(wǎng)絡(luò)流量異常檢測(cè)方法首先需要使用監(jiān)督學(xué)習(xí)機(jī)器學(xué)習(xí)算法先對(duì)帶有特征值的訓(xùn)練樣本進(jìn)行訓(xùn)練得到一個(gè)預(yù)測(cè)值,然后把預(yù)測(cè)值和實(shí)際的流量類型進(jìn)行對(duì)比,最后用調(diào)試好參數(shù)的模型去檢測(cè)新接受的網(wǎng)絡(luò)數(shù)據(jù),判斷其是正常數(shù)據(jù),還是異常數(shù)據(jù)。但需要有已知類型的訓(xùn)練樣本[8],而且是不能檢測(cè)未知類型的數(shù)據(jù),實(shí)時(shí)性檢測(cè)效果差。有監(jiān)督學(xué)習(xí)網(wǎng)絡(luò)流量異常檢測(cè)方法直接對(duì)帶有特征值的訓(xùn)練數(shù)據(jù)進(jìn)行分析,調(diào)試好參數(shù),就可以用于檢測(cè)新的接受網(wǎng)絡(luò)數(shù)據(jù),得出所屬類型,檢測(cè)效果很好[9-10],但是算法復(fù)雜度高[11]。半監(jiān)督學(xué)習(xí)把監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)進(jìn)行結(jié)合,在預(yù)測(cè)精度和需要已知類型的樣本之間取得了很好的折中[12]。
1.2 聚類方法
聚類方法,是數(shù)據(jù)進(jìn)行分類,讓所有類似的數(shù)據(jù)在一簇,它是一種無(wú)監(jiān)督的學(xué)習(xí)方法。常見(jiàn)的聚類算法主要包括 K-均值聚類、模糊 K-均值、層次聚類(凝聚聚類和分列式聚類)等。在聚類方法中,初始質(zhì)心得選擇和質(zhì)心的數(shù)量是找到一個(gè)最優(yōu)模型的關(guān)鍵。如果它們的值初始化或選擇不恰當(dāng),會(huì)造成聚類局部最優(yōu),不能找到最有參數(shù),造成預(yù)測(cè)效果差。因此,研究聚類方法的質(zhì)心及其數(shù)量就成為重點(diǎn)、難點(diǎn)。
Zhang Tian 等[13]提出了一種Canopy-Kmeans 算法,在K-均值聚類算法執(zhí)行之前,先執(zhí)行 Canopy 算法預(yù)處理。后面還有很多學(xué)者也展開(kāi)了相關(guān)研究,然而,都并沒(méi)有從根本上解決初始選值的問(wèn)題。尤其是隨著大數(shù)據(jù)時(shí)代的到來(lái),單一的節(jié)點(diǎn)已經(jīng)無(wú)法處理海量數(shù)據(jù),需要能夠高效、簡(jiǎn)單的能夠在集群上并行運(yùn)行的算法。
1.3 大數(shù)據(jù)分布式計(jì)算模型
為了應(yīng)付爆炸式增長(zhǎng)數(shù)據(jù)的有效分析,研究者提出了兩種基本的大數(shù)據(jù)分析開(kāi)源計(jì)算模型:Hadoop 和Spark。Hadoop,它是受2003年至2006年Googl公司的GFS、MapReduce、Big Table的啟發(fā)而開(kāi)發(fā)了三大神器:滿足海量數(shù)據(jù)訪問(wèn)和存儲(chǔ)的分布式文件系統(tǒng)(HDFS)、高效和并行的計(jì)算機(jī)編程模型(MapReduce)、支持海量數(shù)據(jù)管理的Hase,能夠滿足分布式存儲(chǔ)、訪問(wèn)、分析、檢索大容量數(shù)據(jù)的要求,但是對(duì)數(shù)據(jù)科學(xué)家來(lái)說(shuō),存在不能滿足數(shù)據(jù)緩存和支持迭代算法的要求。2009年,Spark 由加州大學(xué)伯克利分校AMPLab 實(shí)驗(yàn)室開(kāi)發(fā),是對(duì)Hadoop強(qiáng)有力的補(bǔ)充,可以在YARN(Hadoop2)所支持的MapReduce上運(yùn)行,還可以與其他開(kāi)源Mesos,EC2平臺(tái)集成。Spark 是用Scala 語(yǔ)言實(shí)現(xiàn)的,但是開(kāi)發(fā)接口語(yǔ)言不一定是scala語(yǔ)言,還可以是Python、R、Java語(yǔ)言。Spark 設(shè)計(jì)理念與核心基于RDD(Resilient Distributed Dataset)和采用有向無(wú)環(huán)圖的任務(wù)調(diào)度機(jī)制,可以讓中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark 能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的算法[14-16]。
1.4 基于Spark的聚類方法
在 Spark 平臺(tái)上實(shí)現(xiàn)的聚類方法有 K-means、GaussianMixture、BisectingKMeans、LDA。其中在網(wǎng)絡(luò)流量檢測(cè)方面應(yīng)用的方法主要有K-means、BisectingKMeans。K-means聚類是一種非常經(jīng)典的挖掘算法,BisectingKMeans是一種結(jié)構(gòu)化的聚類方法,但是都具有初始值不穩(wěn)定,容易陷入局部最優(yōu)的缺點(diǎn)。
1.4.1 k-means++算法流程
(1)首先隨機(jī)初始化K個(gè)聚類中心;
(2)計(jì)算所有樣本距離K個(gè)聚類中心的歐式距離;
(3)每個(gè)樣本比較距離K個(gè)聚類中心的歐式距離,找到最小距離后,將其歸納到距離這個(gè)樣本最小的聚類中心;
(4)計(jì)算每個(gè)聚類樣本距離該聚類中心距離的平均值,調(diào)整聚類中心;
(5)迭代處理(2)~(4),一直到每個(gè)聚類中心不再調(diào)整,或者該聚類的平均距離小于某個(gè)閾值。
1.4.2 BisectingKMeans
(1)所有樣本自稱為一簇;
(2)然后WCSS下降最快的點(diǎn)劃分為兩個(gè)簇;
(3)重復(fù)(1)、(2)、(3),一直到簇的數(shù)和K值相等。
1.5 評(píng)價(jià)指標(biāo)
聚類模型性能的評(píng)價(jià)指標(biāo)分為內(nèi)部指標(biāo)和外部指標(biāo)。內(nèi)部指標(biāo)是以歐式距離、馬氏距離等為依據(jù),Spark平臺(tái)上實(shí)現(xiàn)了歐式距離,名稱為聚類的方差和(WCSS),找到最小值也就知道了最佳模型。外部指標(biāo)有F-measure、Rand measure等,但是需要訓(xùn)練的數(shù)據(jù)帶有標(biāo)簽才能計(jì)算。本實(shí)驗(yàn)采用WCSS對(duì)聚類的效果進(jìn)行評(píng)價(jià),然后找到合適的K值。
2.1 實(shí)驗(yàn)環(huán)境與實(shí)驗(yàn)數(shù)據(jù)
本實(shí)驗(yàn)采用虛擬機(jī)上安裝 ubuntuserver16.10,并安裝了必須Java8、Hadoop2.7、Spark2.10搭建Spark 計(jì)算集群平臺(tái),具體配置見(jiàn)表:
表1 集群的配置情況
本實(shí)驗(yàn)數(shù)據(jù)采用Kaggle大賽的用于網(wǎng)絡(luò)入侵的數(shù)據(jù),每條數(shù)據(jù)記錄了信息發(fā)送的字節(jié)數(shù)、登錄次數(shù)等屬性。共有38特征,有489.8多萬(wàn)個(gè)樣本[3]。 通過(guò)查準(zhǔn)率、誤差平方對(duì)三種不同聚類方法的檢測(cè)效果進(jìn)行對(duì)比試驗(yàn)。為了讓實(shí)驗(yàn)結(jié)果更加的可信,需要對(duì)數(shù)據(jù)的特征進(jìn)行規(guī)范化??梢岳胏omputeColumnSummaryStatisticsh函數(shù)統(tǒng)計(jì),信息如下:
(1)平均值
[48.342430463958564,1834.6211752293812,1093.6228137132 127,……,0.057659413800050824]
(2)方差值
[523206.01584971714,8.862924680175377E11,4.16040910679 9707E11,5.716084530911116E-6,……,0.0533507023089224]
從上面顯示的結(jié)果,無(wú)論是平均值還是方差都能夠發(fā)現(xiàn)了存在離群點(diǎn),它會(huì)影響聚類檢測(cè)的效果,因此需要?dú)w一化處理。
2.2 聚類效果實(shí)驗(yàn)
在spark平臺(tái)上運(yùn)用k-means++、BisectingKMeans對(duì)數(shù)據(jù)處理。對(duì)比最優(yōu)的K值及其檢測(cè)效果。
(1)K的比較(WCSS的值縮小為原來(lái)的萬(wàn)分之一)
圖1 K和WCSS的關(guān)系圖
WCSS的值是選擇合適K值得依據(jù)。它的值越小,聚類的效果就越好。從圖1可知,Kmeans++算法合適的 K值是 40,而BisetingKMeans算法合適的K值是100。
(2)檢測(cè)效果比較
用708M數(shù)據(jù)對(duì)KMeans++和BisetingKMeans進(jìn)行訓(xùn)練后,找到最有K值,然后預(yù)測(cè)每個(gè)數(shù)據(jù)是正常數(shù)據(jù)還是異常數(shù)據(jù)。把數(shù)據(jù)帶有的標(biāo)簽和預(yù)測(cè)值相比較,統(tǒng)計(jì)效果,包括檢測(cè)率(檢測(cè)到的攻擊數(shù)據(jù)占所有攻擊數(shù)據(jù)的比重)和誤警率(檢測(cè)為攻擊的正常數(shù)據(jù)占所有正常數(shù)據(jù)的比重)。具體檢測(cè)情況如下表。
表2 檢測(cè)效果比較
由表2可知,KMean++采用兩種不同的區(qū)分?jǐn)?shù)據(jù)正常和異常的標(biāo)準(zhǔn)。檢測(cè)率達(dá)到了 99.94%,是采用常用的區(qū)別標(biāo)準(zhǔn),直接根據(jù)數(shù)據(jù)所在聚類的類別來(lái)劃分,簡(jiǎn)單但是誤警率高,達(dá)到24.90%。采用閾值的標(biāo)準(zhǔn),如果某個(gè)點(diǎn)到所屬聚類的距離超過(guò)了確定的第110點(diǎn)距離聚類的距離(先按照距離排序),則判為異常數(shù)據(jù)。測(cè)試效果的誤警率降低到13.2%,但是檢測(cè)率也下降了。BisetingKMeans 也采用第二種標(biāo)準(zhǔn)。KMean++在Spark平臺(tái)上的檢查效果要比BisetingKMeans好,誤警率較大,達(dá)到了13.2%。而且在實(shí)驗(yàn)過(guò)程中,BisetingKMeans訓(xùn)練的時(shí)間特別長(zhǎng),不適合在線分析。
本文提出在Spark平臺(tái)上利用聚類模型來(lái)進(jìn)行網(wǎng)絡(luò)流量異常檢測(cè),對(duì)比k-means++、BisectingKMeans的測(cè)試效果進(jìn)行比較,找到更適合網(wǎng)絡(luò)流量異常檢測(cè)的方法,在一定程度上提升了應(yīng)付網(wǎng)絡(luò)攻擊的能力。但是,本次實(shí)驗(yàn)的結(jié)果是只分類正常數(shù)據(jù)和異常數(shù)據(jù)兩類,沒(méi)有針對(duì)攻擊類型分類檢測(cè),而且采用數(shù)據(jù)的是離線數(shù)據(jù),缺乏實(shí)時(shí)性,下一步研究的主要方向?yàn)椋赫{(diào)試聚類參數(shù)、修改聚類算法或者借助SparkStreaming完成基于聚類的網(wǎng)絡(luò)流量異常的在線分析等。
[1]唐振坤.基于Spark的機(jī)器學(xué)習(xí)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].廈門大學(xué),2014.
[2]蔡立宇,黃章帥,周濟(jì)民譯,(南非)Nick Pentreath著.Spark機(jī)器學(xué)習(xí)[M].北京:人民郵電出版社,2016.
[3]Sandy Ryza,UrilLaserson,SeanOwen,Josh Wills著.Spark高級(jí)數(shù)據(jù)分析.龔少成譯[M].北京:人民郵電出版社,2016.
[4]張佃倫.基于粗糙集的聚類算法及其在入侵檢測(cè)中的應(yīng)用[D].青島科技大學(xué),2015.
[5]吳哲夫, 張彤, 肖鷹. 基于 Spark平臺(tái)的 K-means聚類算法改進(jìn)及并行化實(shí)現(xiàn)[J]. 互聯(lián)網(wǎng)天地, 2016(1):44-50.
[6]李淋淋, 倪建成, 于蘋蘋.一種基于聚類和 Spark框架的加權(quán)Slope One算法[J].計(jì)算機(jī)應(yīng)用, 2017.
[7]張波. 基于Spark的K-means算法的并行化實(shí)現(xiàn)與優(yōu)化[D].華中科技大學(xué), 2015.
[8]陳曉,趙晶玲.大數(shù)據(jù)處理中混合型聚類算法的研究與實(shí)現(xiàn)[J].信息網(wǎng)絡(luò)安全,2015.
[9]黃俊,韓玲莉,陳光平.基于無(wú)指導(dǎo)離群點(diǎn)檢測(cè)的網(wǎng)絡(luò)入侵檢測(cè)技術(shù)[J].小型微型計(jì)算機(jī)系統(tǒng),2007.
[10]蔣盛益,李慶華.無(wú)指導(dǎo)的入侵檢測(cè)方法[J].計(jì)算機(jī)工程,2005.
[11]李錦玲,汪斌強(qiáng).基于最大頻繁序列模式挖掘的App-DDoS 攻擊的異常檢測(cè)[J].電子與信息學(xué)報(bào),2013.
[12]陸悠,李偉,羅軍舟.一種基于選擇性協(xié)同學(xué)習(xí)的網(wǎng)絡(luò)用戶異常行為檢測(cè)方法[J].計(jì)算機(jī)學(xué)報(bào),2014.
[13]ZHANGT,RAMAKRISHNANR,LIVNYM. BIRCH:an efficient dataclustering method for very large databases[C]// ACM Sigmod Record. 1996.
[14]孫科.基于 Spark 的機(jī)器學(xué)習(xí)應(yīng)用框架研究與實(shí)現(xiàn)[D].上海:上海交通大學(xué),2015.
[15]尹緒森.Spark與 MLlib: 當(dāng)機(jī)器學(xué)習(xí)遇見(jiàn)分布式系統(tǒng)[J].程序員,2014.
[16]陳虹君.基于 Spark 框架的聚類算法研究[J].電腦知識(shí)與技術(shù),2015.
海南省教育科學(xué)規(guī)劃課題成果(QJY13516047):基于大數(shù)據(jù)的個(gè)性化學(xué)習(xí)模式構(gòu)建及實(shí)證研究;海南省教育廳科研項(xiàng)目(Hnky2015-55):面向多媒體的高速率無(wú)線傳輸技術(shù)研究;三亞市院地科技合作項(xiàng)目(2015YD11):基于非連續(xù)的寬頻譜無(wú)線網(wǎng)絡(luò)傳輸技術(shù)研究。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2017年5期