魏比賢 劉曉燕
摘 要 軟件缺陷預(yù)測對保證軟件質(zhì)量至關(guān)重要,不平衡數(shù)據(jù)嚴重影響軟件缺陷預(yù)測模型的性能,采用集成算法與不平衡學習方法相結(jié)合的方式可以有效解決該問題?;?種集成學習算法與16種不平衡學習方法,提出一些新的集成預(yù)測方法,在14個高不平衡數(shù)據(jù)集上進行M×N路交叉驗證實驗,并選取3種常用機器學習算法作為對比。使用AUC、G-mean、recall和F1指標評價預(yù)測性能。實驗結(jié)果表明:所提預(yù)測方法指標平均值比3種傳統(tǒng)機器學習算法高出1.5%。
關(guān)鍵詞 軟件缺陷預(yù)測 集成算法 機器學習 不平衡數(shù)據(jù)
中圖分類號 TP311.5? ?文獻標識碼 A? ?文章編號 1000-3932(2023)04-0549-08
軟件質(zhì)量是軟件工程領(lǐng)域非常重視的問題[1]。然而隨著軟件規(guī)模的擴大,軟件系統(tǒng)復(fù)雜性快速增長,模塊中存在缺陷的風險也越來越高[2]。軟件缺陷修復(fù)占據(jù)維護成本的很大比例,資源和預(yù)算并不允許對整個系統(tǒng)進行嚴格全面的測試。因此,識別出有缺陷的軟件模塊可以幫助人們快速合理分配有限的時間和寶貴的資源,從而獲得更好的質(zhì)量。軟件缺陷預(yù)測被看作是一個二分類問題,把模塊分為有缺陷模塊或無缺陷模塊。在實際的缺陷預(yù)測中,有缺陷的類只占少數(shù)(陽性樣本),無缺陷的類占大多數(shù)(陰性樣本),因此缺陷數(shù)據(jù)的分布是高度傾斜的,在機器學習領(lǐng)域也被稱為類不平衡數(shù)據(jù)。這種高度不平衡的數(shù)據(jù)集在很大程度上影響了機器學習分類算法預(yù)測少數(shù)類[3]的能力。為了解決這個問題,一些研究人員提出將不平衡學習方法嵌入到機器學習算法中,建立更加適用于解決不平衡數(shù)據(jù)集分類問題的集成學習分類器。
文中的主要貢獻有:為了進一步提升軟件缺陷預(yù)測模型的性能,引入6種集成學習算法,具體為:AdaboostM1[4]、Decorate[5]、Logit Boost[6]、MultiBoost AB[7]、MultiClass Classifier[8]、Rotation Forest[9],將其與常用的不平衡學習方法結(jié)合,提出一些新的集成預(yù)測算法;在14個高不平衡數(shù)據(jù)集上采用M×N路交叉驗證方法對提出的算法進行較全面客觀的測試。通過測試結(jié)果分析哪種集成預(yù)測算法綜合表現(xiàn)最好,哪種集成算法某一性能表現(xiàn)最好,以便后續(xù)研究者從不同側(cè)重點挑選合適的模型。
1 相關(guān)研究
軟件缺陷預(yù)測是在開發(fā)早期就識別系統(tǒng)缺陷的一種方法。通過大量歷史缺陷數(shù)據(jù)建立代碼特征與缺陷之間的關(guān)系,預(yù)測哪些模塊容易出現(xiàn)缺陷。近年來,研究人員探索各種方法對軟件缺陷模塊進行預(yù)測,大量傳統(tǒng)的分類算法被直接用于構(gòu)建軟件缺陷預(yù)測模型,常用的分類算法有:文獻[10]采用的人工神經(jīng)網(wǎng)絡(luò)算法,文獻[11]使用的貝葉斯網(wǎng)絡(luò)算法,文獻[12]用的SVM算法以及文獻[13]用于測試對比性能的決策樹、邏輯回歸等算法,除此以外還有字典學習[14]、關(guān)聯(lián)規(guī)則[15]、進化算法[16]等若干算法。
然而這類直接由分類算法構(gòu)建的模型忽略了缺陷數(shù)據(jù)集的類分布不平衡問題,很可能會為了達到更高的準確率而將所有模塊都預(yù)測為無缺陷模塊。例如,對于一個缺陷模塊只占總體2%的數(shù)據(jù)集,即使把所有的模塊都歸類為無缺陷模塊,也會獲得98%的高準確率。顯然這種忽視少數(shù)類預(yù)測結(jié)果的模型不是我們想要的。于是一些研究人員提出可以從數(shù)據(jù)層面和算法層面來解決該問題。數(shù)據(jù)層面主要包括欠采樣、過采樣和混合采樣方法。算法層面主要有集成方法和代價敏感學習方法。
2 方法
2.1 指標
在軟件缺陷預(yù)測領(lǐng)域,有故障模塊的預(yù)測準確度是最重要的。雖然精確度(Accuracy)是最基本的模型評估指標,但在更關(guān)注少數(shù)類的時候,整體精確度幾乎沒有參考價值[17]?;谶@種情況,本實驗放棄了常用的精確度指標,采用了更能反映少數(shù)類分類準確度的指標,這些指標是基于混淆矩陣提出的,見表1。
混淆矩陣包括4種可能的分類情況,即:真陽性(TP),假陽性(FP),真陰性(TN),假陰性(FN)。除了真陽性和真陰性是期望預(yù)測模型達到的結(jié)果外,假陽性會導(dǎo)致資源浪費,而假陰性則是一種更為嚴重的分類錯誤,指把原本有缺陷的模塊預(yù)測成無缺陷模塊,使其在開發(fā)早期被忽視,導(dǎo)致后期測試需要花費更多的資源來檢測定位該模塊。因此,應(yīng)該選擇可以直觀反映假陰性和假陽性的指標。本實驗采用AUC、G-mean、Recall和F1指標來評價預(yù)測性能。
2.2 數(shù)據(jù)集
實驗選取了來自PROMISE和AEEEM的14個高不平衡公共數(shù)據(jù)集,具體信息見表2。
表2中的不平衡比率(IR)指多數(shù)類數(shù)量與少數(shù)類數(shù)量的比值,定義為IR=Major/Minor。其中12個數(shù)據(jù)集的IR在5~10,這也是大多數(shù)高不平衡缺陷數(shù)據(jù)集的IR所在范圍,因此該數(shù)據(jù)集具有代表性。此外,實驗還選取了兩個IR異常高的數(shù)據(jù)集來驗證所提模型預(yù)測準確度是否穩(wěn)定。
2.3 集成預(yù)測算法
首先介紹實驗中采用的3種典型的機器學習算法(支持向量機(Support Vector Machine,SVM)、決策樹(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種不平衡學習方法,其中,16種不平衡學習方法的具體信息見表3。
表4中列出了全部96種基于集成算法與不平衡學習方法提出的集成預(yù)測算法。
2.4 實驗設(shè)計
實驗主要程序流程如圖1所示。
先利用不平衡學習方法對數(shù)據(jù)集進行平衡化處理,然后用處理后的訓練集對集成算法進行訓練,構(gòu)建預(yù)測模型。實驗中每一個數(shù)據(jù)集被分成10份,輪流將其中的9份作為訓練集,剩下的1份作為測試集,待一輪實驗結(jié)束后再將該數(shù)據(jù)集實例隨機排序,整個過程重復(fù)10次。整個實驗結(jié)束后每個模型都會得到100個混淆矩陣,用于評估該模型的性能。
實驗采用M×N路交叉驗證方法,主要基于以下考慮:
a. 通過大量的訓練來獲得穩(wěn)定且可靠的預(yù)測模型;
b. 許多學習算法都表現(xiàn)出順序缺陷問題,數(shù)據(jù)集中某些順序可能會提高或降低性能。因此,需要對數(shù)據(jù)集中的實例進行隨機排序,以消除順序?qū)︻A(yù)測性能的影響。其中,M和N取10。
實驗程序基于WEKA[18]設(shè)計,除1-against-1學習方法的迭代次數(shù)由其自身決定外,其余方法的迭代次數(shù)均設(shè)為10次,參數(shù)選擇WEKA中的默認值。數(shù)據(jù)預(yù)處理用均值補充缺失值,并用主成分分析法進行特征分析。其中,預(yù)測模型的構(gòu)建與測試偽代碼如圖2所示。
3 實驗結(jié)果分析
圖3是集成算法與機器學習算法的對比,圖中數(shù)值取自所有模型的平均值。顯然,無論哪一種指標,集成算法的值都高于機器學習算法。
表5展示了6種集成算法在4種不同的指標下的預(yù)測性能對比。其中ROF-UOBag在AUC指標下表現(xiàn)得最好,ROF-1v1組合在G-mean指標下表現(xiàn)最好,ROF-UBst在Recall指標下表現(xiàn)最好,ROF-UOBag在F1指標下表現(xiàn)最好。綜合分析上述表現(xiàn),在6種集成算法中ROF算法的表現(xiàn)相對較好,UOBag在16種不平衡學習方法中表現(xiàn)相對較好。
表6展示了所有集成預(yù)測模型的性能對比,表中數(shù)值是該模型4種指標的平均值。紅色部分表示該模型不可采用,其中Dec-COS模型將所有模塊都預(yù)測為無缺陷模塊,而其他模型則將所有模塊預(yù)測為有缺陷模塊。顯然ROF-1v1模型的綜合性能最好。
4 結(jié)束語
實驗驗證了提出的集成預(yù)測算法比傳統(tǒng)的機器學習算法更加適用于解決高不平衡缺陷數(shù)據(jù)集的預(yù)測問題。并且通過指標數(shù)據(jù)分析出了哪個模型的綜合性能最好,哪些模型在單個指標下性能最好。
由于旋轉(zhuǎn)森林算法在實驗中表現(xiàn)突出,下一步將嘗試改進旋轉(zhuǎn)森林算法,進一步提高該算法對高不平衡缺陷數(shù)據(jù)集的預(yù)測性能。
參 考 文 獻
[1] PIZZI N J.A fuzzy classifier approach to estimating software quality[J].Information Sciences,2013,241:1-11.
[2] 張獻,賁可榮,曾杰.基于代碼自然性的切片粒度缺陷預(yù)測方法[J].軟件學報,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] 張夢嬌,葉慶衛(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