張銀杰 揣錦華 翟曉惠
摘要:針對(duì)微軟惡意軟件預(yù)測(cè)數(shù)據(jù)集,文章結(jié)合特征工程的思想和集成學(xué)習(xí)算法實(shí)現(xiàn)惡意軟件感染的預(yù)測(cè)。為了更好地適應(yīng)算法的輸入要求,對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理和特征構(gòu)建,并提出一種利用LightGBM算法以提高預(yù)測(cè)性能的啟發(fā)式搜索方式,得到最終的特征集。以篩選后的特征構(gòu)成的數(shù)據(jù)集實(shí)現(xiàn)了LightGBM,XGBoost和CART算法的預(yù)測(cè),并對(duì)預(yù)測(cè)性能進(jìn)行了比對(duì)分析。通過完全相同的交叉驗(yàn)證證明,在惡意軟件預(yù)測(cè)時(shí),集成學(xué)習(xí)算法有更好的預(yù)測(cè)性能,AUC值明顯高于傳統(tǒng)決策樹算法。
關(guān)鍵詞:惡意軟件預(yù)測(cè);特征工程;LightGBM;XGBoost
中圖分類號(hào):520.4070 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8228(2020)07-07-05
0引言
近年來,惡意軟件在PC端的傳播感染和攻擊行為日益頻繁,給企業(yè)和個(gè)人計(jì)算機(jī)用戶的信息安全和財(cái)產(chǎn)帶來嚴(yán)重威脅,在此背景下微軟提供Windows計(jì)算機(jī)惡意軟件感染數(shù)據(jù)集,旨在實(shí)現(xiàn)對(duì)計(jì)算機(jī)是否感染惡意軟件的概率預(yù)測(cè)。機(jī)器學(xué)習(xí)在網(wǎng)絡(luò)安全領(lǐng)域的應(yīng)用也越來越廣泛嘲,boosting集成學(xué)習(xí)算法是近年來機(jī)器學(xué)習(xí)中較為流行的算法,例如基于樹模型集成的LightGBM和XGBoost算法,近年來常用于基于數(shù)據(jù)集的預(yù)測(cè)。本文對(duì)數(shù)據(jù)集進(jìn)行了預(yù)處理,并根據(jù)特征工程的理論進(jìn)行特征的構(gòu)建與選擇,最終使用boosting算法,實(shí)現(xiàn)對(duì)惡意軟件感染的有效預(yù)測(cè)。如何從大量原始數(shù)據(jù)中盡可能地挖掘出與預(yù)測(cè)惡意軟件相關(guān)聯(lián)的信息,并借助集成學(xué)習(xí)的預(yù)測(cè)性能實(shí)現(xiàn)惡意軟件的預(yù)測(cè)是本文研究的主要內(nèi)容。
1數(shù)據(jù)認(rèn)知與預(yù)處理
1.1數(shù)據(jù)認(rèn)知
本文數(shù)據(jù)引用自kaggle網(wǎng)站的微軟惡意軟件預(yù)測(cè)數(shù)據(jù)集。本文預(yù)測(cè)目的為Windows計(jì)算機(jī)是否感染惡意軟件,預(yù)測(cè)標(biāo)簽為計(jì)算機(jī)是否檢測(cè)出惡意軟件(檢測(cè)出記為1,未檢測(cè)出記為0),即原數(shù)據(jù)集中的HasDetections字段。為探究boosting算法在該數(shù)據(jù)集上的預(yù)測(cè)效果,本文取其前120萬條數(shù)據(jù)進(jìn)行研究。
所取樣本中預(yù)測(cè)標(biāo)簽的正負(fù)樣本分布大致相同,因此不需要進(jìn)行額外的分層抽樣以確保訓(xùn)練集中的正負(fù)樣本比例。將其他特征與預(yù)測(cè)標(biāo)簽進(jìn)行了數(shù)據(jù)趨勢(shì)分析,例如,圖1所舉的示例為不同“AVProduc-tInstalled”(安裝防衛(wèi)軟件數(shù)目)下“HasDetections”的數(shù)據(jù)分布,從中可以看出,在感染惡意軟件的數(shù)據(jù)更集中于防衛(wèi)軟件數(shù)目較少的情況。通過以上特征間的分析過程,證明其他特征與預(yù)測(cè)標(biāo)簽有一定關(guān)聯(lián)性。
1.2數(shù)據(jù)預(yù)處理
數(shù)據(jù)集中大部分特征都為類別特征。為了使數(shù)據(jù)更適用于機(jī)器學(xué)習(xí)算法的訓(xùn)練,對(duì)于原始數(shù)據(jù)集中的類別型數(shù)據(jù)采用標(biāo)簽編碼的方式。例如,圖2給出“ProductName”字段的標(biāo)簽編碼過程,該字段原有6個(gè)類別,在特征編碼時(shí)將數(shù)量少于1000的所有類別視為異常值,合并劃為同一標(biāo)簽。
對(duì)于數(shù)據(jù)集中的數(shù)值型數(shù)據(jù)與布爾型數(shù)據(jù)不作處理,保留原有數(shù)據(jù)格式。經(jīng)過數(shù)據(jù)預(yù)處理后,得到可以投入機(jī)器學(xué)習(xí)訓(xùn)練的數(shù)據(jù)集。
2相關(guān)方法與理論
2.1特征工程及特征選擇方法
特征工程(Feature Engineering),是一系列工程活動(dòng)的總稱。特征工程的目的,是最大限度地從原始數(shù)據(jù)中找到適合模型的特征。此過程不僅能夠降低計(jì)算的運(yùn)行速度,提高模型的預(yù)測(cè)性能,也使得模型更好理解和維護(hù)。
特征選擇是特征工程中關(guān)鍵的一步,實(shí)際的特征構(gòu)建過程中,特征之間可能存在依賴,也可能存在與預(yù)測(cè)目標(biāo)不相關(guān)的特征。特征選擇是篩選出合適特征的過程,本文提出一種啟發(fā)性特征搜索方式以提高預(yù)測(cè)性能,主要思想是以分類器的預(yù)測(cè)性能作為判斷準(zhǔn)則,從當(dāng)前的特征集合中移除最不重要的特征,其次根據(jù)準(zhǔn)則決定部分特征是否刪減或保留,重復(fù)上述過程,直到最終的特征集不再發(fā)生變化。
2.2分類算法
CART算法,即分類與回歸樹(classification andregression tree,CART),是一種常用于分類和回歸任務(wù)的決策樹算法。在執(zhí)行分類任務(wù)時(shí),用基尼指數(shù)選擇判斷最優(yōu)特征及最優(yōu)切分點(diǎn)的依據(jù)來構(gòu)造分類樹。最后基于子樹的平方誤差或基尼指數(shù),剪去部分子樹,減少過擬合以更適應(yīng)未知數(shù)據(jù)的預(yù)測(cè)。
XGBoost是以分類回歸樹(CART樹)進(jìn)行組合的一種boosting集成學(xué)習(xí)方法。XGBoost在使用CART作為基分類器時(shí)增加了正則項(xiàng),大大提升了模型的泛化能力?;诜诸惢貧w樹的XGBoost算法能很好地處理本文中的表格性數(shù)據(jù),還可以自動(dòng)對(duì)缺失值進(jìn)行處理,同時(shí)提供更好的優(yōu)化參數(shù)的方式。
作為boosting集合模型中的新進(jìn)成員,LightGBM是一種基于決策樹算法的分布式梯度提升框架,原理上采用損失函數(shù)的負(fù)梯度作為當(dāng)前決策樹的殘差近似值去擬合新的決策樹。在特征重要性判斷上,LightGBM相對(duì)于其他集成學(xué)習(xí)算法有很多重要的優(yōu)勢(shì),例如支持直接輸入類別特征,能輸出特征重要性分?jǐn)?shù),以及較低的計(jì)算代價(jià)等。
2.3二分類模型評(píng)估指標(biāo)
2.3.1混淆矩陣
混淆矩陣是用來評(píng)估二分類模型的一種可視化工具。本文根據(jù)模型的預(yù)測(cè)結(jié)果與真實(shí)分類結(jié)果的比較將所有樣本劃分為四部分,具體如表l所示。
表1中的四部分具體如下。
真正(True Positive,TP):當(dāng)一個(gè)正樣本被模型預(yù)測(cè)為正類。
假正(False Positive,F(xiàn)P):當(dāng)一個(gè)負(fù)樣本被模型預(yù)測(cè)為正類。
假負(fù)(False Negative,F(xiàn)N):當(dāng)一個(gè)正樣本被模型預(yù)測(cè)為負(fù)類。
真負(fù)(True Negative,TN):當(dāng)一個(gè)負(fù)樣本被模型預(yù)測(cè)為負(fù)類。
2.3.2 ROC曲線與AUC值
ROC曲線是衡量二分類模型的一個(gè)指標(biāo)工具,ROC曲線的橫縱坐標(biāo)由混淆矩陣四部分計(jì)算得到。ROC曲線橫坐標(biāo)為FPR(False Positive Rate,假正率),F(xiàn)PR公式如下:
TPR即被預(yù)測(cè)為正的正樣本數(shù)/真實(shí)正樣本數(shù)。一般情況下,ROC曲線都處于(0,0)和(1,1)連線的上方。
本文中采用AUC(Area Under Curve)作為二分類模型的判斷指標(biāo)。AUC被定義為ROC曲線下的面積(ROC的積分),通常大于0.5且小于1。AUC可以理解為隨機(jī)挑選一個(gè)正樣本以及一個(gè)負(fù)樣本,分類器判定正樣本的值高于負(fù)樣本的概率。使用AUC可以對(duì)多個(gè)分類器的預(yù)測(cè)性能作出準(zhǔn)確的性能度量。AUC值越大的分類器,性能越好。
2.4 k折交叉驗(yàn)證
k折交叉驗(yàn)證指將整個(gè)數(shù)據(jù)集分成大小幾乎相等的k部分。然后將第k個(gè)數(shù)據(jù)子集作為測(cè)試集,剩余部分全部作為訓(xùn)練集,從而完成k次訓(xùn)練預(yù)測(cè),返回整個(gè)測(cè)試集的測(cè)試結(jié)果的平均值。常見的k值有5、10、20等。為了全面評(píng)估預(yù)測(cè)模型的性能,本文皆采用五折交叉驗(yàn)證的方式評(píng)估預(yù)測(cè)結(jié)果。
3特征工程與集成學(xué)習(xí)在惡意軟件預(yù)測(cè)上的應(yīng)用
3.1特征工程在惡意軟件預(yù)測(cè)上的應(yīng)用
3.1.1特征的構(gòu)建
將數(shù)據(jù)集中的屬性字段轉(zhuǎn)換為原始特征,共得到類別型特征53個(gè),數(shù)值型特征10個(gè),布爾型特征18個(gè)?;谶@些原始特征可以構(gòu)造更多的衍生特征,以進(jìn)一步提高模型預(yù)測(cè)精度。新的衍生特征主要通過以下幾個(gè)方向完成衍生特征的構(gòu)建。
(1)原特征的分解
因?yàn)榘姹拘畔⒕哂袝r(shí)間變化的趨勢(shì),不同版本下感染惡意軟件的概率可能有所不同,因此提取防衛(wèi)軟件引擎版本EngineVersion、防衛(wèi)軟件APP版本AppVersion等字段按照版本層次的差異分割成若干特征。
(2)特征間的組合
①特征間的加減乘除:根據(jù)計(jì)算機(jī)安全的相關(guān)業(yè)務(wù)邏輯構(gòu)造新的特征。例如,根據(jù)計(jì)算機(jī)可使用的防衛(wèi)軟件/計(jì)算機(jī)已安裝的防衛(wèi)軟件,可以得到計(jì)算機(jī)防衛(wèi)軟件可使用率這一新衍生特征,用以進(jìn)一步表示計(jì)算機(jī)安裝防衛(wèi)軟件的情況。
②根據(jù)特征值的不同構(gòu)建新特征:例如根據(jù)計(jì)算機(jī)是否存在于計(jì)算機(jī)設(shè)備普及比較高的國家,構(gòu)建一個(gè)新的0/1變量作為衍生特征(0表示否,1表示是)。
(3)構(gòu)造啞變量特征
因?yàn)閿?shù)據(jù)集中部分類別型特征存在缺失值的情況,可以將某特征是否存在缺失值作為一個(gè)新的布爾型衍生特征。
根據(jù)以上三個(gè)維度進(jìn)行特征構(gòu)建,得到最終的特征分布如表2所示。
3.1.2特征的篩選
過多的特征對(duì)于分類器來說計(jì)算開銷太大,而且分類性能不一定更好。因此,需要對(duì)特征的重要性進(jìn)行判斷,再對(duì)特征進(jìn)行篩選,得到最終預(yù)測(cè)使用的特征集。在特征重要性判斷上,LightGBM算法具有支持直接輸入類別特征,能輸出特征重要性分?jǐn)?shù)以及較低的計(jì)算代價(jià)等特點(diǎn)。因此本次實(shí)驗(yàn)選擇LightGBM算法對(duì)特征進(jìn)行選擇。
結(jié)合LightGBM算法,由特征全集訓(xùn)練可以得到特征重要性排名,在此過程中,剔除了所有重要性為0的特征;另外需要再對(duì)剩下的特征進(jìn)行選擇,篩選過程中選擇AUC值作為模型效果評(píng)價(jià)指標(biāo),AUC值越大說明模型越好。
根據(jù)特征重要性排名,剔除所有重要性為0的特征后還有158個(gè)待篩選特征,隨后以五折交叉驗(yàn)證的AUC平均值作為目標(biāo)函數(shù),執(zhí)行特征集的啟發(fā)性搜索以得到最終特征集。該啟發(fā)陛搜索過程的流程圖如圖3所示。
多次執(zhí)行上述過程,直至輸入的特征集與輸出的特征集完全相同,此時(shí)刪除任何一個(gè)特征都會(huì)導(dǎo)致AUC值降低,確保最終找到一個(gè)局部最優(yōu)的特征集。在實(shí)際對(duì)原始特征篩選過程中,第七次篩選輸入的特征集與輸出相比不再發(fā)生變化,因此取第六次篩選結(jié)果的特征集。篩選過程中的AUC變化如表3所示。
由表3得,這種特征選擇方式使得在特征數(shù)縮減的情況下模型AUC值仍能提高。說明這種特征選擇方式不但可以降低計(jì)算開銷,也使模型的預(yù)測(cè)能力得到提高。經(jīng)過特征選擇后預(yù)測(cè)模型的特征數(shù)目確定為129。
3.2集成學(xué)習(xí)算法在惡意軟件上的應(yīng)用
經(jīng)過特征選擇過程后,得到只包含篩選后的129特征的實(shí)驗(yàn)數(shù)據(jù)集。Python編程環(huán)境中可以方便的調(diào)用機(jī)器學(xué)習(xí)算法,在Python環(huán)境中選擇合適的參數(shù)利用LightGBM和XGBoost算法對(duì)該數(shù)據(jù)集進(jìn)行訓(xùn)練和交叉驗(yàn)證。為了比較兩種集成學(xué)習(xí)算法與傳統(tǒng)算法性能上的差異,選擇決策樹算法CART算法作為對(duì)比。
由以上三種算法對(duì)數(shù)據(jù)集進(jìn)行五折交叉驗(yàn)證,得到如表4所示五次驗(yàn)證過程中驗(yàn)證集AUC的對(duì)比結(jié)果。
由表4的結(jié)果得,集成學(xué)習(xí)算法中的LightGBM與XGBoost算法在每一折驗(yàn)證集的AUC值上均高于CART算法,說明boosting集成學(xué)習(xí)的預(yù)測(cè)性能明顯高于傳統(tǒng)決策樹算法,基于XGBoost算法得到的大部分交叉驗(yàn)證結(jié)果在AUC上的表現(xiàn)比LightGBM要略高。
上述實(shí)驗(yàn)結(jié)果表明,對(duì)于惡意軟件感染數(shù)據(jù)集,結(jié)合集成學(xué)習(xí)算法,經(jīng)特征工程篩選過后的特征集在預(yù)測(cè)效果上優(yōu)于全部特征集的預(yù)測(cè)結(jié)果,此外,集成學(xué)習(xí)算法的預(yù)測(cè)效果也遠(yuǎn)好于傳統(tǒng)決策樹算法預(yù)測(cè)效果。利用本文特征選擇方法與集成學(xué)習(xí)算法的結(jié)合,可以較好的實(shí)現(xiàn)對(duì)惡意軟件的預(yù)測(cè)。
4結(jié)束語
本文通過特定的特征選擇方法和集成學(xué)習(xí)算法,解決了基于數(shù)據(jù)集預(yù)測(cè)惡意軟件感染這一實(shí)際問題。不僅實(shí)現(xiàn)了較為準(zhǔn)確預(yù)測(cè)惡意軟件的目標(biāo),也找到了影響惡意軟件感染的一系列特征,為防治惡意軟件提供了部分依據(jù)。下一步期望通過進(jìn)一步優(yōu)化特征選擇過程,或者選擇模型融合的方法,實(shí)現(xiàn)惡意軟件預(yù)測(cè)的優(yōu)化過程。