海洋资源大数据系统中缺陷多步预测方法

2021-07-06 02:10彭小红谢仕义梁春林蔡莉华
计算机技术与发展 2021年6期
关键词:倾向性组件效能

李 昭,彭小红,谢仕义*,梁春林,赵 一,蔡莉华

(1.南方海洋科学与工程广东省实验室(湛江) 南海资源大数据中心,广东 湛江 524013;2.广东海洋大学 数学与计算机学院,广东 湛江 524088)

0 引 言

软件缺陷在软件研发过程中不可避免,其严重影响着软件产品的质量。由于在软件研发过程中,缺陷修复得越晚,系统损失和修复成本就越大,因而研发人员希望在软件生命周期的早期及时发现尽可能多的缺陷并修复缺陷[1]。然而受限于人力及时间成本,通常无法检测全部组件,若能预先识别可能存在缺陷的组件及缺陷数量,将有限的测试资源合理分配给缺陷数更多的被测组件,这样的解决方案实用性更强。软件缺陷预测是提升软件质量的有效途径,成为近年来研究的焦点[2-4]。虽然现有研究在缺陷倾向性和缺陷数预测方面已取得显著成果,但从训练数据的平衡性和预测效能考虑,主要存在两方面问题:(1)训练样本存在不平衡性[5-7];(2)单一的回归技术对有缺陷组件支持能力不足。

该文针对缺陷倾向性和缺陷数预测领域存在的训练数据不平衡和预测效能问题,研究基于SMOTE的均衡样本数据构建技术、面向缺陷数预测的回归技术选取、支持先分类后回归的缺陷数多步预测,以期推进组件缺陷数多步预测和检测修复研究与应用的继续深入。

1 相关工作比较

1.1 基于二分类技术的缺陷预测

大量研究对如何运用二分类技术构建缺陷预测模型进行了广泛探索[5,8],包括监督学习(如决策树、神经网络、支持向量机等)、半监督学习(如期望最大化算法)及无监督学习(如K均值聚类、谱聚类等)。

文献[5]将NASA数据集作为样本数据,提出基于协作表达分类的缺陷预测方法,可降低计算复杂度并提升分类效能,研究中设计了基于CRC的学习器,然后构建基于CRC的预测器,对有缺陷组件和无缺陷组件进行分类。文献[9]采用同一软件的七个历史版本及相关特征来预测当前版本的缺陷,研究中对朴素贝叶斯、决策树和随机森林算法的建模效果进行了比较,通过分析模型的AUC值,发现随机森林算法的预测效能最佳。文献[10]在11种数据集上将15种不同的贝叶斯网络分类器与其他经典的缺陷预测方法进行比较,实验结论建议采用贝叶斯网络构建具有较少节点的简单且可理解的网络。文献[11]对比了13种机器学习方法,结果表明朴素贝叶斯、神经网络和基于实例的学习其效能优于其他方法。

1.2 基于回归技术的缺陷预测

回归技术通过度量软件相关属性以预测软件组件包含的缺陷数。最初,文献[12]提出了一种预测软件组件中缺陷数的方法,研究中利用广义线性回归算法和软件变更历史指标建立缺陷预测模型,结果表明,缺陷数预测提供了更多有价值信息,而不仅限于识别某一组件是否含有缺陷。文献[6]探索了决策树回归(DTR)用于软件同一版本内和不同版本间缺陷预测的效能,实验分析采用了PROMISE数据集中5个开源软件项目的19个版本,使用绝对误差和相对误差以评估DTR的预测精度,结果表明,决策树回归用于版本内和版本间缺陷数预测能取得较高的准确性。文献[13]提出一种遗传编程方法用于预测软件系统的缺陷数,并选用PROMISE数据集中10个软件项目的缺陷数据开展实验,采用预测模型的错误率、召回率和完整性指标评估了方法的效能。文献[14]通过逐步线性回归算法构建预测模型,以探索度量元对模型性能的影响。文献[15]采用广义线性回归算法和回归树算法建立基准模型,基于CK度量元和LOC度量元[16],使用遗传算法自动搜索可优化成本效益的内部参数,结果表明遗传算法训练的回归模型比传统模型效能更高。

1.3 基于聚类技术的缺陷预测

基于聚类技术的缺陷预测方法通过分析软件特征与缺陷数据来建立软件属性与缺陷间的关联关系。伴随机器学习技术的蓬勃发展,采用聚类算法预测软件缺陷也演化为重要的研究与应用方向。文献[17]建议为增强对软件过程的控制并实现软件的高可靠性,需在软件生命周期早期使用K-means聚类技术对缺陷进行预测,该方法已在NASA数据集进行了验证,缺陷预测的准确性较高。文献[18]提出了一种面向同一软件不同版本间的缺陷预测技术,使用结构信息对软件类进行聚类,然后识别每个类中的缺陷信息,利用同一类簇中的相关类进行模型训练,而不是利用整个系统含有的类进行训练。通过PROMISE数据集中8个开源软件项目的29个版本开展实证研究,并结合多元线性回归算法构建预测模型,结果表明,基于同一类簇的预测模型其效能优于基于整个系统全部类的模型。文献[19]分析了混合模糊遗传算法和基于模糊聚类的技术,结果表明,在软件缺陷严重性预测中,模糊聚类技术取得了较高效能。文献[20]将无监督分类技术用于缺陷预测,以规避不同类型软件中缺陷的异构性。

部分研究将聚类技术用于特征选择,文献[21]提出了一个新的特征选择框架FECAR,该框架首先将原始特征划分为k个类簇,然后在每个类簇中选取相关特征,实验结果验证了该框架对软件缺陷预测的有效性。文献[22]提出一种基于选择策略的特征选择方法,包含特征聚类和特征选择两个阶段,应用k-medoids方法实现了特征的有效聚类与排序。

由此可见,虽然目前国内外有很多研究在缺陷倾向性预测、缺陷数预测和缺陷预测效能优化方面进行了大量卓有成效的工作,特别是解决问题的方法有很多可借鉴之处,但直接针对组件缺陷数多步预测及其效能提升、准确性更高且实用性更强的预测理论和技术还相当缺乏。

2 均衡样本数据集的构建

缺陷预测中,大多数常用开源数据集普遍存在训练样本不平衡问题,即训练样本中有缺陷组件远少于无缺陷组件,且现有技术缺乏对样本数据不平衡问题的处理,导致训练出的模型其预测效能偏向于无缺陷组件,弱化了对有缺陷组件的兼顾,降低了预测的准确性。需选用合适的技术并设置合理的参数对数据集中有缺陷组件样本进行过采样,生成均衡的样本数据集,应能有效支持组件缺陷数多步预测,提升预测的准确性。

该文通过合成少数类过采样技术(synthetic minority over-sampling technique,SMOTE)[23]对不均衡的样本数据集中有缺陷组件(少数类样本)进行过采样,生成新的有缺陷组件样本,将新生成的样本与原有数据集进行合并,增加有缺陷组件在数据集中的占比,获取有缺陷组件数与无缺陷组件数均衡的样本数据集,以增强预测模型对有缺陷组件的偏好,为缺陷数多步预测提供均衡的样本数据集支持。鉴于缺陷样本数据集通常存在严重的数据类不平衡问题,SMOTE技术可提供有效的解决方案支持。

若样本数据集中有缺陷组件数为t,设需合成的新的有缺陷组件数为(n/100)*t,即原有样本数的n%,其中n≠ 0,通过SMOTE技术进行有缺陷组件过采样的具体步骤如下:

Step1:对n进行判断,若n<100,则令t=(n/100)*t,即从t个有缺陷组件中随机选取(n/100)*t个样本,构成新的有缺陷组件样本集,且令n=100,随后执行Step2;若n≥100,则直接执行Step2。

Step2:令n=(int)(n/100),即对n/100取整并重新赋值给n。使用欧氏距离依次计算t个有缺陷组件样本中每个样本Si与其余各个有缺陷组件样本间的距离,其中i=1,2,…,t,依此找到与Si距离最近的k个近邻样本。

Step3:针对每个样本Si,在其k个近邻样本中随机选择一个样本Sj,其中j∈{1,2,…,k},计算该样本与初始样本Si间的欧氏距离D(Sj,Si),随机生成一个0到1之间的数字r,依此计算生成一个新的有缺陷组件样本Snew,定义如公式(1)所示:

Snew=Si+r⋅D(Sj,Si)

(1)

重复n次执行Step3,获取n个新样本,其中Snew位于Si与Sj间的连接线上。

Step4:针对t个有缺陷组件样本依次执行Step3,直到初始的t个有缺陷组件样本均生成了对应的新样本,获取n*t个新样本。

通过合理设置k的值,生成新的有缺陷组件,将新生成的有缺陷组件与初始样本数据集进行合并,获取有缺陷组件数与无缺陷组件数均衡的新数据集。

3 支持先分类后回归的缺陷数多步预测

鉴于缺陷样本数据集包含冗余的缺陷特征,依据均衡的样本数据集,采用主成分分析技术(principal component analysis,PCA)[24]自动抽取对目标变量具有较高贡献的主要缺陷特征,实现特征降维与优化,降低建模的开销。将降维后的均衡样本数据集划分为训练集和测试集,采用支持向量机(support vector machine,SVM)[25-26]算法并结合训练数据训练获取缺陷倾向性预测模型,基于测试集评估模型的性能,利用预测模型对待测组件进行缺陷倾向性预测(预测某一组件是否含有缺陷),获取软件组件缺陷倾向性预测结果。鉴于缺陷数预测的主要目的在于更快地发现并修复尽可能多的缺陷,预测模型应聚焦有缺陷组件,因此筛除缺陷倾向性预测结果中无缺陷组件,构建仅包含有缺陷组件的样本数据集,以增强后续回归技术对有缺陷组件的偏好。利用回归技术并结合仅含有缺陷组件的样本数据集训练获取缺陷数预测模型,评估模型性能并利用模型预测待测组件所含缺陷数,构建缺陷数等级(依据每个组件所含缺陷数,按降序依次排列的各个组件),依据缺陷数等级优先检测并修复缺陷数较多的组件,有效实现组件缺陷数多步预测,提升预测准确性。支持先分类后回归的缺陷数多步预测方法体系结构如图1所示。

图1 缺陷数多步预测体系结构

3.1 基于SVM的缺陷倾向性预测

均衡的缺陷样本数据集包含部分冗余特征,因此首先采用PCA技术对样本数据集进行特征降维与优化,获取特征优化后的数据集。

通过支持向量机并结合训练数据训练获取缺陷倾向性预测模型。

3.2 组件缺陷数预测

鉴于组件缺陷数预测的目的在于更快地发现并修复尽可能多的缺陷,预测模型应聚焦有缺陷组件,因此筛除缺陷倾向性预测结果中无缺陷组件,构建仅包含有缺陷组件的样本数据集,以增强后续回归技术对有缺陷组件的偏好。

采用回归算法并结合仅包含有缺陷组件的分类结果,训练获取缺陷数预测模型,评估模型性能并利用模型预测待测组件所含缺陷数,生成缺陷数等级(依据每个组件所含缺陷数,按降序依次排列的各个组件),依据缺陷数等级优先检测并修复缺陷数较多的组件,构建支持先分类后回归的缺陷数多步预测方法,有效实现组件缺陷数多步预测,提升预测准确性。缺陷数多步预测数据流程如图2所示。

图2 缺陷数多步预测数据流程

组件缺陷数预测属于典型的回归问题,鉴于梯度提升回归(gradient boosting regression,GBR)[27]和线性回归(linear regression,LR)[27]在软件缺陷数预测中取得的较好效能[28],该文分别选用以上两种算法,依次训练并生成对应的缺陷数预测模型,获取对应的缺陷数等级,实现先分类后回归的缺陷数多步预测。

3.3 缺陷数多步预测的步骤

支持先分类后回归的组件缺陷数多步预测方法包含如下步骤:

Step1:通过SMOTE技术对不均衡样本数据集中的有缺陷组件样本进行过采样,生成有缺陷组件与无缺陷组件均衡的新数据集。

Step2:采用PCA技术对均衡的样本数据集进行特征降维与优化,获取特征优化后的数据集。

Step3:通过SVM算法并结合降维后的均衡样本数据集训练获取缺陷倾向性预测模型,利用模型对待测组件进行缺陷倾向性预测,即第一步预测(分类),获取组件缺陷倾向性预测结果。

Step4:筛除分类结果中的无缺陷组件,构建仅包含有缺陷组件的样本数据集。

Step5:利用回归算法并结合仅含有缺陷组件的样本数据集训练并构建缺陷数预测模型,通过模型预测每个组件的缺陷数,即第二步预测(回归),构建缺陷数等级,测试人员依据缺陷数等级优先检测并修复缺陷数较多的组件,实现更准确的缺陷预测。

4 实验分析与评估

4.1 实验数据

本节采用PROMISE开源数据集[29]开展实验验证,该数据集常用于软件缺陷预测[30-31],选取该数据集中10个开源项目36个版本的样本数据,每个版本包含静态代码属性和数据属性,静态代码属性包含组件的20个特征。

由于PROMISE的样本数据只包含组件的缺陷数标签,并未对组件的缺陷倾向性进行标注,而在组件缺陷倾向性预测时,需将缺陷倾向性标签加入样本数据,即需明确各个组件为“有缺陷”或“无缺陷”。因此,该文依据数据集提供的各组件所含缺陷数对其缺陷倾向性进行标注,将至少含有1个缺陷的组件标注为1,将含有0个缺陷的组件标注为0,数字1代表有缺陷组件,数字0代表无缺陷组件。

4.2 实验设置

依据收集的实验数据,本节首先采用SMOTE技术对不均衡实验数据集中的有缺陷组件样本进行过采样,k值设置为3,生成新的均衡样本数据集。基于均衡的样本数据集,利用PCA技术对20个特征进行降维与优化,将PCA的主成分比例参数设置为0.8,获取降维后的均衡样本数据集。按照4∶1的比例将数据集随机划分为训练集和测试集,SVM算法沿用默认参数,通过SVM并结合降维后的均衡样本数据集训练获取缺陷倾向性预测模型,利用模型对样本数据进行分类,获取分类结果。筛除分类结果中的无缺陷组件,构建仅包含有缺陷组件的样本数据集。基于仅包含有缺陷组件的样本数据集,分别采用梯度提升回归(GBR)和线性回归(LR)算法训练生成对应的缺陷数预测模型。最后将先分类后回归的多步预测方法与直接使用回归技术的预测方法进行效能评估与对比,由于该文关注组件缺陷数的预测和排序结果,因此采用Spearman相关系数[32]和Kendall相关系数[33]来评估方法的效能。

4.3 实验结果分析

本节使用Strategy-1代表该文所提先分类后回归的缺陷数多步预测方法,Strategy-2代表仅用回归技术的预测方法。图3显示了仅使用GBR的预测以及使用SMOTE-SVM结合GBR的多步预测效能的柱状图。由图3可知,36个项目版本中,在Spearman相关系数上,Strategy-1相比Strategy-2在23个版本中效能得到提升,GBR的Spearman相关系数取值范围在(-0.35,0.31)之间,Strategy-1的Spearman相关系数取值范围在(-0.39,1)之间,且在ant-1.3、camel-1.0、poi-2.0三个项目版本上的Spearman相关系数为1,明显优于Strategy-2。在Kendall相关系数得分上,Strategy-1在22个项目上的表现优于Strategy-2,且在ant-1.3、camel-1.0、poi-2.0三个项目版本上的Kendall相关系数同样为1,表明Strategy-1适用于对这三个项目版本建模。总体来说,先分类后回归的多步预测方法可在一定程度上提升组件缺陷数预测的效能。

图3 多步预测与单一使用GBR预测在不同版本上的预测效能

由于篇幅的限制,本节仅通过图4阐释多步预测与单一使用LR预测的效能评价结果。同理,由图4可知,单纯使用LR所建预测模型的Spearman相关系数和Kendall相关系数的得分最大值分别为0.42和0.29,而多步预测在这两项指标上的得分最大值均为1,多步预测在36个项目版本的评估结果中,22个版本的Spearman相关系数得分和20个版本的Kendall相关系数得分优于单纯使用LR的预测。

图4 多步预测与单一使用LR预测在不同版本上的预测效能

5 结束语

该文重点讨论了通过建立均衡的样本数据集且基于先分类后回归的缺陷数多步预测方法提升软件缺陷数预测效能的问题。首先,针对缺陷预测中训练数据不平衡的问题,提出采用SMOTE技术构建均衡样本数据集,即通过SMOTE技术对不均衡的样本数据集中有缺陷组件进行过采样,兼顾不同类别样本占比,构建均衡的样本数据集,提升预测的准确性。其次,瞄准单一回归技术对有缺陷组件缺陷数预测的支持能力不足问题,提出了支持先分类后回归的缺陷数多步预测方法,该方法利用分类技术(SVM)生成缺陷倾向性预测结果(分类步骤),筛除缺陷倾向性预测结果中无缺陷组件,构建仅包含有缺陷组件的样本数据集,以增强后续回归技术对有缺陷组件的偏好。依据选取的回归技术并结合仅含有缺陷组件的样本数据集训练获取缺陷数预测模型(回归步骤),构建缺陷数等级,进一步提升缺陷数预测效能。最后,通过典型开源数据集进行实验实证与效能评估,证实了文中方法的有效性和实用性。

猜你喜欢
倾向性组件效能
Android系统上移动组件化应用框架设计
立足优化设计提高作业效能
创建Vue组件npm包实战分析
基于改进TOPSIS有人/无人机协同作战效能评估
智能机械臂
舰载雷达TR组件冲击计算方法分析
地方机构改革“+”与“-”——减的是机构,加的是效能
分析我国体育新闻报道中的倾向性文献综述
油田三相分离器效能分析
油田三相分离器效能分析