基于差分演化算法的软件缺陷预测优化方法技术

技术编号:19009048 阅读:30 留言:0更新日期:2018-09-22 08:56
本发明专利技术公开了一种基于差分演化算法的软件缺陷预测优化方法,属于软件工程中的质量保证领域。包括如下步骤:(1)整理软件项目中模块,清洗代码中的注释等,建立软件缺陷数据代码集合;对给定缺陷集合进行整理,包括缺陷的度量设计以及缺陷数据标记等,生成软件缺陷数据集;借助差分演化算法,对缺陷预测数据集使用少数类过采样方法创建多数类和少数类比值为2:1的数据集,确定神经网络超参数的最优取值,使用训练的神经网络分类模型在测试集中测试,满足性能指标,则表示构建成功软件缺陷预测模型。本发明专利技术可以根据数据集的不同自动化确定分类模型构建中的相应参数因子,找到最适合当前数据集与分类模型的参数组合,提升软件缺陷预测模型的性能并减少模型构建中参数寻找的工作量。

Optimization method of software defect prediction based on differential evolution algorithm

The invention discloses a software defect prediction optimization method based on differential evolution algorithm, which belongs to the field of quality assurance in software engineering. It includes the following steps: (1) organize the modules in the software project, clean the annotations in the code and so on, set up the software defect data code set; organize the given defect set, including defect measurement design and defect data marking, to generate the software defect data set; use differential evolution algorithm to predict the defect data set. Using a few class oversampling method to create a large number of classes and a small number of class ratio of 2:1 data sets, determine the optimal value of neural network hyperparameters, use the training neural network classification model in the test set to test, meet the performance indicators, then indicate the construction of a successful software defect prediction model. The invention can automatically determine the corresponding parameter factors in the classification model construction according to the different data sets, find the most suitable parameter combination between the current data set and the classification model, improve the performance of the software defect prediction model and reduce the workload of parameter searching in the model construction.

【技术实现步骤摘要】
基于差分演化算法的软件缺陷预测优化方法
本专利技术属于软件质量保障领域,具体涉及一种基于差分演化算法的软件缺陷预测优化方法。
技术介绍
软件组织的有限的软件质量保证资源更多的关注软件模块中的bug,比如源代码更有可能出现缺陷。因此,缺陷检测使用统计方法或者是机器学习的方法来识别源代码中可能存在的错误。这些机器学习中的分类器需要有提前设置的超参数,这些超参数没有启发式的规则可用,很多分类器使用默认的超参数。比如说随机森林中的决策树的数目就需要提前做配置,这个超参数就无法通过数据建模方式获得。目前可用的方法就是在超参数空间中寻找与当前数据集最匹配的参数,来建立分类器的模型。超参数空间搜索方法存在如下问题:(1)超参数空间巨大,要完成整个超参数空间的搜索几乎是不可能完成的任务;(2)超参数空间搜索无法做到自动化处理。超参数空间的搜索与模型建立有直接关联,没有成熟的方法提出如何来直接在超参数搜索空间中找到参数以后直接与现有的模型训练结合起来。(3)超参数空间在搜索过程中往往会遇到缺陷预测数据集中的类不平衡问题。如何将两者有效的结合来一起解决也没有成熟的方案可以借鉴。目前已经有使用网格搜索(gridsearch)方法搜索超参数的空间,该方法对待搜索的参数空间进行组合,使用模型计算该组合,设定停止标准,找到最优参数解以后则停止搜索。基于差分演化算法的超参数空间搜索是一种遗传算法的变异搜索方式,这个方法能够借助遗传学中的多样性,在不同的染色体序列直接进行差分变异,快速找到最优解。在其他领域经过实践,该方法可以用于寻找最优解。综上所述,为有效解决自动化的超参数搜索空间搜索问题和类不平衡问题,有必要设计出一种有效的基于差分演化算法的软件缺陷预测优化方法。本专利技术由此而生。
技术实现思路
专利技术目的:本专利技术的目的是为了解决现有技术中的不足,提供一种基于差分演化算法的软件缺陷预测优化方法。技术方案:本专利技术所述的一种基于差分演化算法的软件缺陷预测优化方法,包括如下步骤:步骤1)缺陷预测数据集的搜集:挖掘软件项目的版本管理系统和缺陷跟踪系统,从中抽取程序模块;随后对上述每个程序模块,通过分析缺陷跟踪系统内的缺陷报告信息进行标记;最后基于软件代码复杂度或软件开发过程分析,设计出与软件缺陷存在相关性的度量元,并借助这些度量元完成对每个程序模块的度量;通过对程序模块进行类型标记和软件度量,生成缺陷预测数据集D;步骤2)借助差分演化算法,对缺陷预测数据集使用分层抽样及少数类过采样方法创建多数类和少数类比值的数据集,确定神经网络超参数的最优取值;步骤3)基于缺陷预测数据集,使用少数类过采样方法,使用超参数取值方案,构建出缺陷预测模型。进一步的,步骤1)所述程序模块的粒度根据缺陷预测的目的设置为文件、包、类或函数。进一步的,步骤2)所述多数类和少数类比值为2:1。进一步的,步骤2)中分层抽样及少数类过采样方法,包括如下步骤::2-1)将缺陷预测数据集按照分层抽样的方式划分,缺陷预测数据集里面多数类个数与少数类个数的比值为IR,缺陷预测数据集的个数为M,进行十折划分时候,每个子集的个数为M/10。对缺陷预测数据集按照少数类与多数类进行分组,在抽样时候,对于第i个子数据集,从多数类的样本中抽取M/10*(IR/(IR+1))个多数类,同时从少数类样本中抽取M/10*(1/(IR+1))个少数类,组合成为新的缺陷预测子集。重复以上过程九次。对于第10个子数据集,把所有抽样剩余的数据集作为第10个数据集。最终得到分层抽样的十个子数据集;2-2)将训练数据D1到D9合并为一个训练集,在该训练集中使用少数类过采样算法来解决缺陷预测数据类不平衡问题,具体方法步骤如下:2-2-1)从缺陷预测数据集D中选择有缺陷的少数类集合,设定为Smin,Smin∈D,在Smin集合中选择一个样本Xi;2-2-2)根据欧式距离计算出来与样本Xi距离最近的六个样本;2-2-3)计算随机值ζ,ζ取值范围为(0,1),在离Xi最近的六个样本中随机取出一个Xik,k取值范围为(1,6),以此计算生成的新样本Xnew,Xnew=Xi+ζ*(Xik-Xi);2-2-4)重复以上步骤中的2-2-1),2-2-2),2-2-3),直到缺陷预测数据集中的多数类与少数类直接的比值为2:1终止循环。进一步的,步骤2)中差分演化算法包括如下步骤:3-1)随机初始化种群:以神经网络为缺陷预测模型的分类器,需要随机初始化学习速率learningRate,候选取值为0.1到0.4,隐藏层的层数hiddenLayers,候选取值范围为3到10,迭代次数epoch,候选取值为100到300,选择代理的规模NP>=4;根据确定的NP数目初始化得到一组染色体,初始化交叉因子CR,设定CR等于0.5,设定缩放因子F等于2;3-2)计算种群中每个染色体的适应值:使用十折交叉验证法计算当前训练数据集上的相应因子的AUC值,该值作为该染色体的适应值;3-3)染色体变异:从代理候选集合里面随机选择一个染色体X,并随机选择其他三个染色体,分别为A,B,C,这三个染色体与染色体X都互不相同;3-4)染色体交叉:设定染色体的维度为N,随机选择一个整数n作为当前染色体交叉的因子,n的取值范围为0到N-1,如果n等于0,或者均匀分布随机变量小于交叉因子CR,那么就计算分量:y0=a0+F*(b0-c0)如果n等于1,或者均匀分布随机变量小于交叉因子CR,那么就计算分量:y1=a1+F*(b1-c1)如果n等于2,或者均匀分布随机变量小于交叉因子CR,那么就计算分量:y2=a2+F*(b2-c2)3-5)染色体选择:当前变异交叉后产生的染色体为(y0,y1,y2),依据该染色体在神经网络中使用十折交叉验证法计算当前训练数据集上的相应因子的AUC值,该值作为该染色体的函数值,将该染色体与X染色体的函数值比较,如果新产生染色体的AUC值大于X染色体的AUC值,则删除染色体种群的中的X染色体,添加当前染色体到种群中去;3-6)重复执行步骤3-3,3-4)及3-5),直到满足算法的终止条件为止,算法的终止条件是或者迭代次数达到100次,或者是最大的AUC值大于0.9,在一次循环过程中,步骤3-3),3-4)及3-5)重复执行染色体的规模NP次,完成对所有染色体的随机变异。进一步的,步骤3-2)的AUC值具体包括如下步骤:步骤3-2-1)将数据集借助分层抽样方法划分为10份,i=1,对缺陷预测数据集D进行切分,按照层次抽样的方式进行分割,划分为10个数据集,随机选择其中9个数据集合并作为训练数据集,剩余的1个数据集作为验证数据集,分别对训练数据集和验证数据集使用少数类过采样算法进行预处理,获得待处理数据集;步骤3-2-2)将第i份设置为测试集,将剩余数据设置为训练集;步骤3-2-3)在训练集上使用少数类过采样方法,使用染色体对应的超参数取值训练模型,并在测试集上得到测试结果,记为AUCi;步骤3-2-4)将i取值加1,跳转到步骤2-2-2,当i取值大于10的时候,跳转到步骤2-2-5);步骤3-2-5)将10次预测结果取均值,AUC=(AUC1+AUC2+AUC3+AUC4+AUC5+AUC6+AUC7+AUC8+AUC9本文档来自技高网
...
基于差分演化算法的软件缺陷预测优化方法

【技术保护点】
1.一种基于差分演化算法的软件缺陷预测优化方法,其特征在于:包括如下步骤:步骤1)缺陷预测数据集的搜集:挖掘软件项目的版本管理系统和缺陷跟踪系统,从中抽取程序模块;随后对上述每个程序模块,通过分析缺陷跟踪系统内的缺陷报告信息进行标记;最后基于软件代码复杂度或软件开发过程分析,设计出与软件缺陷存在相关性的度量元,并借助这些度量元完成对每个程序模块的度量;通过对程序模块进行类型标记和软件度量,生成缺陷预测数据集D;步骤2)借助差分演化算法,对缺陷预测数据集使用分层抽样及少数类过采样方法创建多数类和少数类比值的数据集,确定神经网络超参数的最优取值;步骤3)基于缺陷预测数据集,使用少数类过采样方法,使用超参数取值方案,构建出缺陷预测模型。

【技术特征摘要】
1.一种基于差分演化算法的软件缺陷预测优化方法,其特征在于:包括如下步骤:步骤1)缺陷预测数据集的搜集:挖掘软件项目的版本管理系统和缺陷跟踪系统,从中抽取程序模块;随后对上述每个程序模块,通过分析缺陷跟踪系统内的缺陷报告信息进行标记;最后基于软件代码复杂度或软件开发过程分析,设计出与软件缺陷存在相关性的度量元,并借助这些度量元完成对每个程序模块的度量;通过对程序模块进行类型标记和软件度量,生成缺陷预测数据集D;步骤2)借助差分演化算法,对缺陷预测数据集使用分层抽样及少数类过采样方法创建多数类和少数类比值的数据集,确定神经网络超参数的最优取值;步骤3)基于缺陷预测数据集,使用少数类过采样方法,使用超参数取值方案,构建出缺陷预测模型。2.根据权利要求1所述的一种基于差分演化算法的软件缺陷预测优化方法,其特征在于:步骤1)所述程序模块的粒度根据缺陷预测的目的设置为文件、包、类或函数。3.根据权利要求1所述的一种基于差分演化算法的软件缺陷预测优化方法,其特征在于:步骤2)所述多数类和少数类比值为2:1。4.根据权利要求1所述的一种基于差分演化算法的软件缺陷预测优化方法,其特征在于:步骤2)中分层抽样及少数类过采样方法,包括如下步骤:2-1)将缺陷预测数据集按照分层抽样的方式划分,缺陷预测数据集里面多数类个数与少数类个数的比值为IR,缺陷预测数据集的个数为M,进行十折划分时候,每个子集的个数为M/10。对缺陷预测数据集按照少数类与多数类进行分组,在抽样时候,对于第i个子数据集,从多数类的样本中抽取M/10*(IR/(IR+1))个多数类,同时从少数类样本中抽取M/10*(1/(IR+1))个少数类,组合成为新的缺陷预测子集。重复以上过程九次。对于第10个子数据集,把所有抽样剩余的数据集作为第10个数据集。最终得到分层抽样的十个子数据集;2-2)将训练数据D1到D9合并为一个训练集,在该训练集中使用少数类过采样算法来解决缺陷预测数据类不平衡问题,具体方法步骤如下:2-2-1)从缺陷预测数据集D中选择有缺陷的少数类集合,设定为Smin,Smin∈D,在Smin集合中选择一个样本Xi;2-2-2)根据欧式距离计算出来与样本Xi距离最近的六个样本;2-2-3)计算随机值ζ,ζ取值范围为(0,1),在离Xi最近的六个样本中随机取出一个Xik,k取值范围为(1,6),以此计算生成的新样本Xnew,Xnew=Xi+ζ*(Xik-Xi);2-2-4)重复以上步骤中的2-2-1),2-2-2),2-2-3),直到缺陷预测数据集中的多数类与少数类直接的比值为2:1终止循环。5.根据权利要求1所述的一种基于差分演化算法的软件缺陷预测优化方法,其特征在于:步骤2)中差分演化算法包括如下步骤:3-1)随机初始化种群:以神经网络为缺陷预测模型的分类器,需要随机初始化学习速率learningRate,...

【专利技术属性】
技术研发人员:曲豫宾李芳陈翔谢萍丽
申请(专利权)人:江苏工程职业技术学院
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1