




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SparkMLlib
——功能強(qiáng)大的算法庫互聯(lián)網(wǎng)的蓬勃發(fā)展為人們的工作和生活提供了極大便利,但隨著現(xiàn)代化網(wǎng)絡(luò)應(yīng)用的普及,導(dǎo)致網(wǎng)絡(luò)不安全的因素也越來越多,這對(duì)網(wǎng)絡(luò)信息安全構(gòu)成了嚴(yán)峻的挑戰(zhàn)。傳統(tǒng)的網(wǎng)絡(luò)安全技術(shù)已經(jīng)很難應(yīng)對(duì)日益嚴(yán)重的網(wǎng)絡(luò)安全威脅,但網(wǎng)絡(luò)不是法外之地,因此,開發(fā)專門的網(wǎng)絡(luò)安全檢測(cè)工具以避免不安全因素的攻擊是非常有必要的。如今的網(wǎng)絡(luò)攻擊手段大致分為4種類型,分別為DoS攻擊、Probing掃描攻擊、R2L攻擊和U2R攻擊。任務(wù)背景攻擊類型攻擊方式說明DoS攻擊拒絕服務(wù)攻擊,即攻擊者想辦法讓目標(biāo)主機(jī)無法繼續(xù)對(duì)外提供服務(wù)。究其根本,這是網(wǎng)絡(luò)協(xié)議本身的安全缺陷造成的。攻擊方式主要是對(duì)目標(biāo)主機(jī)發(fā)送大量無用或畸形數(shù)據(jù)、利用TCP連接三次握手原理的缺陷等方式,浪費(fèi)目標(biāo)主機(jī)系統(tǒng)資源,直至其死機(jī)或系統(tǒng)崩潰。包括SYNFlood、Smurf、PingofDeath、Teardrop以及DDoS等Probing掃描攻擊通過利用正常網(wǎng)絡(luò)的連線行為,搜索目標(biāo)主機(jī)的安全弱點(diǎn),非法取得權(quán)限R2L攻擊來自遠(yuǎn)程主機(jī)的未授權(quán)訪問攻擊,在這種情況下,攻擊者采用遠(yuǎn)程攻擊的方式獲得目標(biāo)對(duì)象訪問權(quán)限U2R攻擊未授權(quán)的本地root用戶特權(quán)訪問,是指攻擊者在獲得用戶權(quán)限的情況下,利用操作系統(tǒng)的漏洞以獲取更高權(quán)限在某一局域網(wǎng)內(nèi),記錄了不同用戶類型、網(wǎng)絡(luò)流量和攻擊手段的網(wǎng)絡(luò)監(jiān)測(cè)數(shù)據(jù),數(shù)據(jù)共包含31個(gè)數(shù)據(jù)字段。任務(wù)背景字段名稱說明duration連接持續(xù)時(shí)間,以秒為單位。范圍是[0,58329]。它的定義是從TCP連接以三次握手建立算起,至FIN/ACK連接結(jié)束為止的時(shí)間。若協(xié)議為UDP,則將每個(gè)UDP數(shù)據(jù)包作為一條連接protocol_type協(xié)議類型,共有3種,即TCP、UDP、ICMPflag連接正?;蝈e(cuò)誤的狀態(tài),共11種src_bytes從源主機(jī)到目標(biāo)主機(jī)的數(shù)據(jù)的字節(jié)數(shù),范圍是[0,1379963888]dst_bytes從目標(biāo)主機(jī)到源主機(jī)的數(shù)據(jù)的字節(jié)數(shù),范圍是[0,1309937401]land若連接來自(或送達(dá))同一個(gè)主機(jī)或端口則為1,否則為0wrong_fragment錯(cuò)誤分段的數(shù)量,范圍是[0,3]urgent加急包的個(gè)數(shù),范圍是[0,14]hot訪問系統(tǒng)敏感文件和目錄的次數(shù),范圍是[0,101]num_failed_logins登錄嘗試失敗的次數(shù),范圍是[0,5]logged_in成功登錄則為1,否則為0num_compromised受威脅次數(shù),范圍是[0,7479]root_shell是否獲得root用戶權(quán)限,若是則為1,否則為0su_attempted若出現(xiàn)“suroot”命令則為1,否則為0num_rootroot用戶訪問次數(shù),范圍是[0,7468]num_file_creations文件創(chuàng)建操作的次數(shù),范圍是[0,100](續(xù)表)任務(wù)背景字段名稱說明num_shells使用Shell命令的次數(shù),范圍是[0,5]num_access_files訪問控制文件的次數(shù),范圍是[0,9]is_hot_login登錄用戶是否為常用用戶,若是則為1,否則為0is_guest_login登錄方式是否為客戶端登錄,若是則為1,否則為0count過去兩秒內(nèi),與當(dāng)前連接具有相同的目標(biāo)主機(jī)的連接數(shù),范圍是[0,511]srv_count過去兩秒內(nèi),與當(dāng)前連接具有相同服務(wù)的連接數(shù),范圍是[0,511]serror_rate過去兩秒內(nèi),在與當(dāng)前連接具有相同目標(biāo)主機(jī)的連接中,出現(xiàn)“SYN”錯(cuò)誤的連接的比例,范圍是[0.00,1.00]srv_serror_rate過去兩秒內(nèi),在與當(dāng)前連接具有相同服務(wù)的連接中,出現(xiàn)“SYN”錯(cuò)誤的連接的比例,范圍是[0.00,1.00]rerror_rate過去兩秒內(nèi),在與當(dāng)前連接具有相同目標(biāo)主機(jī)的連接中,出現(xiàn)“REJ”錯(cuò)誤的連接的比例,范圍是[0.00,1.00]srv_rerror_rate過去兩秒內(nèi),在與當(dāng)前連接具有相同服務(wù)的連接中,出現(xiàn)“REJ”錯(cuò)誤的連接的比例,范圍是[0.00,1.00]same_srv_rate過去兩秒內(nèi),在與當(dāng)前連接具有相同目標(biāo)主機(jī)的連接中,與當(dāng)前連接具有相同服務(wù)的連接的比例,范圍是[0.00,1.00]diff_srv_rate過去兩秒內(nèi),在與當(dāng)前連接具有相同目標(biāo)主機(jī)的連接中,與當(dāng)前連接具有不同服務(wù)的連接的比例,范圍是[0.00,1.00]srv_diff_host_rate過去兩秒內(nèi),在與當(dāng)前連接具有相同服務(wù)的連接中,與當(dāng)前連接具有不同目標(biāo)主機(jī)的連接的比例,范圍是[0.00,1.00]label包含1種正常的標(biāo)識(shí)“normal”和其他22種網(wǎng)絡(luò)攻擊方式標(biāo)識(shí)attack_type根據(jù)label列將網(wǎng)絡(luò)數(shù)據(jù)劃分為5種類型,分別為正常標(biāo)簽Normal和4種常見的網(wǎng)絡(luò)攻擊類型網(wǎng)絡(luò)安全檢測(cè)如果靠人工來進(jìn)行,需要耗費(fèi)大量的時(shí)間與精力,考慮到網(wǎng)絡(luò)監(jiān)測(cè)數(shù)據(jù)的數(shù)據(jù)量,本章將使用SparkMLlib建立分類模型以識(shí)別網(wǎng)絡(luò)攻擊類型。本章任務(wù)如下。首先介紹機(jī)器學(xué)習(xí)的概念及常見的機(jī)器學(xué)習(xí)算法;然后展開對(duì)SparkMLlib的介紹,包括MLlib的基本概念、發(fā)展歷史、常用算法和算法包的使用、模型評(píng)估方法的調(diào)用;最后結(jié)合網(wǎng)絡(luò)監(jiān)測(cè)數(shù)據(jù)實(shí)例,在IntelliJIDEA中使用SparkMLlib實(shí)現(xiàn)網(wǎng)絡(luò)攻擊類型的識(shí)別。任務(wù)背景1使用決策樹算法實(shí)現(xiàn)網(wǎng)絡(luò)攻擊類型識(shí)別目錄了解MLlib算法庫2SparkMLlib是Spark提供的一個(gè)機(jī)器學(xué)習(xí)算法庫,包含一些機(jī)器學(xué)習(xí)常用的算法和處理工具。本節(jié)的任務(wù)如下。對(duì)機(jī)器學(xué)習(xí)的相關(guān)概念進(jìn)行簡(jiǎn)單介紹;再介紹SparkMLlib的概念及其發(fā)展歷史;結(jié)合Spark安裝包中提供的示例數(shù)據(jù),對(duì)MLlib中的算法與算法包進(jìn)行基本的調(diào)用。任務(wù)描述機(jī)器學(xué)習(xí)就是讓機(jī)器能像人一樣有學(xué)習(xí)、理解、認(rèn)識(shí)的能力。試想,如果計(jì)算機(jī)能夠?qū)Υ罅康陌┌Y治療記錄進(jìn)行歸納和總結(jié),并能夠給醫(yī)生提出適當(dāng)?shù)慕ㄗh,對(duì)于病人的康復(fù)將有重大意義。機(jī)器學(xué)習(xí)是一門人工智能的科學(xué),該領(lǐng)域的主要研究對(duì)象是人工智能,特別是如何在經(jīng)驗(yàn)學(xué)習(xí)中改善具體算法的性能。機(jī)器學(xué)習(xí)的過程就是通過計(jì)算機(jī)使算法模型利用輸入數(shù)據(jù)的規(guī)律或以往經(jīng)驗(yàn)進(jìn)行學(xué)習(xí),并對(duì)模型進(jìn)行評(píng)估,評(píng)估的性能如果達(dá)到要求就拿這個(gè)模型來測(cè)試其他的數(shù)據(jù),如果達(dá)不到要求就要調(diào)整算法來重新建立模型,再次進(jìn)行評(píng)估,如此循環(huán)往復(fù),最終獲得滿意的經(jīng)驗(yàn)來處理其他的數(shù)據(jù)。了解機(jī)器學(xué)習(xí)算法1.機(jī)器學(xué)習(xí)概念機(jī)器學(xué)習(xí)可以分為監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)3種。監(jiān)督學(xué)習(xí)就是給出的訓(xùn)練數(shù)據(jù)集是有標(biāo)簽的,已經(jīng)能夠確定所給數(shù)據(jù)集的類別。半監(jiān)督學(xué)習(xí)針對(duì)的問題是數(shù)據(jù)量超級(jí)大但是標(biāo)簽數(shù)據(jù)很少或者標(biāo)簽數(shù)據(jù)不易獲取的情況。無監(jiān)督學(xué)習(xí)與監(jiān)督學(xué)習(xí)相反,訓(xùn)練數(shù)據(jù)完全沒有標(biāo)簽,只能依靠數(shù)據(jù)間的相似性分類,例如廣泛使用的K-Means算法.了解機(jī)器學(xué)習(xí)算法回歸算法線性回歸:根據(jù)已有數(shù)據(jù)擬合曲線,常采用的方法是最小二乘法。邏輯回歸:一種與線性回歸非常類似的算法,但是線性回歸處理的是數(shù)值問題,而邏輯回歸屬于分類算法,預(yù)測(cè)結(jié)果是離散的分類。分類算法:有監(jiān)督學(xué)習(xí)的方法。分類算法是通過有類別的訓(xùn)練數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練和評(píng)估,再根據(jù)評(píng)估后的模型對(duì)未知類別數(shù)據(jù)進(jìn)行分類。主要有KNN算法、樸素貝葉斯算法、SVM支持向量機(jī)、邏輯回歸、決策樹、隨機(jī)森林等。了解機(jī)器學(xué)習(xí)算法機(jī)器學(xué)習(xí)常用的算法聚類算法:聚類是一種無監(jiān)督學(xué)習(xí)算法,用于將對(duì)象分到高度相似的類中。常用的聚類方法有KMeans聚類、層次聚類,比較少見的有SOM聚類算法、FCM聚類算法,F(xiàn)CM算法是一種以隸屬度來確定每個(gè)數(shù)據(jù)點(diǎn)屬于某個(gè)聚類程度的算法。推薦算法:推薦算法的主要特征就是可以自動(dòng)向用戶推薦他們最感興趣的東西,從而增加購買率,提升效益。協(xié)同過濾推薦算法:有基于用戶和基于內(nèi)容兩種。關(guān)聯(lián)規(guī)則的算法:將滿足支持度與置信度的共同購買的商品推薦給買了其中一種或幾種的用戶。降維算法:主要作用是壓縮數(shù)據(jù)與提升機(jī)器學(xué)習(xí)其他算法的效率。通過降維算法,可以將具有幾千個(gè)特征的數(shù)據(jù)壓縮至若干個(gè)特征。降維算法的主要代表是PCA算法(即主成分分析算法)。了解機(jī)器學(xué)習(xí)算法MLlib是Spark的機(jī)器學(xué)習(xí)(ML)庫,旨在簡(jiǎn)化機(jī)器學(xué)習(xí)的工程實(shí)踐工作,并方便擴(kuò)展到更大規(guī)模,同時(shí)利用Spark分布式處理來實(shí)現(xiàn)模型,處理大數(shù)據(jù)全量數(shù)據(jù)的迭代計(jì)算。MLlib由一些通用的學(xué)習(xí)算法和工具組成,包括分類、回歸、聚類、協(xié)同過濾、降維等,同時(shí)還包括底層的優(yōu)化原語和高層的管道API。使用MLlib1.MLlib簡(jiǎn)介MLlib由一些通用的機(jī)器學(xué)習(xí)算法和工具組成,主要包括以下內(nèi)容。算法工具:常用的學(xué)習(xí)算法,如分類、回歸、聚類和協(xié)同過濾。特征化工具:特征提取、轉(zhuǎn)化、降維,和選擇工具。管道(Pipeline):用于構(gòu)建、評(píng)估和調(diào)整機(jī)器學(xué)習(xí)管道的工具。持久性:保存和加載算法、模型和管道。實(shí)用工具:線性代數(shù)、統(tǒng)計(jì)、數(shù)據(jù)處理等工具。使用MLlibSparkMLlib歷史比較長(zhǎng),在1.0以前的版本即已經(jīng)包含了,提供的算法實(shí)現(xiàn)都是基于原始的RDD。主要有以下幾個(gè)發(fā)展過程。0.8版本時(shí),MLlib算法包被加入Spark,但是只支持Java和Scala兩種語言。1.0版本時(shí),SparkMLlib才可以支持Python語言。使用MLlib2.MLlib發(fā)展歷史1.2版本開始Spark機(jī)器學(xué)習(xí)庫被分為以下兩個(gè)包。spark.mllib包,包含基于RDD的算法API。spark.ml包,提供了基于DataFrame的算法API,可以用于構(gòu)建機(jī)器學(xué)習(xí)工作流。管道彌補(bǔ)了原始MLlib庫的不足,向用戶提供了一個(gè)基于DataFrame的機(jī)器學(xué)習(xí)工作流式API套件。1.2以后的版本,對(duì)MLlib中的算法不斷的增加和改進(jìn)。從Spark2.0開始,基于RDD的API進(jìn)入維護(hù)模式(即不增加任何新的特性),并預(yù)期于3.0版本的時(shí)候被移除出MLlib。使用MLlib(1)數(shù)據(jù)類型使用MLlib3.算法與算法包數(shù)據(jù)類型描述Vector數(shù)據(jù)向量,包括稀疏向量和稠密向量。稠密向量存儲(chǔ)向量每一個(gè)值。稀疏向量存儲(chǔ)非0向量,由兩個(gè)并行數(shù)組支持,即索引數(shù)組和值數(shù)組。在使用算法包時(shí),很多算法都要求將數(shù)據(jù)轉(zhuǎn)化為向量,Vector向量數(shù)據(jù)類型可以由mllib.linalg.Vectors創(chuàng)建LabeledPoint監(jiān)督學(xué)習(xí)算法的數(shù)據(jù)對(duì)象,用于表示帶標(biāo)簽的數(shù)據(jù),包含兩個(gè)部分:第一個(gè)部分為數(shù)據(jù)的類別標(biāo)簽label,由一個(gè)浮點(diǎn)數(shù)表示;第二個(gè)部分是一個(gè)特征向量feature,向量通常是Vector向量數(shù)據(jù)類型,向量中的值是Double類型。LabeledPoint數(shù)據(jù)類型存放在mllib.regression中。對(duì)于二類分類,標(biāo)簽應(yīng)該是0(負(fù))或1(正)。對(duì)于多分類,標(biāo)簽是從0開始的索引,即0、1、2等Rating對(duì)產(chǎn)品的評(píng)分,用于ALS推薦算法。ALS協(xié)同過濾推薦算法所使用的類型,存放在mllib.recommendation中,包括用戶ID、商品ID和rating(評(píng)分)3個(gè)部分,用戶ID和商品ID要求為Int類型數(shù)據(jù)(2)特征提取mllib.feature中提供了一些常見的特征轉(zhuǎn)化方法,主要用于特征向量化、相關(guān)系數(shù)計(jì)算和數(shù)據(jù)標(biāo)準(zhǔn)化,通過調(diào)用不同算法實(shí)現(xiàn)。TF-IDF:種將文檔轉(zhuǎn)化成向量表示的方法。TF指的是詞頻,即該詞在文檔中出現(xiàn)的次數(shù),IDF是逆文檔概率,是詞在文檔集中出現(xiàn)的概率,它們的乘積表示該詞在文檔中的重要程度。HashingTF:從一個(gè)文檔中計(jì)算出給定大小的詞頻向量,并且通過哈希法排列詞向量的順序,使詞與向量能一一對(duì)應(yīng)。IDF:計(jì)算逆文檔頻率,需要IDF對(duì)象調(diào)用fit()方法來獲取一個(gè)IDFModel,表示語料庫的逆文檔頻率。然后再通過transform()把TF向量轉(zhuǎn)為IDF向量。使用MLlibtf-idf.txt數(shù)據(jù)一行表示一個(gè)文檔,要求將文檔轉(zhuǎn)換成向量表示。導(dǎo)入相關(guān)包讀取數(shù)據(jù)分割成單詞并序列化對(duì)每一個(gè)句子(詞袋),使用HashingTF將句子轉(zhuǎn)換為特征向量使用MLlib將文檔轉(zhuǎn)換成向量表示使用IDF重新調(diào)整特征向量,得到文檔轉(zhuǎn)化后的特征向量查看結(jié)果使用MLlibWord2VecWord2Vec是NLP領(lǐng)域的重要算法,它的功能是將每個(gè)word用K維的稠密向量來表達(dá),訓(xùn)練集是語料庫,不含標(biāo)點(diǎn),以空格斷句。通過訓(xùn)練將每個(gè)詞映射成K維實(shí)數(shù)向量(K一般為模型中的超參數(shù)),通過詞之間的距離(比如余弦相似度、歐氏距離等)來判斷它們之間的語義相似度。每一個(gè)文檔都表示為一個(gè)單詞序列,所以一個(gè)含有M個(gè)單詞的文檔由M個(gè)K維向量組成。mllib.feature中有Word2Vec算法包,輸入數(shù)據(jù)為String類型的可迭代對(duì)象。使用MLlib對(duì)w2v數(shù)據(jù)進(jìn)行轉(zhuǎn)換使用MLlib對(duì)w2v數(shù)據(jù)進(jìn)行轉(zhuǎn)換使用MLlib統(tǒng)計(jì)最大值、最小值、平均值、方差和相關(guān)系數(shù)MLlib通過mllib.stat.Statistics類中的方法提供了幾種廣泛使用的統(tǒng)計(jì)函數(shù),這些函數(shù)可以直接在RDD上使用,如下表。使用MLlib方法描述max()/min()最大值/最小值mean()均值variance()方差normL1()/normL2()L1范數(shù)/L2范數(shù)Statistics.corr(rdd,method)相關(guān)系數(shù),method可選pearson(皮爾森相關(guān)算法)或spearman(斯皮爾曼相關(guān)算法)Statistics.corr(rdd1,rdd2,method)計(jì)算兩個(gè)由浮點(diǎn)值組成的RDD的相關(guān)矩陣,使用pearson或spearman中的一種方法Statistics.chiSqTest(rdd)LabeledPoint對(duì)象的RDD的獨(dú)立性檢驗(yàn)對(duì)數(shù)據(jù)文件stat.txt統(tǒng)計(jì)平均值、方差、相關(guān)系數(shù)使用MLlib數(shù)據(jù)特征處理方法:正則化操作可以使輸入數(shù)據(jù)標(biāo)準(zhǔn)化并提高后期學(xué)習(xí)算法的效果。Spark1.6.3已經(jīng)提供了3種數(shù)據(jù)規(guī)范化的方法,Normalizer、StandardScaler和MinMaxScaler。Normalizer、StandardScaler和MinMaxScaler處理的都是Vector類型的數(shù)據(jù),所以先將數(shù)據(jù)轉(zhuǎn)換成Vector類型,并且調(diào)用ml的類需要將數(shù)據(jù)也轉(zhuǎn)化成DataFrame。使用MLlibNormalizer()Normalizer是一個(gè)轉(zhuǎn)換器,它可以將多行向量輸入轉(zhuǎn)化為統(tǒng)一的形式。Normalizer的作用范圍是每一行,使每一個(gè)行向量的范數(shù)變換為一個(gè)單位范數(shù)。參數(shù)為p(默認(rèn)值:2)來指定正則化中使用的p-norm。使用MLlibStandardScaler()StandardScaler處理的對(duì)象是每一列,也就是每一維特征,將特征標(biāo)準(zhǔn)化為單位標(biāo)準(zhǔn)差或是0均值,或是0均值單位標(biāo)準(zhǔn)差。主要參數(shù)有兩個(gè)withStd:true或者false,默認(rèn)為true。表示是否將數(shù)據(jù)標(biāo)準(zhǔn)化到單位標(biāo)準(zhǔn)差。withMean:true或者false,默認(rèn)為false,表示是否變換為0均值。此種方法將產(chǎn)出一個(gè)稠密輸出,所以不適用于稀疏輸入。使用MLlibStandardScaler需要對(duì)數(shù)據(jù)進(jìn)行建模,獲取每一維的均值和標(biāo)準(zhǔn)差,來縮放每一維特征,如下圖。使用MLlibMinMaxScaler()常用的最大-最小值標(biāo)準(zhǔn)化,MinMaxScaler同樣是針對(duì)每一列(即每一維特征)進(jìn)行處理。將每一維特征線性地映射到指定的區(qū)間,通常是[0,1]。它也有兩個(gè)參數(shù)可以設(shè)置。min:默認(rèn)為0,指定區(qū)間的下限。max:默認(rèn)為1,指定區(qū)間的上限。使用MLlib(3)回歸回歸指研究一組隨機(jī)變量(Y1,Y2,…,Yi)和另一組(X1,X2,…,Xk)變量之間關(guān)系的統(tǒng)計(jì)分析方法,又稱多重回歸分析。通常前者是因變量,后者是自變量?;貧w是一種監(jiān)督學(xué)習(xí)算法,利用已知標(biāo)簽或結(jié)果的訓(xùn)練數(shù)據(jù)來訓(xùn)練模型、預(yù)測(cè)結(jié)果。有監(jiān)督學(xué)習(xí)的算法要求輸入數(shù)據(jù)要使用LabeledPoint類型,其中包含一個(gè)label和一個(gè)數(shù)據(jù)特征向量。使用MLlib回歸線性回歸:線性回歸是最常用的方法之一,通過一組線性組合來預(yù)測(cè)輸出值。MLlib中用于線性回歸算法的包主要有LinearRegressionWithSGD、RidgeRegressionWithSGD和LassoWithSGD,這幾種方法都是采用隨機(jī)梯度下降法求解回歸方程的。邏輯回歸:邏輯回歸是一種二分類的回歸算法,預(yù)測(cè)的值為新點(diǎn)屬于哪個(gè)類的概率,對(duì)于概率大于等于閾值的分到一個(gè)類,小于閾值的分到另一個(gè)類。使用MLlib將lpsa.data文件上傳至HDFS的/tipdm目錄下,調(diào)用線性回歸算法構(gòu)建模型。使用MLlib在MLlib中,邏輯回歸算法的輸入值為L(zhǎng)abeledPoint類型。MLlib有兩個(gè)邏輯回歸的算法包,一個(gè)是LogisticRegressionWithLBFGS,一個(gè)是LogisticRegressionWithSGB。LBFGS的效果要好于SGB,但在早期版本不可用。這些類的參數(shù)與線性回歸的參數(shù)完全一樣。LogisticRegressionWithLBFGS通過train方法可以得到一個(gè)LogisticRegressionModel,對(duì)每個(gè)點(diǎn)的預(yù)測(cè)返回一個(gè)0-1的概率,按照默認(rèn)閾值0.5把該點(diǎn)分配到其中一個(gè)類。閾值的設(shè)定可以采用setThreshold()方法在定義LogisticRegressionWithLBFGS時(shí)設(shè)置,也可以用clearThreshold()方法設(shè)置為不分類直接輸出概率值。默認(rèn)閾值設(shè)置為0.5,但是在數(shù)據(jù)不平衡情況下可以調(diào)整閾值大小。使用MLlib(4)分類分類算法包括支持向量機(jī)、樸素貝葉斯、決策樹、隨機(jī)森林以及邏輯回歸。分類算法是一種有監(jiān)督的學(xué)習(xí)方法,即訓(xùn)練數(shù)據(jù)有明確類別標(biāo)簽。因此分類會(huì)使用MLlib中的LabeledPoint類作為模型數(shù)據(jù)類型樸素貝葉斯:樸素貝葉斯分類是一種十分簡(jiǎn)單的分類算法,樸素貝葉斯思想:對(duì)于給出的特定的features,求解在此項(xiàng)出現(xiàn)條件下各個(gè)類別出現(xiàn)的概率,哪個(gè)概率最大就屬于那個(gè)類別。使用MLlib分類算法支持向量機(jī):支持向量機(jī)是一種通過線性或非線性分割平面的二分類方法,有0或1兩種標(biāo)簽。在MLlib中調(diào)用SVMWithSGD可以實(shí)現(xiàn)算法,位置在mllib.classification.SVMModel中,模型參數(shù)與線性回歸差不多,通過train方法可以返回一個(gè)SVMModel模型,該模型同LogisticRegressionModel模型一樣是通過閾值分類的,所以LogisticRegressionModel設(shè)置閾值的方法和清除閾值的方法都對(duì)它適用,SVMModel模型通過predict可以預(yù)測(cè)點(diǎn)的類別。使用MLlib分類算法決策樹:決策樹是分類和回歸的常用算法,因?yàn)樗菀滋幚眍悇e特征,擴(kuò)展到多分類的問題。MLlib支持二分類和多分類的決策樹。決策樹以節(jié)點(diǎn)樹的形式表示,每個(gè)節(jié)點(diǎn)代表一個(gè)向量,向量的不同特征值會(huì)使節(jié)點(diǎn)有多條指向下個(gè)節(jié)點(diǎn)的邊,最底層的葉子節(jié)點(diǎn)為預(yù)測(cè)的結(jié)果,可以是分類的特征也可以是連續(xù)的特征。每個(gè)節(jié)點(diǎn)的選擇都是遵循某一種使模型更加優(yōu)化的算法,例如基于信息增益最大的方法。使用MLlib(5)聚類聚類是一種無監(jiān)督學(xué)習(xí)的方法,用于將高度相似的數(shù)據(jù)分到一類中。聚類沒有類別標(biāo)簽,僅根據(jù)數(shù)據(jù)相似性進(jìn)行分類,所以通常用于數(shù)據(jù)探索、異常檢測(cè),也用于一般數(shù)據(jù)的分群。聚類的方法有很多,計(jì)算相似度的方法也有很多,K-Means算法是較常使用的一種算法。maxIterations:最大循環(huán)次數(shù),聚類算法的最大迭代次數(shù),默認(rèn)100。nitializationMode:指定初始化聚類中心的方法,“kmeans||”或“random”,“kmeans||”選項(xiàng)在選取初始聚類中心時(shí)會(huì)盡可能地找到K個(gè)距離較遠(yuǎn)的聚類中心,但是代價(jià)會(huì)更大些。run:算法并發(fā)運(yùn)行的數(shù)目,即運(yùn)行KMeans的次數(shù),最終的分類結(jié)果會(huì)綜合所有次數(shù)的返回結(jié)果。使用MLlib轉(zhuǎn)化一個(gè)集合序列為RDD,再由RDD數(shù)據(jù)創(chuàng)建DataFrame數(shù)據(jù),最后將DataFrame數(shù)據(jù)的類型轉(zhuǎn)換成Vector類型。設(shè)置聚類相關(guān)的參數(shù)值和聚類個(gè)數(shù),使用KMeans.train()方法訓(xùn)練數(shù)據(jù)以構(gòu)建模型,最后使用模型的predict()方法預(yù)測(cè)數(shù)據(jù)所屬類別,并計(jì)算模型誤差。使用MLlib(6)關(guān)聯(lián)規(guī)則FP算法作為一個(gè)關(guān)聯(lián)規(guī)則算法,在推薦方法也得到了應(yīng)用。FP算法主要通過大量數(shù)據(jù)的一個(gè)購買歷史來生成頻繁項(xiàng)集,設(shè)置支持度篩選出符合支持度的頻繁項(xiàng)集,根據(jù)頻繁項(xiàng)集生成一些規(guī)則后通過置信度過濾出最有說服力的規(guī)則。通過規(guī)則可以完成推薦、分類等工作。mllib.fpm.FPGrowth是MLlib實(shí)現(xiàn)FP算法的算法包,通過FPGrowth對(duì)象中的run()方法訓(xùn)練模型,找出符合支持度的頻繁項(xiàng)集,再通過模型的generateAssociationRules()方法找出符合置信度的規(guī)則。使用MLlib以餐飲企業(yè)的點(diǎn)餐數(shù)據(jù)為例,調(diào)用FP算法計(jì)算菜品之間的關(guān)聯(lián)性。將點(diǎn)餐數(shù)據(jù)中的事務(wù)數(shù)據(jù)(一種特殊類型的記錄數(shù)據(jù))整理成關(guān)聯(lián)規(guī)則模型所需的數(shù)據(jù)結(jié)構(gòu),從中抽取10個(gè)點(diǎn)餐訂單作為事務(wù)數(shù)據(jù)集。將菜品ID簡(jiǎn)記為字母。提取簡(jiǎn)記后的菜品ID數(shù)據(jù)為menu_orders.txt文件,將menu_orders.txt文件的數(shù)據(jù)作為關(guān)聯(lián)規(guī)則的模型數(shù)據(jù)。將數(shù)據(jù)上傳至HDFS的/tipdm目錄下,調(diào)用FP算法計(jì)算菜品之間的關(guān)聯(lián)規(guī)則。先創(chuàng)建一個(gè)FPGrowth對(duì)象的實(shí)例,設(shè)置支持度,使用run()方法訓(xùn)練模型,得到滿足支持度的頻繁項(xiàng)集,再使用generateAssociationRules()方法找出置信度大于或等于0.8的強(qiáng)關(guān)聯(lián)規(guī)則。使用MLlib(7)推薦目前熱門的推薦算法主要是協(xié)同過濾算法,協(xié)同過濾算法有基于內(nèi)容和基于用戶兩個(gè)方面,主要是根據(jù)用戶歷史記錄和對(duì)商品的評(píng)分記錄,計(jì)算用戶間的相似性,找出最為相似的用戶的購買商品推薦給用戶。MLlib目前有一個(gè)實(shí)現(xiàn)推薦算法的包為ALS,根據(jù)用戶對(duì)各種產(chǎn)品的交互和評(píng)分來推薦新產(chǎn)品,通過最小二乘法來求解模型。ALS在mllib.recommendation.ALS,要求輸入類型為mllib.recommendation.Rating類型的RDD,通過train訓(xùn)練出來的模型對(duì)象為mllib.recommendation.MatrixFactorizationModel。使用MLlibALS有顯示評(píng)分(默認(rèn))和隱式反饋(ALS.trainImplicit()),顯示評(píng)分用戶對(duì)商品有明確評(píng)分,預(yù)測(cè)結(jié)果也是評(píng)分,隱式反饋評(píng)分是用戶和產(chǎn)品的交互置信度,預(yù)測(cè)結(jié)果也是置信度。ALS的模型優(yōu)化參數(shù)有以下幾個(gè)。rank:要使用的特征向量,更大效果更好,但是代價(jià)更大,默認(rèn)為10。iterations:要迭代的次數(shù),默認(rèn)為10。lambda:正則化參數(shù),默認(rèn)0.01。alpha:用來在隱式ALS中計(jì)算置信度的常量,默認(rèn)1.0。使用MLlib讀取ALS示例數(shù)據(jù)并將數(shù)據(jù)轉(zhuǎn)化為Rating類型,設(shè)置模型參數(shù),通過ALS.train的方法訓(xùn)練模型,再通過predict預(yù)測(cè)用戶對(duì)商品的評(píng)分,比較實(shí)際值和預(yù)測(cè)值來計(jì)算模型的誤差。使用MLlibMLlib也考慮到模型評(píng)估的重要性,在mllib.evaluation包中定義了很多函數(shù),主要分布在BinaryClassificationMetrics和MulticlassMetrics等這些類中。使用MLlib4.MLlib中的模型評(píng)估指標(biāo)方法Precision(精確度)metrics.precisionByThresholdRecall(召回率)metrics.recallByThresholdF-measure(F值)metrics.fMeasureByThresholdROC曲線metrics.rocPrecision-Recall曲線metrics.prAreaUnderROCCurve(ROC曲線下的面積)metrics.areaUnderROCAreaUnderPrecision-RecallCurve(Precision-Recall曲線下的面積)metrics.areaUnderPR1使用決策樹算法實(shí)現(xiàn)網(wǎng)絡(luò)攻擊類型識(shí)別目錄了解MLlib算法庫2在上一小節(jié)中已經(jīng)學(xué)習(xí)了MLlib中算法包的使用,利用所學(xué)知識(shí),可以解決實(shí)際的問題。本節(jié)的任務(wù)如下。使用決策樹算法實(shí)現(xiàn)網(wǎng)絡(luò)攻擊類型識(shí)別;根據(jù)帶標(biāo)簽的訓(xùn)練數(shù)據(jù)構(gòu)建一個(gè)多分類模型;根據(jù)分類模型對(duì)測(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè);評(píng)估模型的效果。任務(wù)描述具體實(shí)現(xiàn)思路及步驟如下。導(dǎo)入數(shù)據(jù),進(jìn)行數(shù)據(jù)探索,對(duì)4種攻擊類型特點(diǎn)進(jìn)行分析。對(duì)連續(xù)型數(shù)據(jù)進(jìn)行歸一化處理。構(gòu)建特征數(shù)據(jù),將特征字段合并為Vector類型的數(shù)據(jù)。明確分類算法包中決策樹模型的參數(shù)的含義。將attack_type標(biāo)簽列的類型轉(zhuǎn)換為Int類型,建立分類模型,劃分?jǐn)?shù)據(jù)集。訓(xùn)練數(shù)據(jù)以構(gòu)建分類模型,并進(jìn)行模型評(píng)估,根據(jù)評(píng)估結(jié)果選擇是否需要進(jìn)行模型參數(shù)調(diào)優(yōu)以完善模型。使用分類模型預(yù)測(cè)測(cè)試數(shù)據(jù)類別,并將預(yù)測(cè)結(jié)果輸出至Hive中。分析思路在Hive中創(chuàng)建數(shù)據(jù)庫network,在network數(shù)據(jù)庫中創(chuàng)建network_label_data表,并將data.csv數(shù)據(jù)導(dǎo)入network_label_data表中。探索分析數(shù)據(jù)1.?dāng)?shù)據(jù)存儲(chǔ)探究num_compromised同4種攻擊類型之間的關(guān)系。根據(jù)attack_type字段進(jìn)行分組,查詢5種不同標(biāo)簽下的受威脅次數(shù)的均值。4種網(wǎng)絡(luò)攻擊類型對(duì)應(yīng)的num_compromised的均值如下圖。探索分析數(shù)據(jù)2.受威脅次數(shù)通過groupBy()方法查詢4種網(wǎng)絡(luò)攻擊類型標(biāo)簽下的src_bytes和dts_bytes的比值均值。探索分析數(shù)據(jù)3.上傳流量和下載流量的均值比查詢4種網(wǎng)絡(luò)攻擊類型的標(biāo)簽下,平均訪問敏感文件的次數(shù)。探索分析數(shù)據(jù)4.敏感文件被訪問次數(shù)均值在將多個(gè)數(shù)據(jù)字段轉(zhuǎn)換為Vector類型數(shù)據(jù)時(shí),需要先將需要轉(zhuǎn)換的數(shù)據(jù)字段放入數(shù)組中,再使用SparkMLlib中的VectorAssembler方法將多個(gè)字段合并為Vector類型數(shù)據(jù)。再通過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 股份制企業(yè)合同文書撰寫要點(diǎn)
- 科技創(chuàng)新園區(qū)建設(shè)投資合同
- 物聯(lián)網(wǎng)項(xiàng)目戰(zhàn)略合作協(xié)議
- 商業(yè)價(jià)格保密協(xié)議
- 醫(yī)院與社區(qū)健康服務(wù)合作協(xié)議書
- 農(nóng)業(yè)產(chǎn)業(yè)集群發(fā)展運(yùn)營(yíng)方案
- 委托中介出售房屋協(xié)議
- 綠化場(chǎng)地租賃合同
- 媒體廣告代理協(xié)議書
- 高端消費(fèi)品設(shè)計(jì)合作協(xié)議
- GB/T 4365-2024電工術(shù)語電磁兼容
- 高校體育課程中水上運(yùn)動(dòng)的安全保障措施研究
- 山東省德州市2024-2025學(xué)年高三上學(xué)期1月期末生物試題(有答案)
- 油氣勘探風(fēng)險(xiǎn)控制-洞察分析
- GB 12710-2024焦化安全規(guī)范
- 新《安全生產(chǎn)法》安全培訓(xùn)
- 2024 ESC慢性冠脈綜合征指南解讀(全)
- 成人重癥患者人工氣道濕化護(hù)理專家共識(shí) 解讀
- 2024年浙江省電力交易員競(jìng)賽選拔考試參考題庫(含答案)
- 土力學(xué)與地基基礎(chǔ)(課件)
- 小學(xué)道德與法治五年級(jí)下冊(cè)全冊(cè)優(yōu)質(zhì)教案(含課件和素材)
評(píng)論
0/150
提交評(píng)論