基于集成算法的软件缺陷预测方法研究
2023-08-06魏比贤刘晓燕
魏比贤 刘晓燕
摘 要 软件缺陷预测对保证软件质量至关重要,不平衡数据严重影响软件缺陷预测模型的性能,采用集成算法与不平衡学习方法相结合的方式可以有效解决该问题。基于6种集成学习算法与16种不平衡学习方法,提出一些新的集成预测方法,在14个高不平衡数据集上进行M×N路交叉验证实验,并选取3种常用机器学习算法作为对比。使用AUC、G-mean、recall和F1指标评价预测性能。实验结果表明:所提预测方法指标平均值比3种传统机器学习算法高出1.5%。
关键词 软件缺陷预测 集成算法 机器学习 不平衡数据
中图分类号 TP311.5 文献标识码 A 文章编号 1000-3932(2023)04-0549-08
软件质量是软件工程领域非常重视的问题[1]。然而随着软件规模的扩大,软件系统复杂性快速增长,模块中存在缺陷的风险也越来越高[2]。软件缺陷修复占据维护成本的很大比例,资源和预算并不允许对整个系统进行严格全面的测试。因此,识别出有缺陷的软件模块可以帮助人们快速合理分配有限的时间和宝贵的资源,从而获得更好的质量。软件缺陷预测被看作是一个二分类问题,把模块分为有缺陷模块或无缺陷模块。在实际的缺陷预测中,有缺陷的类只占少数(阳性样本),无缺陷的类占大多数(阴性样本),因此缺陷数据的分布是高度倾斜的,在机器学习领域也被称为类不平衡数据。这种高度不平衡的数据集在很大程度上影响了机器学习分类算法预测少数类[3]的能力。为了解决这个问题,一些研究人员提出将不平衡学习方法嵌入到机器学习算法中,建立更加适用于解决不平衡数据集分类问题的集成学习分类器。
文中的主要贡献有:为了进一步提升软件缺陷预测模型的性能,引入6种集成学习算法,具体为:AdaboostM1[4]、Decorate[5]、Logit Boost[6]、MultiBoost AB[7]、MultiClass Classifier[8]、Rotation Forest[9],将其与常用的不平衡学习方法结合,提出一些新的集成预测算法;在14个高不平衡数据集上采用M×N路交叉验证方法对提出的算法进行较全面客观的测试。通过测试结果分析哪种集成预测算法综合表现最好,哪种集成算法某一性能表现最好,以便后续研究者从不同侧重点挑选合适的模型。
1 相关研究
软件缺陷预测是在开发早期就识别系统缺陷的一种方法。通过大量历史缺陷数据建立代码特征与缺陷之间的关系,预测哪些模块容易出现缺陷。近年来,研究人员探索各种方法对软件缺陷模块进行预测,大量传统的分类算法被直接用于构建软件缺陷预测模型,常用的分类算法有:文献[10]采用的人工神经网络算法,文献[11]使用的贝叶斯网络算法,文献[12]用的SVM算法以及文献[13]用于测试对比性能的决策树、逻辑回归等算法,除此以外还有字典学习[14]、关联规则[15]、进化算法[16]等若干算法。
然而这类直接由分类算法构建的模型忽略了缺陷数据集的类分布不平衡问题,很可能会为了达到更高的准确率而将所有模块都预测为无缺陷模块。例如,对于一个缺陷模块只占总体2%的数据集,即使把所有的模块都归类为无缺陷模块,也会获得98%的高准确率。显然这种忽视少数类预测结果的模型不是我们想要的。于是一些研究人员提出可以从数据层面和算法层面来解决该问题。数据层面主要包括欠采样、过采样和混合采样方法。算法层面主要有集成方法和代价敏感学习方法。
2 方法
2.1 指标
在软件缺陷预测领域,有故障模块的预测准确度是最重要的。虽然精确度(Accuracy)是最基本的模型评估指标,但在更关注少数类的时候,整体精确度几乎没有参考价值[17]。基于这种情况,本实验放弃了常用的精确度指标,采用了更能反映少数类分类准确度的指标,这些指标是基于混淆矩阵提出的,见表1。
混淆矩阵包括4种可能的分类情况,即:真阳性(TP),假阳性(FP),真阴性(TN),假阴性(FN)。除了真阳性和真阴性是期望预测模型达到的结果外,假阳性会导致资源浪费,而假阴性则是一种更为严重的分类错误,指把原本有缺陷的模块预测成无缺陷模块,使其在开发早期被忽视,导致后期测试需要花费更多的资源来检测定位该模块。因此,应该选择可以直观反映假阴性和假阳性的指标。本实验采用AUC、G-mean、Recall和F1指標来评价预测性能。
2.2 数据集
实验选取了来自PROMISE和AEEEM的14个高不平衡公共数据集,具体信息见表2。
表2中的不平衡比率(IR)指多数类数量与少数类数量的比值,定义为IR=Major/Minor。其中12个数据集的IR在5~10,这也是大多数高不平衡缺陷数据集的IR所在范围,因此该数据集具有代表性。此外,实验还选取了两个IR异常高的数据集来验证所提模型预测准确度是否稳定。
2.3 集成预测算法
首先介绍实验中采用的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种基于集成算法与不平衡学习方法提出的集成预测算法。
2.4 实验设计
实验主要程序流程如图1所示。
先利用不平衡学习方法对数据集进行平衡化处理,然后用处理后的训练集对集成算法进行训练,构建预测模型。实验中每一个数据集被分成10份,轮流将其中的9份作为训练集,剩下的1份作为测试集,待一轮实验结束后再将该数据集实例随机排序,整个过程重复10次。整个实验结束后每个模型都会得到100个混淆矩阵,用于评估该模型的性能。
实验采用M×N路交叉验证方法,主要基于以下考虑:
a. 通过大量的训练来获得稳定且可靠的预测模型;
b. 许多学习算法都表现出顺序缺陷问题,数据集中某些顺序可能会提高或降低性能。因此,需要对数据集中的实例进行随机排序,以消除顺序对预测性能的影响。其中,M和N取10。
实验程序基于WEKA[18]设计,除1-against-1學习方法的迭代次数由其自身决定外,其余方法的迭代次数均设为10次,参数选择WEKA中的默认值。数据预处理用均值补充缺失值,并用主成分分析法进行特征分析。其中,预测模型的构建与测试伪代码如图2所示。
3 实验结果分析
图3是集成算法与机器学习算法的对比,图中数值取自所有模型的平均值。显然,无论哪一种指标,集成算法的值都高于机器学习算法。
表5展示了6种集成算法在4种不同的指标下的预测性能对比。其中ROF-UOBag在AUC指标下表现得最好,ROF-1v1组合在G-mean指标下表现最好,ROF-UBst在Recall指标下表现最好,ROF-UOBag在F1指标下表现最好。综合分析上述表现,在6种集成算法中ROF算法的表现相对较好,UOBag在16种不平衡学习方法中表现相对较好。
表6展示了所有集成预测模型的性能对比,表中数值是该模型4种指标的平均值。红色部分表示该模型不可采用,其中Dec-COS模型将所有模块都预测为无缺陷模块,而其他模型则将所有模块预测为有缺陷模块。显然ROF-1v1模型的综合性能最好。
4 结束语
实验验证了提出的集成预测算法比传统的机器学习算法更加适用于解决高不平衡缺陷数据集的预测问题。并且通过指标数据分析出了哪个模型的综合性能最好,哪些模型在单个指标下性能最好。
由于旋转森林算法在实验中表现突出,下一步将尝试改进旋转森林算法,进一步提高该算法对高不平衡缺陷数据集的预测性能。
参 考 文 献
[1] PIZZI N J.A fuzzy classifier approach to estimating software quality[J].Information Sciences,2013,241:1-11.
[2] 张献,贲可荣,曾杰.基于代码自然性的切片粒度缺陷预测方法[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] 张梦娇,叶庆卫,陆志华.基于模糊弱分类器的Ada- Boost算法[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,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,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,FRANK 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