魏比賢 劉曉燕
摘 要 軟件缺陷預(yù)測(cè)對(duì)保證軟件質(zhì)量至關(guān)重要,不平衡數(shù)據(jù)嚴(yán)重影響軟件缺陷預(yù)測(cè)模型的性能,采用集成算法與不平衡學(xué)習(xí)方法相結(jié)合的方式可以有效解決該問(wèn)題?;?種集成學(xué)習(xí)算法與16種不平衡學(xué)習(xí)方法,提出一些新的集成預(yù)測(cè)方法,在14個(gè)高不平衡數(shù)據(jù)集上進(jìn)行M×N路交叉驗(yàn)證實(shí)驗(yàn),并選取3種常用機(jī)器學(xué)習(xí)算法作為對(duì)比。使用AUC、G-mean、recall和F1指標(biāo)評(píng)價(jià)預(yù)測(cè)性能。實(shí)驗(yàn)結(jié)果表明:所提預(yù)測(cè)方法指標(biāo)平均值比3種傳統(tǒng)機(jī)器學(xué)習(xí)算法高出1.5%。
關(guān)鍵詞 軟件缺陷預(yù)測(cè) 集成算法 機(jī)器學(xué)習(xí) 不平衡數(shù)據(jù)
中圖分類號(hào) TP311.5? ?文獻(xiàn)標(biāo)識(shí)碼 A? ?文章編號(hào) 1000-3932(2023)04-0549-08
軟件質(zhì)量是軟件工程領(lǐng)域非常重視的問(wèn)題[1]。然而隨著軟件規(guī)模的擴(kuò)大,軟件系統(tǒng)復(fù)雜性快速增長(zhǎng),模塊中存在缺陷的風(fēng)險(xiǎn)也越來(lái)越高[2]。軟件缺陷修復(fù)占據(jù)維護(hù)成本的很大比例,資源和預(yù)算并不允許對(duì)整個(gè)系統(tǒng)進(jìn)行嚴(yán)格全面的測(cè)試。因此,識(shí)別出有缺陷的軟件模塊可以幫助人們快速合理分配有限的時(shí)間和寶貴的資源,從而獲得更好的質(zhì)量。軟件缺陷預(yù)測(cè)被看作是一個(gè)二分類問(wèn)題,把模塊分為有缺陷模塊或無(wú)缺陷模塊。在實(shí)際的缺陷預(yù)測(cè)中,有缺陷的類只占少數(shù)(陽(yáng)性樣本),無(wú)缺陷的類占大多數(shù)(陰性樣本),因此缺陷數(shù)據(jù)的分布是高度傾斜的,在機(jī)器學(xué)習(xí)領(lǐng)域也被稱為類不平衡數(shù)據(jù)。這種高度不平衡的數(shù)據(jù)集在很大程度上影響了機(jī)器學(xué)習(xí)分類算法預(yù)測(cè)少數(shù)類[3]的能力。為了解決這個(gè)問(wèn)題,一些研究人員提出將不平衡學(xué)習(xí)方法嵌入到機(jī)器學(xué)習(xí)算法中,建立更加適用于解決不平衡數(shù)據(jù)集分類問(wèn)題的集成學(xué)習(xí)分類器。
文中的主要貢獻(xiàn)有:為了進(jìn)一步提升軟件缺陷預(yù)測(cè)模型的性能,引入6種集成學(xué)習(xí)算法,具體為:AdaboostM1[4]、Decorate[5]、Logit Boost[6]、MultiBoost AB[7]、MultiClass Classifier[8]、Rotation Forest[9],將其與常用的不平衡學(xué)習(xí)方法結(jié)合,提出一些新的集成預(yù)測(cè)算法;在14個(gè)高不平衡數(shù)據(jù)集上采用M×N路交叉驗(yàn)證方法對(duì)提出的算法進(jìn)行較全面客觀的測(cè)試。通過(guò)測(cè)試結(jié)果分析哪種集成預(yù)測(cè)算法綜合表現(xiàn)最好,哪種集成算法某一性能表現(xiàn)最好,以便后續(xù)研究者從不同側(cè)重點(diǎn)挑選合適的模型。
1 相關(guān)研究
軟件缺陷預(yù)測(cè)是在開(kāi)發(fā)早期就識(shí)別系統(tǒng)缺陷的一種方法。通過(guò)大量歷史缺陷數(shù)據(jù)建立代碼特征與缺陷之間的關(guān)系,預(yù)測(cè)哪些模塊容易出現(xiàn)缺陷。近年來(lái),研究人員探索各種方法對(duì)軟件缺陷模塊進(jìn)行預(yù)測(cè),大量傳統(tǒng)的分類算法被直接用于構(gòu)建軟件缺陷預(yù)測(cè)模型,常用的分類算法有:文獻(xiàn)[10]采用的人工神經(jīng)網(wǎng)絡(luò)算法,文獻(xiàn)[11]使用的貝葉斯網(wǎng)絡(luò)算法,文獻(xiàn)[12]用的SVM算法以及文獻(xiàn)[13]用于測(cè)試對(duì)比性能的決策樹(shù)、邏輯回歸等算法,除此以外還有字典學(xué)習(xí)[14]、關(guān)聯(lián)規(guī)則[15]、進(jìn)化算法[16]等若干算法。
然而這類直接由分類算法構(gòu)建的模型忽略了缺陷數(shù)據(jù)集的類分布不平衡問(wèn)題,很可能會(huì)為了達(dá)到更高的準(zhǔn)確率而將所有模塊都預(yù)測(cè)為無(wú)缺陷模塊。例如,對(duì)于一個(gè)缺陷模塊只占總體2%的數(shù)據(jù)集,即使把所有的模塊都?xì)w類為無(wú)缺陷模塊,也會(huì)獲得98%的高準(zhǔn)確率。顯然這種忽視少數(shù)類預(yù)測(cè)結(jié)果的模型不是我們想要的。于是一些研究人員提出可以從數(shù)據(jù)層面和算法層面來(lái)解決該問(wèn)題。數(shù)據(jù)層面主要包括欠采樣、過(guò)采樣和混合采樣方法。算法層面主要有集成方法和代價(jià)敏感學(xué)習(xí)方法。
2 方法
2.1 指標(biāo)
在軟件缺陷預(yù)測(cè)領(lǐng)域,有故障模塊的預(yù)測(cè)準(zhǔn)確度是最重要的。雖然精確度(Accuracy)是最基本的模型評(píng)估指標(biāo),但在更關(guān)注少數(shù)類的時(shí)候,整體精確度幾乎沒(méi)有參考價(jià)值[17]。基于這種情況,本實(shí)驗(yàn)放棄了常用的精確度指標(biāo),采用了更能反映少數(shù)類分類準(zhǔn)確度的指標(biāo),這些指標(biāo)是基于混淆矩陣提出的,見(jiàn)表1。
混淆矩陣包括4種可能的分類情況,即:真陽(yáng)性(TP),假陽(yáng)性(FP),真陰性(TN),假陰性(FN)。除了真陽(yáng)性和真陰性是期望預(yù)測(cè)模型達(dá)到的結(jié)果外,假陽(yáng)性會(huì)導(dǎo)致資源浪費(fèi),而假陰性則是一種更為嚴(yán)重的分類錯(cuò)誤,指把原本有缺陷的模塊預(yù)測(cè)成無(wú)缺陷模塊,使其在開(kāi)發(fā)早期被忽視,導(dǎo)致后期測(cè)試需要花費(fèi)更多的資源來(lái)檢測(cè)定位該模塊。因此,應(yīng)該選擇可以直觀反映假陰性和假陽(yáng)性的指標(biāo)。本實(shí)驗(yàn)采用AUC、G-mean、Recall和F1指標(biāo)來(lái)評(píng)價(jià)預(yù)測(cè)性能。
2.2 數(shù)據(jù)集
實(shí)驗(yàn)選取了來(lái)自PROMISE和AEEEM的14個(gè)高不平衡公共數(shù)據(jù)集,具體信息見(jiàn)表2。
表2中的不平衡比率(IR)指多數(shù)類數(shù)量與少數(shù)類數(shù)量的比值,定義為IR=Major/Minor。其中12個(gè)數(shù)據(jù)集的IR在5~10,這也是大多數(shù)高不平衡缺陷數(shù)據(jù)集的IR所在范圍,因此該數(shù)據(jù)集具有代表性。此外,實(shí)驗(yàn)還選取了兩個(gè)IR異常高的數(shù)據(jù)集來(lái)驗(yàn)證所提模型預(yù)測(cè)準(zhǔn)確度是否穩(wěn)定。
2.3 集成預(yù)測(cè)算法
首先介紹實(shí)驗(yàn)中采用的3種典型的機(jī)器學(xué)習(xí)算法(支持向量機(jī)(Support Vector Machine,SVM)、決策樹(shù)(Decision Tree C4.5)和邏輯回歸(Logistic Regression,LR))、6種集成算法(Adaboost M1(AB)、Decorate、Logit Boost(LB)、MultiBoost AB(MAB)、Multi Class Classifier(MCC)和Rotation Forest(ROF))以及16種不平衡學(xué)習(xí)方法,其中,16種不平衡學(xué)習(xí)方法的具體信息見(jiàn)表3。
表4中列出了全部96種基于集成算法與不平衡學(xué)習(xí)方法提出的集成預(yù)測(cè)算法。
2.4 實(shí)驗(yàn)設(shè)計(jì)
實(shí)驗(yàn)主要程序流程如圖1所示。
先利用不平衡學(xué)習(xí)方法對(duì)數(shù)據(jù)集進(jìn)行平衡化處理,然后用處理后的訓(xùn)練集對(duì)集成算法進(jìn)行訓(xùn)練,構(gòu)建預(yù)測(cè)模型。實(shí)驗(yàn)中每一個(gè)數(shù)據(jù)集被分成10份,輪流將其中的9份作為訓(xùn)練集,剩下的1份作為測(cè)試集,待一輪實(shí)驗(yàn)結(jié)束后再將該數(shù)據(jù)集實(shí)例隨機(jī)排序,整個(gè)過(guò)程重復(fù)10次。整個(gè)實(shí)驗(yàn)結(jié)束后每個(gè)模型都會(huì)得到100個(gè)混淆矩陣,用于評(píng)估該模型的性能。
實(shí)驗(yàn)采用M×N路交叉驗(yàn)證方法,主要基于以下考慮:
a. 通過(guò)大量的訓(xùn)練來(lái)獲得穩(wěn)定且可靠的預(yù)測(cè)模型;
b. 許多學(xué)習(xí)算法都表現(xiàn)出順序缺陷問(wèn)題,數(shù)據(jù)集中某些順序可能會(huì)提高或降低性能。因此,需要對(duì)數(shù)據(jù)集中的實(shí)例進(jìn)行隨機(jī)排序,以消除順序?qū)︻A(yù)測(cè)性能的影響。其中,M和N取10。
實(shí)驗(yàn)程序基于WEKA[18]設(shè)計(jì),除1-against-1學(xué)習(xí)方法的迭代次數(shù)由其自身決定外,其余方法的迭代次數(shù)均設(shè)為10次,參數(shù)選擇WEKA中的默認(rèn)值。數(shù)據(jù)預(yù)處理用均值補(bǔ)充缺失值,并用主成分分析法進(jìn)行特征分析。其中,預(yù)測(cè)模型的構(gòu)建與測(cè)試偽代碼如圖2所示。
3 實(shí)驗(yàn)結(jié)果分析
圖3是集成算法與機(jī)器學(xué)習(xí)算法的對(duì)比,圖中數(shù)值取自所有模型的平均值。顯然,無(wú)論哪一種指標(biāo),集成算法的值都高于機(jī)器學(xué)習(xí)算法。
表5展示了6種集成算法在4種不同的指標(biāo)下的預(yù)測(cè)性能對(duì)比。其中ROF-UOBag在AUC指標(biāo)下表現(xiàn)得最好,ROF-1v1組合在G-mean指標(biāo)下表現(xiàn)最好,ROF-UBst在Recall指標(biāo)下表現(xiàn)最好,ROF-UOBag在F1指標(biāo)下表現(xiàn)最好。綜合分析上述表現(xiàn),在6種集成算法中ROF算法的表現(xiàn)相對(duì)較好,UOBag在16種不平衡學(xué)習(xí)方法中表現(xiàn)相對(duì)較好。
表6展示了所有集成預(yù)測(cè)模型的性能對(duì)比,表中數(shù)值是該模型4種指標(biāo)的平均值。紅色部分表示該模型不可采用,其中Dec-COS模型將所有模塊都預(yù)測(cè)為無(wú)缺陷模塊,而其他模型則將所有模塊預(yù)測(cè)為有缺陷模塊。顯然ROF-1v1模型的綜合性能最好。
4 結(jié)束語(yǔ)
實(shí)驗(yàn)驗(yàn)證了提出的集成預(yù)測(cè)算法比傳統(tǒng)的機(jī)器學(xué)習(xí)算法更加適用于解決高不平衡缺陷數(shù)據(jù)集的預(yù)測(cè)問(wèn)題。并且通過(guò)指標(biāo)數(shù)據(jù)分析出了哪個(gè)模型的綜合性能最好,哪些模型在單個(gè)指標(biāo)下性能最好。
由于旋轉(zhuǎn)森林算法在實(shí)驗(yàn)中表現(xiàn)突出,下一步將嘗試改進(jìn)旋轉(zhuǎn)森林算法,進(jìn)一步提高該算法對(duì)高不平衡缺陷數(shù)據(jù)集的預(yù)測(cè)性能。
參 考 文 獻(xiàn)
[1] PIZZI N J.A fuzzy classifier approach to estimating software quality[J].Information Sciences,2013,241:1-11.
[2] 張獻(xiàn),賁可榮,曾杰.基于代碼自然性的切片粒度缺陷預(yù)測(cè)方法[J].軟件學(xué)報(bào),2021,32(7):2219-2241.
[3] MAHMOOD Z,BOWES D,LANE P C R,et al.What is the impact of imbalance on software defect prediction performance?[C]//Proceedings of the 11th International Conference on Predictive Models and Data Analytics in Software Engineering.2015:1-4.
[4] 張夢(mèng)嬌,葉慶衛(wèi),陸志華.基于模糊弱分類器的Ada-?Boost算法[J].數(shù)據(jù)通信,2021(5):35-41.
[5] TUYEN T T,JAAFARI A,YEN H P H,et al.Mapping forest fire susceptibility using spatially explicit ensemble models based on the locally weighted learning algorithm[J].Ecological Informatics,2021,63:101292.
[6] PREETHI I,SURYAPRAKASH S,MATHANKUMAR M.A State-of-Art Approach on Fault Detection in Three Phase Induction Motor Using AI Techniques[C]//2021 5th International Conference on Computing Methodologies and Communication (ICCMC).IEEE,2021:567-573.
[7] ADHIKARY D D,GUPTA D.Applying over 100 classifiers for churn prediction in telecom companies[J].Multimedia Tools and Applications,2021,80(28):35123-35144.
[8] SASAO T,HORIKAWA Y,IGUCHI Y.A Design Meth-?od for Multiclass Classifiers[C]// 2021 IEEE 51st International Symposium on Multiple-Valued Logic (ISMVL).IEEE,2021:148-153.
[9] JIANG Z,HU W,WU Y,et al.Interaction Gain and Rotation Forest Based Key Feature Selection Method for Power System Transient Stability Assessment[C]// 2021 IEEE Sustainable Power and Energy Conference (iSPEC).IEEE,2021:3939-3943.
[10] VASHISHT V,LAL M,SURESHCHANDAR G.A fram-?ework for software defect prediction using neural networks[J].Journal of Software Engineering and Applications,2015,8(8):384-399.
[11] OKUTAN A,YILDIZ O T.Software Defect Prediction Using Bayesian Networks[J].Empirical Software Engineering,2014,19(1):154-181.
[12] SHEYKHMOUSA M,MAHDIANPARI M,GHANBA-?RI H,et al.Support vector machine versus random forest for remote sensing image classification:A meta-analysis and systematic review[J].IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing,2020,13:6308-6325.
[13] MOSER R,PEDRYCZ W,SUCCI G.A comparative an-?alysis of the efficiency of change metrics and static code attributes for defect prediction[C]// Proceedings of the 30th International Conference on Software Engineering,F(xiàn),2008.
[14] JING X Y,YING S,ZHANG Z W,et al.Dictionary learning based software defect prediction[C]//Proceedings of the 36th International Conference on Software Engineering,F(xiàn),2014.
[15] CZIBULA G,MARIAN Z,CZIBULA I G.Software defect prediction using relational association rule mining[J].Information Sciences,2014,264:260-278.
[16] RATHORE S S,KUMAR S.Predicting number of faults in software system using genetic programming[J].Procedia Computer Science,2015,62:303-311.
[17] BORANDACE,Y CALAR F,AKARSU K.Software Fault Prediction in Object Oriented Software Systems Using Ensemble Classifiers[J].Celal Bayar University Journal of Science,2018,14(3):297-302.
[18] HALL M,F(xiàn)RANK E,HOLMES G,et al.The WEKA data mining software:An update[J].ACM SIGKDD Explorations Newsletter,2009,11(1):10-18.
(收稿日期:2022-11-24,修回日期:2023-02-10)
Research on Software Defect Prediction Method Based on
Integrated Algorithm
WEI Bi-xian, LIU Xiao-yan
(Faculty of Information Engineering and Automation , Kunming University of Science and Technology)
Abstract? ?Software defect prediction is critical to ensuring software quality, and imbalanced data has a serious impact on the performance of software defect prediction models, which can be effectively reduced by combining integrated algorithms and imbalanced learning methods. In this paper, some new prediction methods based on six integrated learning algorithms and sixteen imbalanced learning methods were proposed, which subjected to M×N cross-validation experiments on fourteen highly imbalanced datasets, and three commonly-used machine learning algorithms were selected as comparison experiments. Making use of AUC, G-mean, recall and F1 indicators evaluate the prediction performance shows that, the average value of the proposed prediction methods is 1.5% higher than that of the three conventional machine learning algorithms.
Key words? ? software defect prediction, integrated algorithm, machine learning, imbalanced data