基于代价敏感神经网络算法的软件缺陷预测

2012-01-19 12:14:52缪林松
电子科技 2012年6期
关键词:软件缺陷集上代价

缪林松

(南京航空航天大学计算机科学与技术学院,江南南京 210016)

基于代价敏感神经网络算法的软件缺陷预测

缪林松

(南京航空航天大学计算机科学与技术学院,江南南京 210016)

软件缺陷预测作为软件工程领域的重要研究内容已有近30年。近年来,随着机器学习技术的发展,传统机器学习技术基于静态代码属性的软件缺陷预测领域得到广泛应用。然而,传统的机器学习算法并未考虑软件缺陷预测过程中,常见的代价敏感问题与类不均衡问题。文中将基于过采样技术和阈值移动技术的代价敏感神经网络算法应用于软件缺陷预测领域,从而解决该领域的代价敏感问题与类不均衡问题。在NASA软件缺陷预测标准数据集上的实验证明了其有效性。

软件缺陷预测;代价敏感神经网络;代价敏感;类不均衡

软件缺陷预测,即自动识别软件系统中含有缺陷的模块,以此有效分配有限的测试资源。随着软件规模和复杂度的增加,软件缺陷预测成为软件工程领域的研究热点。同时,机器学习技术的发展,机器学习技术被众多研究人员应用于软件缺陷预测领域[1-5]。与此同时,研究表明绝大多数软件缺陷集中在少数比例的软件模块中[6]。Boehm指出软件系统中20%的软件模块包含80%的软件缺陷,这说明软件缺陷预测领域存在严重的类不均衡问题[7]。此外,将有缺陷软件模块错误预测为无缺陷模块造成的代价远大于将无缺陷软件模块错误预测为有缺陷模块造成的代价,前者将会使得软件的发行版本中含有缺陷从而影响软件可靠性,而后者仅将测试资源浪费在无缺陷模块,这说明软件缺陷预测领域存在着代价敏感问题。然而,传统的机器学习技术是以取得高准确率为目标,其并未充分考虑软件缺陷预测领域的代价敏感问题和类不均衡问题。

机器学习领域的研究表明,代价敏感学习技术可较好的解决代价敏感问题和类不均衡问题[8]。文中通过基于过采样(Over-Sampling)技术和阈值移动(Threshold-Moving)技术的代价敏感反向传播神经网络 算 法 CSBNN[9]Cost - Sensitive Back Propagation Neural Networks)引入软件缺陷预测领域,从而解决该领域存在的代价敏感问题与类不均衡问题。在NASA软件缺陷预测标准数据集上的实验结果充分证明CSBNN算法的有效性。

1 代价敏感神经网络算法

假设有C类样本,第i类训练样本的数目为Ni。令 Cost[i,c](i,c∈{1,…,C})表示将第 i类样本错分类为第c类样本的代价,Cost[i]表示第i类样本的重要性代价,则根据文献[10~11]可以知道。

1.1 过采样CSBNN

过采样CSBNN算法通过改变训练样本的分布来解决代价敏感问题和类不均衡问题。概括的讲,过采样CSBNN算法通过复制代价较高类别的训练样本,从而实现不同类别的样本数目与代价成比例的目的。

其中,λ类是需要复制样本数目最小的类别,由式(2)判别。

1.2 阈值移动CSBNN

阈值移动CSBNN算法,简称CSBNN-2,将非代价敏感神经网络的判决边界向代价较低一类样本的边界偏移,从而降低代价较高一类样本被分错类的风险。与过采样CSBNN算法不同,该算法在训练阶段不做代价敏感处理,而是在预测阶段引入代价敏感信息。

令Oi(i∈{1,…,C})表示非代价敏感神经网络各输出单元只是输出值,则且0≤Qi≤1。这样,在标准神经网络分类器中输出的样本类别是,在阈值移动算法中,输出的类别则是计算如式(3)

1.3 NASA软件缺陷预测应用

NASA软件缺陷预测标准数据池中的每一数据集中包含若干样本,每个样本对应于一个软件模块,每个软件模块由若干静态代码属性和标识软件模块中缺陷数量的属性组成。每一数据集中标记的静态代码属性主要有代码行数(Loc)、Halstead属性[12]和 McCabe属性[13]。文中选择在 NASA 数据池中的 CM1、KC3、MW1、PC1、PC3、PC46 个数据集上进行验证试验。可直接选择 Promise中经过预处理的该6个数据集[14]。

在软件缺陷预测应用中,预测结果可表示为如表1所示的混淆矩阵(Confusion Matrix)。在软件缺陷预测中存在两种类型的预测错误代价:

(1)错误接收代价CFP:将有缺陷模块预测为无缺陷模块造成的代价。

(2)错误拒绝代价CFN:将无缺陷模块预测为有缺陷模块造成的代价。

表1 软件缺陷预测混淆矩阵

由上文分析,可以确定错误接收造成的代价要远大于错误拒绝造成的代价,即通常情况下CFP>CFN。

按如下步骤将CSBNN-1、CSBNN-2算法应用至NASA软件缺陷预测标准数据池中的6个数据集上:

(1)对由静态代码属性表示的数据集中的样本进行归一化的预处理操作。

(2)将数据集划分为训练集与测试集两部分。

(3)根据领域专家知识或用户需要设定CFN、CFP的值,以此来控制CSBNN算法对不同类别样本的错误控制。

(4)在训练集上利用文中介绍的两类CSBNN算法训练用于软件缺陷预测的分类器。

(5)利用第(4)步中训练的分类器对测试集数据进行缺陷预测。

2 实验

通过在NASA数据池中的6个数据集上的实验说明,文中的CSBNN-1、CSBNN-2算法较传统的非代价敏感神经网络算法BNN(Back-propagation Neural Networks),在软件缺陷预测应用中具有更好的处理代价敏感问题和类不均衡问题的能力。

实验中,采用10次10折交叉验证设置,即每次将数据集划分10份,其中9份作为训练样本,1份作为测试样本。最后的实验结果为重复10次如上的操作取平均值。设定CFN=1,CFP=10。由于文中主要考察算法在处理代价敏感问题与类不均衡问题时的性能,因此文中采用错分类总代价Cost、敏感度Sensitivity作为主要的评价标准。此外,记录分类准确率Accuracy、特异度Specificity作为参考指标。敏感度与特异度的定义如式(4),式(5)所示

表2 实验结果对比

表2记录了 BNN、CSBNN-1、CSBNN-2这3种算法在NASA数据池中6个数据集上的实验结果。其中BNN为非代价敏感算法,CSBNN-1和CSBNN-2算法为BNN算法的两种代价敏感版本。从表2可以看出,较传统的分类算法 BNN,代价敏感分类算法CSBNN-1与CSBNN-2能够达到更小的错分类代价。同时CSBNN-1、CSBNN-2算法能够获得更高的敏感度Sensitivity,由式(4)所示,敏感度越大,则错误接收的比率越小,说明代价敏感算法能够较好地减少代价较高一类样本的错误数目。同时观察准确率Accuracy、特异度Specificity两个指标,可以发现代价敏感分类算法CSBNN-1、CSBNN-2算法在提高代价较高一类样本的同时更好的保证总的预测准确率,即并未明显降低代价较小一类样本的预测精度。通过以上的实验结果与分析,可发现,较传统的分类算法,代价敏感分类算法CSBNN-1、CSBNN-2能够较好地解决软件缺陷预测领域出现的代价敏感问题与类不均衡问题。同时,发现在不同的数据集上CSBNN-1、CSBNN-2两者之间的性能各有优劣,两者之间的选择在机器学习领域也是个难题。然而,总体上代价敏感算法CSBNN-1、CSBNN-2要优于传统分类算法BNN。

文中固定CFP/CFN=10/1,下面讨论不同的代价比率对于CSBNN-1、CSBNN-2算法软件缺陷预测中应用的影响。首先,设定CFN为1。然后,令CFP/CFN的值依次取{1,2,4,8,16,32,64}。CSBNN -1、CSBNN -2算法在 CM1、KC3、MW1、PC1数据集上的错分类总代价随代价比率变化的结果如图1所示。在图1中代价比率轴采用了对数刻度以更好说明问题。由图1可看出,尽管CFP呈指数增长,两种代价敏感算法的错分类总代价并未随着CFP指数增长。这说明代价敏感算法CSBNN-1、CSBNN-2能够更好的控制代价较高一类错误的数目,且当代价比率越高控制的越好。

图1 CSBNN-1、CSBNN-2错分类总代和代价比率

3 结束语

针对传统机器学习算法不能解决软件缺陷预测普遍存在的代价敏感问题与类不均衡问题,以机器学习领域中代价敏感学习算法能够同时解决代价敏感问题和类不均衡问题的理论为基础,通过将代价敏感学习算法CSBNN-1、CSBNN-2引入软件缺陷预测领域,利用该类算法同时解决软件缺陷预测中存在的代价敏感问题和类不均衡问题。在NASA软件缺陷预测标准数据集上的实验结果说明CSBNN-1、CSBNN-2算法解决软件缺陷预测领域的代价敏感问题与类不均衡问题的有效性。

[1]MENZIES T,GREENWALD J,FRANK A.Data mining static code attributes to learn defect predictors[J].IEEE Transaction on Software Engineering,2007,32(11):2 -13.

[2]LESSMANN S,BAESENS B,MUES C,et al.Benchmarking classification models for software defect prediction:a proposed framework and novel findings[J].IEEE Transactions on Software Engineering,2008,4(34):485 -496.

[3]KHOSHGOFTAAR T M,PANDYA A S,LANNING D L.Application of neural networks for predicting defects[J].Annals of Software Engineering,1995,1(1):141 -154.

[4]MENZIES T,DISTEFANO J,ORREGO A,et al.Assessing predictors of software defects[C].In Proceedings of Workshop on Predictive Software Models,2004.

[5]PORTER A,SELBY R W.Evaluating techniques for generating metric - based classification trees[J].Journal of Systems and Software,1997,12(2):166 -173.

[6]BOEHM B W,PAPACCIO P N.Understanding and controlling software costs[J].IEEE Transactions on Software Engineering,1988,14(10):1462 -1477.

[7]BOEHM B W.Industrial software metrics top 10 list[J].IEEE Software,1987,4(5):84 -85.

[8]MALOOF M A.Learning when data sets are imbalanced and when costs are unequal and unknown[C].Washington,DC:In Working Notes of the ICML'03 Workshop on Learning from Imbalanced Data Sets,2003,8:328 -334.

[9]ZHOU Z H,LIU X Y.Training cost- sensitive neural networks with methods addressing the class imbalance problem[J].IEEE Transactions on Knowledge and Data Engineering,2006,18(1):63 -77.

[10]BREIMAN L,FRIEDMAN J H,OLSHEN R A,et al.Classification and regression trees[M].Belmont,CA:Wadsworth,1984.

[11]TING K M.An instance-weighting method to induce costsensitive tree[J].IEEE Transactions on Knowledge and Data Engineering,2002,14(3):413 -425.

[12]MAURICE HOWARD HALSTEAD.Elements of software science[M].Elsevier University of Michigan,1977.

[13]MCCABE T J.A complexity measure.IEEE Transaction on Software Engineering[J].1976,2(4):308 -320.

[14]BOETTICHER G,MENZIES T,OSTRAND T.PROMISE Repository of empirical software engineering data[D/OL].USA:West Virginia University,2007.

Software Defect Prediction Based on Cost-Sensitive Neural Networks

MIAO Linsong
(College of Computer Science & Technology,Nanjing University of Aeronautics& Astronautics,Nanjing 210016,China)

Software defect prediction has been studied as an important research topic for 30 years in software engineering.Recently,with the development of machine learning techniques,traditional machine learning has been applied in software defect prediction based on static code attributes successfully.However,the traditional machine learning does not consider the cost-sensitive problem and class-imbalance problem in software defect prediction applications.We study the application of cost-sensitive neural networks based on over-sampling and threshold-moving to software defect prediction.The experimental results on NASA software defect prediction benchmarking dataset demonstrate the algorithm's efficacy.

software defect prediction;cost-sensitive neural networks;cost-sensitive;class-imbalance

TP391

A

1007-7820(2012)06-075-04

2011-12-24

缪林松(1986—),男,硕士研究生。研究方向:机器学习,模式识别。

猜你喜欢
软件缺陷集上代价
基于源文件可疑度的静态软件缺陷检测方法研究
Cookie-Cutter集上的Gibbs测度
链完备偏序集上广义向量均衡问题解映射的保序性
基于NPE-SVM的软件缺陷预测模型
爱的代价
海峡姐妹(2017年12期)2018-01-31 02:12:22
复扇形指标集上的分布混沌
代价
开源程序的软件缺陷分布特征的量化分析研究
成熟的代价
中学生(2015年12期)2015-03-01 03:43:53
软件缺陷管理方案分析