999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SDL-LightGBM集成學習的軟件缺陷預測模型

2024-03-21 01:48:40謝華祥高建華黃子杰
計算機工程與設計 2024年3期
關鍵詞:特征優化模型

謝華祥,高建華+,黃子杰

(1.上海師范大學 計算機科學與技術系,上海 200234;2.華東理工大學 計算機科學與工程系,上海 200237)

0 引 言

軟件缺陷預測利用項目中已有的缺陷信息建立缺陷預測模型,并預測項目中可能出現缺陷的代碼,以減少開發人員檢查出錯代碼的時間和軟件開發成本。相關研究[1]指出大型系統的維護工作占用軟件開發總成本的90%。軟件缺陷預測技術可以根據軟件的信息提取特征,使用分類器算法建立預測模型來確定軟件具體模塊是否包含缺陷。

在模型的使用方面,Erturk等[2]使用SVM(support vector machine)算法對NASA數據集建立缺陷預測模型,并取得不錯效果。Feidu等[3]使用多種機器學習算法和基于LM(language model)的神經網絡算法建立缺陷預測模型,實驗結果顯示基于LM的神經網絡取得最高預測精度。

上述軟件缺陷預測研究大多使用單個分類器,而單個分類器存在預測準確率不高,泛化能力弱等問題,相比單個分類器,集成學習具有更好的分類準確性和效率[4]。如陳麗瓊等[5]使用XGBoost集成學習算法建立即時軟件缺陷預測模型。

然而針對典型Boosting算法的不足,Ke等[6]提出了LightGBM算法,大量實驗結果表明LightGBM算法在性能和效率方面優于傳統機器學習算法和其它集成學習算法。

在特征選擇方面,實驗數據特征間的多重共線性和大量無關特征會導致“維度災難”,增加預測模型的復雜度和訓練時間[7],并可能導致模型過擬合[8]。合理的特征選擇可以有效地實現特征降維[9]。

相比分類器的默認超參數,不同超參數組合對應模型性能有較大不同[14],超參數優化主要有網格搜索、隨機搜索以及貝葉斯優化。Shen等[10]比較各種優化算法,發現DE算法優化結果最好。

在可解釋方面,LIME是Ribeiro等[11]提出的局部替代模型。該模型使用可解釋的機器學習模型(即線性回歸、決策樹等)局部模擬黑盒模型的預測。因此,可以使用局部代理模型來解釋單個實例。

基于以上研究,本文提出一種基于SDL-LightGBM集成學習的軟件缺陷預測模型。

1 相關工作

1.1 LightGBM算法

集成學習是組合多個基分類器來建立一個強分類器,即使每個基分類器是弱分類器,通過集成學習后也能建立一個強分類器。它能有效避免傳統分類器的過擬合問題,同時能獲得更強的泛化能力。由Ke等[6]提出的LightGBM算法是集成學習的一種,主要使用基于梯度的單邊采樣(gradient-based one-side sampling,GOSS)和互斥特征捆綁(exclusive feature bundling,EFB)這兩種方法彌補Boosting算法的不足[6]。

GOSS是從減少樣本的角度出發,排除大部分權重小的樣本,僅用剩下的樣本計算信息增益,它是一種在減少數據和保證精度上平衡的算法。而高緯度數據中很多特征是互斥的,特征很少同時出現非0值。EFB的思想就是把這些特征捆綁在一起形成一個新的特征,以減少特征數量,提高訓練速度。因此本文選擇LightGBM算法構建基礎模型。

1.2 特征選擇

原始特征集可能存在無關特征和特征間的多重共線問題[5]。而LightGBM的特征重要性算法可以有效剔除無關特征。處理特征間的多重共線問題,本文選擇Spearman[13]定義的Spearman秩相關系數,定義如式(1)

(1)

式中:xi,yi分別是兩個特征按大小(或優劣)排位的等級,n是樣本大小,ρ代表Spearman秩相關系數。ρ越大,代表兩個特征之間共線性越強。

如艾成豪等[12]通過ReliefF+XGBoost+Pearson相關系數混合特征選擇,融合所有特征的權重,刪除融合權值較低的特征得到特征子集,有效地降低了模型的運行時間。

1.3 模型超參數優化

相比分類器的默認超參數,不同超參數組合對應模型性能有較大不同[14]。Shen等[10]通過4個優化算法優化6個常用的機器學習分類器,使用AUC值作為模型性能度量,實驗發現模型超參數優化可以顯著提高代碼異味檢測的性能,差分進化(DE)算法可以比其它3種優化器獲得更好的性能。因此本文使用DE算法優化LightGBM的超參數。

1.4 模型可解釋相關研究

現有的軟件缺陷預測重點關注模型的預測能力,忽略了模型的可解釋性。大多數分類器都屬于黑盒模型,其預測的結果無法使人信服。LIME解釋模型的原理通過簡單模型來解釋復雜模型。對樣本數據變換得到一個新的數據集,用這個新數據集訓練一個簡單模型,即一個容易解釋的模型。假設f是一個黑箱模型,x是一個需要解釋的實例,LIME的損失函數如式(2)

E(x)=argminLg?G(f,g,πx)+Ω(g)

(2)

式中:L反應黑箱模型(復雜模型)f與簡單模型g之間預測結果相似程度,G表示簡單模型g的算法集,π表示定義在實例x周圍采樣時的域范圍,Ω(g) 表示可解釋模型g的模型復雜性,本文采用LIME對模型進行解釋性分析。

2 SDL-LightGBM設計流程

機器學習算法可以有效地建立軟件缺陷預測模型。然而相關工作存在特征冗余、分類器選擇和模型解釋的不足[3],對此,本文提出一種基于SDL-LightGBM集成學習的軟件缺陷預測模型,方法流程如圖1所示。

圖1 本文方法流程

2.1 建立特征集

實驗的特征集主要有兩類特征組合,一類為傳統結構度量,另一類由Fowler等[16]定義的代碼異味。

2.1.1 結構度量

產品度量測量源代碼內在特征,如代碼行數、復雜度等。本文在傳統結構度量的基礎上[16]利用CK[17]軟件測量36個結構度量新特征。通過類關鍵字匹配對兩個數據集進行融合,供后面特征選擇組合。具體特征描述分別見表1與表2。

表1 傳統結構度量

表2 CK測量的36個結構度量

2.1.2 代碼異味

本文采用由Fontana等[18]定義的代碼異味強度指數(Intensity)量化代碼異味。通過JCodeOdor[18]工具檢測6種類型的代碼異味并計算得到一個Intensity值。6種代碼異味分別是:

(1)God Class:實現不同職責和集中大部分系統處理的大型類。對程序理解、軟件可維護性有負面影響。

(2)Data Class:單純用作數據存儲的類,該類僅有一些字段(fields),以及讀寫這些字段的函數。

(3)Brain Method:實現多個函數的過大方法。

(4)Shotgun Surgery:一個類遇到某種變化,其它類需要被動作出修改。

(5)Dispersed Coupling:類與其它類具有太多耦合關系。

(6)Message Chains:過長的方法調用。

2.1.3 混合特征選擇

本文為了更細化研究軟件結構度量,使用CK[17]軟件測量36個結構度量新特征,加上27個傳統結構度量和JCodeOdor[18]工具計算得到的一個代碼異味強度指數Intensity值共提取64個特征,并利用類名作為匹配鍵對其合并。然而合并后特征間的高度共線性和大量無關特征會導致“維度災難”,增加預測模型的復雜度和訓練時間。對此本文采用LightGBM特征重要性和Spearman[13]算法對特征選擇與組合,并確定特征子集。通過實驗比較得到LightGBM重要性閾值為30時,不會降低模型的預測能力。根據Nucci等[19]的建議,當設置Spearman的相關度ρ的閾值為0.8,即當ρ大于0.8時認為兩個特征具有強相關,這時保留對模型貢獻最大的特征。Spearman+LightGBM混合特征選擇算法具體流程如算法1所示:

算法1:混合特征選擇算法

輸入:合并后的數據集

輸出:特征子集

(1)使用LightGBM計算每個特征對預測結果的重要性權重向量W,并按照從大到小進行排序

W=[ω1(x),ω2(x),…,ωn(x)]

(2)設置重要性閾值30,去除重要性低于閾值的特征,得到第一次選擇的特征子集X1

X1=[x1,x2,…,xn]

(3)使用Spearman測量特征子集X1兩兩特征間的相關系數ρ,得到相關系數矩陣P

(4)設置相關性閾值為0.8,當兩兩特征閾值大于0.8時認為其具有高度相關,保留重要性最高的一個特征。依次去除高度相關特征,最后得到特征子集X2

X2=[x1,x2,…,xn]

經過Spearman+LightGBM混合特征選擇后,從高度冗余的64個特征中選擇15個組合成結構度量子集,去除大量無關特征和高度共線特征,進而實現降低模型復雜度。

2.2 模型優化

機器學習模型中有各種參數需要調整,這些參數可分為模型參數和模型超參數。模型參數是模型內部通過自動學習而得出的配置變量,如神經網絡中的權重,邏輯回歸中的系數等。模型超參數則需要從外部配置,模型訓練之前需要手動設置的參數。如隨機森林樹的深度、神經網絡中迭代次數等。不同超參數設置會有不同的模型性能。本文對LightGBM的5個關鍵超參數進行優化其具體描述見表3。

表3 本文優化的LightGBM超參數

本文使用DE算法優化LightGBM的超參數,優化方法如算法2所示:

算法2:DE優化LightGBM超參數

輸入:數據集和LightGBM分類器

輸出:優化后的一組超參數

/*將數據集劃分為訓練集和測試集*/

xtrain,xtest,ytrain,ytest←D

/*1. 10折交叉驗證*/

/*2. DE種群初始化*/

Xi(0)=(xi,1(0),xi,2(0),…,xi,n(0))

/*3.開始迭代*/

Hi(g)=Xp1(g)+F·(Xp2(g))-Xp3(g)

/*4.從種群中隨機選擇3個個體產生變異,F是縮放因子取0.5*/

if rand(0,1)≤CRorj=jrand

Uj,i(g)=Hj,i(g)

Otherwise

Uj,i(g)=Xj,i(g)

/*5.在變異操作后,對第g代種群 {Xi(g)} 及其變異中間體 {Hi(g)} 進行個體間交叉操作*/

iff(Ui(g))≤f(Xi(g))

Xi(g+1)=Ui(g)

Otherwise

Xi(g+1)=Xi(g)

/*6.DE算法采用貪婪算法來選擇下一代的個體*/

Endfor

/*7.迭代結束,輸出最優超參數組合*/

3 實驗分析

為了驗證基于SDL-LightGBM集成學習的軟件缺陷預測模型的有效性,本文主要回答以下4個問題:

Q1:Spearman+LightGBM混合特征選擇算法是否有效?

Q2:使用DE算法優化模型超參數是否能提高模型預測性能?

Q3:本文所提出的SDL-LightGBM方法與其它文獻相比是否具有優勢?

Q4:使用LIME分析什么特征對結果影響最大?

3.1 實驗數據集

實驗使用的數據集[16]包括12個開源系統的35個版本。表4給出了數據集的詳細信息,包括系統名稱、系統版本數量、系統類的數量(最小-最大)、系統代碼千行數量(最小-最大)和缺陷類的百分比(最小-最大)

表4 實驗項目

3.2 十折交叉驗證

為了更好評估模型的性能,實驗采用10折交叉驗證策略,將數據集隨機劃分10個大小相等的數據子集,一個作為測試集,其余9個作為訓練集,重復10次,使每個子集都恰好一次作為測試集,最后結果取10次操作的平均值。

3.3 評價指標

(1)F1值:在分類預測中,常用精確度(Precision)和召回率(Recall)這兩者的調和平均作為評價指標即F值(F-Score),如式(3)

(3)

當α取1時,就是常見的F1值,如式(4)

(4)

precision和recall的定義如式(5)、式(6)

(5)

(6)

其中,TP、FP和FN的含義見表5。

表5 TP、TN、FP、FN概念

(2)AUC值:AUC值是ROC曲線下的面積,而ROC曲線的橫軸是FPRate,縱軸是TPRate。當兩者相等時,其表示的含義是對于正類和負類的預測概率為1的概率相等,

即TPRate=FPRate=0.5,此時ROC下的面積即AUC值為0.5,分類器沒有任何區分能力。而一個好的分類器要求TPRate>>FPRate。而理想的情況為TPRate=1,FPRate=0。此時ROC下的面積即AUC值最大,分類器性能最好。

3.4 實驗結果分析

Q1:為了驗證本文Spearman+LightGBM混合特征選擇方法的有效性,本文分別使用選擇前和選擇后的特征數據集建立預測模型。首先利用LightGBM的特征重要性importance對64個特征進行排序。importance越高,說明特征對預測結果越重要。排序結果見表6。

表6 特征重要度排序

importance大于30的特征有17個,大于10的特征有37個,因此本文對importance閾值為0、10和30分別進行篩選比較,結果見表7。

表7 閾值篩選性能比較

根據實驗比較結果可以看出,當importance閾值設置為30時,能最大程度降低特征維度從而降低模型復雜度且不會影響模型的預測性能。因此利用LightGBM篩選結果保留importance大于30的17個特征,分別是intensity、scattering、fi-changes、ce、ostrand、UWQty、loc、cbo、AMQty、cboM、VBQty、amc、rfc、FAN-OUT、acpd、TMQty和cam。

考慮到特征間可能具有多重共線性,本文利用Spearman秩相關系數計算17個特征間的相關系數ρ。根據Nucci等[19]的建議,當設置ρ的閾值為0.8,即當ρ大于0.8時認為兩個特征具有強相關,這時保留對模型貢獻最大的特征,剔除特征loc和cam。

經過Spearman+LightGBM混合特征選擇后的特征子集共15個特征,分別是intensity、scattering、fi-changes、ce、ostrand、UWQty、cbo、AMQty、cboM、VBQty、amc、rfc、FAN-OUT、acpd和TMQty。

特征選擇前后對模型的影響比較結果見表8,特征選擇后的模型F1值提高0.5%,AUC值提高0.4%,模型預測性能得到提高。特征選擇前的模型模型訓練時間為30.36 s,特征選擇后的模型訓練時間為21.12 s,模型訓練時間縮短43.6%。因此,本文使用的混合特征選擇能有效提高模型預測性能和降低模型復雜度從而縮短模型訓練時間,驗證該方法的有效性。

Q2:根據Shen等[10]的建議,使用DE算法優化LightGBM的重要超參數。DE算法的初始種群數量和算法迭代次數的取值會影響DE算法的性能,因此對種群數量取值[10,100],迭代次數取值[10,500],以AUC值作為優化目標函數返回值分別進行實驗,結果如圖2、圖3所示。

圖3 迭代次數比較

從圖2、圖3可以看出當種群大小和迭代次數分別設為20和100時DE算法可獲得最佳性能。通過DE算法優化得到一組最優的LightGBM超參數組合,即[n_estimators:164,max_depth:178,num_leaves:63,min_child_sample:42,learning_rate:0.16]。通過表9可以看出,超參數調優后F1值提高0.98%,AUC值提高0.92%。因此可驗證通過DE算法優化LightGBM超參數可提高模型預測精度。

表9 超參數優化前后性能對比

Q3:為了驗證本文所提方法SDL-LightGBM的有效性,與近年同類論文進行對比。Palomba等[16]使用邏輯回歸建立軟件缺陷預測模型。Pritam等[20]使用多層感知機建立軟件缺陷預測模型。對比實驗將在相同項目數據集下進行,確保實驗具有可比性。從表10可以看出,本文所提出的方法SDL-LightGBM相比文獻[16]在F1值提高12.28%,在AUC值上提高18.63%,相比文獻[20]在F1值上提高5.67%,在AUC值上提高4.22%。因此可證本文所提方法SDL-LightGBM的有效性。

表10 缺陷預測方法對比

Q4:圖4給出全部數據特征對模型輸出結果的貢獻度,可見在全局情況下,代碼異味強度指數intensity對模型貢獻度最高,這符合軟件工程實際情況,即代碼異味越嚴重越有可能出現缺陷。

圖4 全局特征對模型貢獻度

然而每條實例數據都有各自特點,具體問題要具體分析,因此不能用全局解釋的結果來分析單個實例數據。因此本文采用LIME解釋模型的單個實例。本文選擇一條帶缺陷的實例數據使用LIME解釋,如圖5所示,這條實例預測為有缺陷傾向的3個最重要的因素為 {fi-changes>61.00}{scattering>30.0}{intensity>1.05},對缺陷有影響的貢獻依次是0.19,0.19,0.11。而在全局解釋中intensity對模型貢獻度最高。這進一步說明全局解釋結果不能解釋單個實例。LIME能計算單個實例數據中每個特征對模型影響的重要性和取值范圍,這能夠給測試人員分析具體缺陷類提供條件。

圖5 LIME解釋局部實例

4 有效性威脅

本文有效性威脅分析主要從3個方面討論,分別為建立有效性威脅、結論有效性威脅和外部有效性威脅。

建立有效性威脅主要與結構度量和代碼異味的測量有關。本文通過CK[17]測量結構度量,依靠JCodeOdor[18]測量代碼異味強度指數。為了驗證結構度量和代碼異味強度指數的有效性,采用Spearman秩相關性去除多重共線性影響,得到的15個特征相互之間的共線性均低于0.8,表明它們之間的相關性較弱。因此,本文模型建立不受特征之間的多重共線性的威脅。

結論有效性威脅主要與評價指標有關,精確率含義是在所有被預測為正的樣本中實際為正的樣本的概率,召回率含義是在實際為正的樣本中被預測為正樣本的概率。前者偏向查準率,后者偏向查全率。為了綜合兩者優點,本文采用F1值,同時考慮查準率和查全率,是兩者達到一個平衡。而為了評價模型的好壞,即模型的區分能力,本文引入了ROC曲線下的面積AUC值。AUC值可以更全面的衡量一個模型的好壞。因此,本文結論不受評價指標的有效性威脅。

外部有效性威脅主要涉及到結果的泛化性。根據Palo-mba等[16]的建議,刪除缺陷比例高于75%的7個系統,保證數據的健壯性。同一種方法在不同的應用領域程序的缺陷預測中可能有不同的表現[22],因此本文分析了來自不同應用領域、具有不同特征(大小、類數等)的12個軟件系統的35個版本,從而提供本文數據的可靠性。

5 結束語

本文提出基于SDL-LightGBM集成學習的軟件缺陷預測模型,為了避免特征冗余和多重共線的影響,根據Spearman+LightGBM混合特征選擇建立特征子集,避免無關特征和特征間的多種共線影響。采用集成學習算法LightGBM作為基礎分類器。為了進一步提升分類器預測性能,利用DE算法優化LightGBM的重要超參數,得到一組最佳超參數組合。最后對模型實例進行解釋,方便測試人員分析缺陷類。實驗結果表明,本文提出的方法SDL-LightGBM與其它模型相比取得了更好的預測性能,F1值平均提高8.97%,AUC值平均提高11.42%。通過混合特征選擇后,模型訓練時間縮短43.6%。同時使用LIME解釋復雜的黑盒模型,生成可解釋的特征重要性可視圖,進而幫助測試人員更好理解軟件缺陷預測模型。

未來的工作包括:①使用基于抽象語法樹的神經網絡(abstract syntax tree neural network,ASTNN)[21]的深度學習方法捕捉代碼的上下文信息,并建構分類器;②進一步考慮其它特征對軟件缺陷的影響;③探究本文方法在實際應用場景中的效度。

猜你喜歡
特征優化模型
一半模型
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
抓住特征巧觀察
主站蜘蛛池模板: 精品国产自| 成人一级免费视频| 国产乱子精品一区二区在线观看| 少妇极品熟妇人妻专区视频| 亚洲欧洲自拍拍偷午夜色| 国产人免费人成免费视频| 亚洲全网成人资源在线观看| 91精品国产一区自在线拍| 亚洲人成人无码www| 欧美亚洲香蕉| 国产一级毛片网站| 国内精品视频区在线2021| 亚欧乱色视频网站大全| 韩日午夜在线资源一区二区| 亚洲av日韩av制服丝袜| 精品人妻一区二区三区蜜桃AⅤ| 毛片在线播放网址| 一级黄色网站在线免费看| 中文字幕波多野不卡一区| 免费午夜无码18禁无码影院| 99爱在线| 亚洲成人高清在线观看| 97青草最新免费精品视频| 国产精品久久久久鬼色| 四虎免费视频网站| 三级视频中文字幕| 91www在线观看| 亚洲大学生视频在线播放| 中国一级特黄视频| 国产国拍精品视频免费看 | 久久国产精品影院| 亚洲天堂成人在线观看| 天天躁日日躁狠狠躁中文字幕| 日韩无码黄色网站| 亚洲福利一区二区三区| 这里只有精品在线| 亚洲日韩精品欧美中文字幕| 伊人色天堂| 免费国产黄线在线观看| 国产91在线|日本| 伊在人亚洲香蕉精品播放| 精品国产自在现线看久久| 国产一区二区三区在线观看视频| 992tv国产人成在线观看| 无码免费的亚洲视频| 国产成人精品免费av| 岛国精品一区免费视频在线观看| 99精品免费在线| 亚洲综合中文字幕国产精品欧美| 夜夜操狠狠操| 国产成人1024精品下载| 欧美精品H在线播放| 欧美国产成人在线| 日韩小视频网站hq| 综1合AV在线播放| 五月天综合网亚洲综合天堂网| 亚洲欧美人成人让影院| 强奷白丝美女在线观看| 国产毛片网站| 色综合网址| 9久久伊人精品综合| 波多野结衣久久高清免费| 丁香六月综合网| 国产经典三级在线| 亚洲日韩精品欧美中文字幕| 国产在线观看成人91| 97在线观看视频免费| 久久香蕉国产线看观看精品蕉| 欧美成人精品高清在线下载| 麻豆精品视频在线原创| 亚洲欧美国产视频| 99精品这里只有精品高清视频| 国产一区二区三区夜色| 精品撒尿视频一区二区三区| 国产精品亚洲五月天高清| 国产美女主播一级成人毛片| 国产91小视频在线观看| 99久久人妻精品免费二区| 国产91蝌蚪窝| 欧美亚洲国产精品久久蜜芽| 国产精品任我爽爆在线播放6080 | 国产成人狂喷潮在线观看2345|