一种面向代价感知的实时缺陷预测模型增强框架的制作方法

文档序号:18009583发布日期:2019-06-25 23:49阅读:403来源:国知局
一种面向代价感知的实时缺陷预测模型增强框架的制作方法

本发明涉及一种同时考虑预测风险和代码审查代价的自适应学习框架,属于软件缺陷预测领域,尤其是涉及一种面向代价感知的实时缺陷预测模型增强框架。



背景技术:

软件质量保证为开发高质量的软件系统提供了保障,而软件缺陷预测则有助于开发者将有限的的质量保证资源优先分配给有缺陷的模块,从而提高测试和审查的效率。

代价感知的实时缺陷预测模型会基于预测的风险值和修改的代码行对所有软件改动进行排序,因此预测出具有较高风险值和较少的代码修改量的改动将会最先被审查,更大程度地提高了模型的现实意义。

现有的代价感知实时缺陷预测模型,根据类型可以分为无监督模型和有监督模型。

代表性的无监督模型有lt和ccum:yang等人将12个不同的改动度量值的倒数进行降序排列分别构建12个无监督模型,在6个开源项目的实验结果显示这些无监督模型中多数模型的效果要优于有监督的方法;liu等人利用不同规模的代码改动,提出了一种基于代码改动量的无监督模型ccum,6个开源项目上的结果显示优于所有已有的有监督和无监督模型。

代表性的有监督模型有ealr、oneway、cbs和multi:kamei等人提出了一种有监督的代价感知线性回归模型ealr,通过在6个开源项目和5个商业项目上的研究,ealr检测出35%缺陷改动平均需要审查20%的代码改动量。fu和menzies重现了yang等人的工作,提出的有监督模型oneway能在yang等人训练出的无监督模型基础上,利用带标记的训练数据自动选择最佳改动度量,实验结果证明oneway要优于大多数无监督模型。同样地,huang等人重现yang等人的工作后设计了一种简洁的先分类再排序的增强有监督模型cbs,结果表明cbs在recall指标上与lt持平,并在其他指标上超过lt。chen等人则将代价敏感的实时缺陷预测视为多目标优化的问题,旨在同时达到预测的缺陷改动数目的最大化和审查代价的最小化。据此构建的有监督方法multi在popt和recall指标上要优于对比的有监督和无监督方法。

大多数现有的代价感知的实时缺陷预测模型只是简单将预测风险值和代价值用于提升模型的预测效果,并没有对两者的权重进行适应性优化,也没有考虑到代码改动的取值分布存在高度不平衡性。



技术实现要素:

本发明针对现有的代价感知的实时缺陷预测模型存在的缺陷,提出了一种能够应用于这些模型的面向代价感知的实时缺陷预测模型增强框架,能够自适应学习预测风险值和审查代价值的权重,并且对不平衡的数据进行转换。该面向代价感知的实时缺陷预测模型增强框架的具体步骤为:

步骤1、判断缺陷预测模型的类型为有监督模型或无监督模型,若为有监督模型,转至步骤2;若为无监督模型,转至步骤4;

步骤2、使用训练数据构建有监督的缺陷预测模型,分别预测训练数据和测试数据的风险值;

步骤3、根据步骤2得到的训练数据的风险值以及训练数据的代价值,使用遗传算法自动学习最优权重值λ1、λ2;

步骤4、使用训练数据构建无监督的缺陷预测模型,预测测试数据的风险值,并将λ1和λ2都赋值为1;

步骤5、将测试数据的风险值和代价值根据权重进行减法组合,得到测试数据新的风险值;

步骤6、计算经过所述面向代价感知的实时缺陷预测模型增强框架增强后模型的评价指标。

优选地,在所述步骤3中,所述遗传算法选取轮盘赌选择、单点交叉和随机变异作为遗传算子,所述轮盘赌选择选择适应度更高的染色体,组合交叉在个体编码串上,所述单点交叉是在个体编码串上随机设置一个交叉点,两个配对的染色体在所述交叉点附近进行部分染色体互换,所述随机变异随机修改个体一个父染色体的部分染色体;

根据适应度选取λ1、λ2,所述适应度为指定的评价指标,或取所有评价指标的平均值。

优选地,在步骤2、4中,风险值由原有的代价感知的实时缺陷预测模型的预测公式直接计算,若原始缺陷预测模型为有监督模型ealr,则风险值r(x)的计算公式为:

r(x)=y(x)/effort(x)

其中,x为一次软件改动,若所述改动有缺陷则y(x)为1,否则为0,effort(x)为审查改动所需的工作量,由修改的代码行总数表示;

若原始缺陷预测模型为无监督模型,基于某一改动度量的取值m(x),则风险值r(x)的计算公式为:

r(x)=1/m(x)

优选地,在步骤5中,所述一种面向代价感知的实时缺陷预测模型增强框架在现有的代价感知的实时缺陷预测模型的基础上,首先将原有的预测风险值和代价值转化为同一量纲,再将转化后的值进行加权组合作为新的预测风险值,新的预测风险值r′(x)的计算公式为:

r′(x)=λ1*θ(y(x))-λ2*θ(effort(x))

其中,x为一次软件改动,y(x)为原始风险值,effort(x)为审查改动所需的工作量,由修改的代码行的总数表示,θ(·)为转换函数,λ1和λ2为权重参数,所述权重值都为正实数。

本发明面向代价感知的实时缺陷预测模型增强框架使用自适应学习充分利用了原有预测的模型的风险值和审查代价值,并且通过数据转换解决了数据分布不平衡问题,有效提高了模型的预测效果。

附图说明

图1是本发明所提出一种面向代价感知的实时缺陷预测模型增强框架的总体流程图;

图2是本发明在6个开源项目数据集bugzilla、columba、jdt、platform、mozilla和postgresql上各评价指标结果的盒图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明提出了一种用于代价感知的实时缺陷预测模型增强框架,包括以下步骤:

步骤1、根据具体应用的代价敏感的实时缺陷预测模型判断是否属于有监督模型,即训练预测模型时使用的训练数据是否具有类别标记。若为有监督模型,转至步骤2;若为无监督模型,转至步骤4。

步骤2、使用训练数据构建有监督的代价感知的实时缺陷预测模型,分别预测训练数据和测试数据的风险值,风险值由原有模型的预测公式直接计算。

步骤3、原有的实时缺陷预测模型简单地将预测风险值和代价值用于对预测结果的改进,并未对两者进行不同权重的组合优化,进而更加合理地表示软件改动的风险值。所述面向代价感知的实时缺陷预测模型增强框架使用遗传算法自动学习两者的权重值λ1、λ2,因而能够充分利用这两种信息。

其中,遗传算法选取了轮盘赌选择、单点交叉和随机变异作为遗传算子。轮盘赌选择会以更高的几率选择适应度更高的染色体。组合交叉在个体编码串上,单点交叉是在个体编码串上随机设置一个交叉点,两个配对的染色体将在此交叉点附近进行部分染色体互换。随机变异将随机修改个体的一个父染色体的部分染色体。

λ1、λ2作为遗传算法的最优解,将根据适应度选取。适应度为指定的评价指标,或取所有评价指标的平均值。

步骤4、使用训练数据构建无监督的代价敏感的实时缺陷预测模型,预测测试数据的风险值,风险值由原有模型的预测公式直接计算,并将λ1、λ2都赋值为1。

步骤5、所述面向代价感知的实时缺陷预测模型增强框架在现有的代价感知的实时缺陷预测模型的基础上,首先将原有的预测风险值和和代价值转化为同一量纲,再将转化后的值进行加权组合,最后作为新的预测风险值r′(x)的计算公式:

r′(x)=λ1*θ(y(x))-λ2*θ(effort(x))

其中,x为一次软件改动,y(x)为原始风险值,effort(x)为审查改动所需的工作量,通常由修改的代码行的总数表示,θ(·)为转换函数,λ1和λ2为权重参数,用来控制转换后的原始风险值和转换后的代价值的重要程度,权重值都为正实数。

为验证本发明提出的一种面向代价感知的实时缺陷预测模型增强框架能够有效增强现有的代价感知的实时缺陷预测模型,实验采用时间敏感的交叉验证设置,将经过所述面向代价感知的实时缺陷预测模型增强框架增强后的缺陷预测模型与原模型分别在四种评价指标上进行比较。其中包括4个有监督的模型:ealr、oneway、cbs和multi,13个无监督模型:yang等人提出的12个无监督模型和ccum,以及5个广泛使用的分类器模型:nb、lr、rf、j48和svm。为了方便讨论,将增强后的模型命名为相应原模型的名称和“+”。比如,增强后的ealr表示为ealr+。4个评价指标分别为popt、recall、precision和fmeasure。

除此之外,统计显著性检验采用显著性水平为95%的非参数威尔科克森符号秩检验,并使用benjamini-hochberg(bh)纠正量对多次比较结果进行修正。效应值检验使用cliff’sdelta(δ)。同时,为了检验是否存在某些方法优于其他所有方法,对所有方法使用两次scott-knottesd检验进行排序和分组。

在6个开源项目数据集bugzilla、columba、jdt、platform、mozilla和postgresql上各评价指标结果的盒图如图2所示:

其中,b表示相应的改进后的方法在统计显著性上优于基准方法,并且相应的威尔科克森符号秩检验(benjamini-hochberg(bh)矫正的p值小于0.05)以及根据cliff’sdelta(δ)(|δ|≥0.147)得到的结果为两种方法之间的差异较大;c表示改进后的方法在统计显著性上并未优于基准方法,比较的两种方法之间差异较小(|δ|≥0.147);a表示相改进后的方法比基准方法差,比较的两种方法之间差异较大。

六个数据集上的结果显示,几乎所有的改进方法(除了ccum+和multi+)在popt和recall上都显著优于它们的原方法,虽然并不是所有增强方法能够在precision上提升原方法,但在同时考虑recall和precision的fmeasure指标上,大多数改进方法要比原方法好。总的来说,大多数现有的代价感知的实时缺陷预测模型在使用本发明提出的增强框架增强后,能够在六个数据集上获得四分之三指标的更好表现,充分证明了本发明所提面向代价感知的实时缺陷预测模型增强框架的有效性。

为了更清晰的比较改进方法和基准方法的预测结果,特别选取了ealr+、lt+、age+、oneway+、cbs+、multi+和基准方法的详细结果值。因为这些基准方法更具代表性,较于其他方法能够达到最好的平均表现。上述方法在六个数据集上的每个指标取中值的结果如下表:

其中√和×分别表示改进方法在使用威尔科克森符号秩检验和benjamini-hochberg(bh)校正的结果是否显著优于原方法。avg表示6个项目上的平均表现。“w/t/l”表示改进方法比原方法相比取得更好/相同/更差表现的项目的个数。

从表格可以看出,改进的方法相比于原方法能够获得更高的popt和recall,所有的改进方法在统计显著性上有更好的表现(所有改进方法的结果后面都有标记√),大多数cliff’sdelta(δ)的取值显示了较大的显著性差异。虽然大多数改进方法在precision上表现不佳。但是在fmeasure上,仍然能够具有与原方法相比更好或相当的表现。在6个数据集的平均值上,以popt的结果为例,所有改进的方法取值分别为0.847、0.832、0.807、0.850、0.790、0.865和0.843,而相应的基准方法取值分别为0.582、0.712、0.702、0.699、0.608、0.836和0.442,提升了3.42%到90.96%。同样的,改进的方法在recall上提升了5.92%到227.74%,在fmeasure上提升了2.48%到25.55%(除了cbs+)。上述比较充分说明了本发明所提一种面向代价感知的实时缺陷预测模型增强框架对于代价敏感的实时缺陷预测具有显著的提升作用,确实达到了本发明的目的。

显然,本发明的上述实施例仅仅是为清楚地说明本发明技术方案所作的举例,而并非是对本发明的具体实施方式的限定。凡在本发明权利要求书的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1