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.一种基于差分演化算法的软件缺陷预测优化方法,其特征在于:包括如下步骤:步骤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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。