一种基于混合式主动学习策略的软件缺陷预测方法与流程

文档序号:17475516发布日期:2019-04-20 06:05阅读:271来源:国知局
一种基于混合式主动学习策略的软件缺陷预测方法与流程

本发明涉及主动学习技术领域,特别是涉及一种基于混合式主动学习策略的软件缺陷预测方法。



背景技术:

软件缺陷模块会造成企业生产过程中的操作失败,导致企业出现重大损失,降低客户的满意度。软件缺陷预测模型用于在软件开发阶段尽早发现软件缺陷模块,常见模型包括有监督的模型以及无监督的模型等等。

如果软件项目具有丰富的历史标注数据,那么就可以通过建立有监督的机器学习模型,来构建同项目软件缺陷预测(within-projectdefectprediction)模型,评估软件模块缺陷的概率或者计算某个模块的缺陷个数等等。在实际软件开发过程中,如果软件项目为全新的项目,或者这个项目的训练数据比较少,那么需要企业对于缺陷模块标记工作投入大量时间,同时该工作是专业性相对较强的工作,对于软件模块标注需要较为专业的人员来进行,因此软件缺陷预测模型的建立需要花费大量的时间,投入较多的人力,提升了软件开发的成本。

主动学习为解决样例标注问题提供多种查询策略,使得企业可以在面对海量标注模块时候主动选择某个样例进行标注,将待标注样例人工标注完成以后加入到标注样例数据集中,快速建立软件缺陷预测模型。主动学习的选择策略被用于从软件缺陷预测数据集中选择优质样例,样例由人工标注以后扩展训练数据集,同时联合使用维度缩减,特征选择等其他机器学习方法提升软件缺陷预测的性能。

使用的选择策略包括不确定度信息熵等常见策略,然而这些研究中并未关注低信息熵的样例,即确定度较高的样例,在主动学习一次查询过程中往往低信息熵的样例被抛弃,对于低信息熵样例的利用很少涉及。

专利号cn201710271035.2公开了一种基于条件依赖标签集的多标签主动学习方法,通过同时对样本信息熵和相对熵整合,筛选信息量大的样本作为主动学习的对象,该方法尽管使用了信息熵与相对熵共同工作的原理,但在信息熵处理阶段同时加入相对熵计算,反而会对系统的运行效率及效果产生不利影响,另外低信息熵样例也没有被很好的利用。



技术实现要素:

为解决人工标注成本高,预测性能低的问题,本发明提供了一种基于混合式主动学习策略的软件缺陷预测方法。

一种基于混合式主动学习策略的软件缺陷预测方法,其特征在于,所述基于混合式主动学习策略的软件缺陷预测方法采用基于代价敏感的信息熵与相对熵协同主动学习方法,简称为uncertaintykl模型,所述uncertaintykl模型使用信息熵作为优质样例的评价指标,从未标记样例数据中选取信息熵较高的样例手工标注,同时使用相对熵来进一步分析低信息熵的样例,进一步扩充已标记数据集。

优选的,所述uncertaintykl模型包括以下步骤:

步骤1:通过信息熵计算公式计算每个未标记样例数据的信息熵;步骤2:通过计算公式(1)从未标记样例数据中选择信息熵最高的数据样例交由领域专家进行人工标注,标注完成后加入已标记数据集;

步骤3:筛选步骤2中剩余信息熵最低的未标记样例数据,利用相对熵计算方式进行标注;

步骤4:预先设置一个相对熵阈值,若相对熵低于阈值,则加入该样例到已标记数据集,同时用预测结果的标记作为该数据的伪标记;若相对熵高于阈值,则放弃对该样例的处理。

优选的,步骤2中所述信息熵最高的数据样例的计算方式如下:

xu,max=argmax(-∑ipθ(yi/x)logpθ(yi/x))(1)

其中i表示第i个未标注样例(i=1,2,...u),yi表示待分类标签所属的标签值,xu,max表示根据公式(1)得到的未标记数据集中信息熵最大的数据样例,属于类别yi的预测概率值,pθ(yi/x)表示基于已标记数据集数据分布情况下。

优选的,步骤3所述相对熵计算方式包括如下公式:

表示根据所有分类模型kld计算得到的相对熵的均值,xu,min表示根据公式(1)得到的未标记数据集中信息熵最小的数据样例,c表示查询委员会的分类器数目,分类器的数据集为动态更新的dl,分类委员会c={θ1,...,θm},分类委员会的分类器成员代表不同的分类策略,都能够对未标记数据计算当前标记,pc(yi/x)用于表示查询委员会分类模型对于待分类标记所属的标签yi的概率的平均值,d(pθ(c)/pc)表示分类模型θi对其他模型的相对信息熵。

优选的,步骤4中所述阈值设置为经验阈值0.1,若所述值满足阈值范围,则使用θi对xu,min中的样例进行伪标记。

优选的,为解决所述模型求解问题,采用以下分段式优化策略,优化过程如下:

a.系统初始化:系统开始运行之前,从样例集合池中取出一部分样例交由领域专家进行手工标注,该集合记为dl,该初始标记结合的采样方式是随机的从样例集合中取样,由dl数据集完成对分类模型θ1的初次训练,作为后续对无标记数据分类的基础;

b.未标记样例主动选择:使用分类模型θ1对每一个未标记样例进行预测,依据公式计算每个样例的信息熵,排序取出信息熵最大的样例xu,max交由领域专家进行手工标注,并将xu,max加入标记数据集dl;

c.确定度最高样例的伪标记处理:将信息熵最低的样例xu,min取出,依据公式计算相对熵,即kld,将kld与阈值进行比较,如果满足阈值,则对xu,min标注,并将xu,min加入标记数据集dl;

d.分类模型更新:使用标记数据集dl再次训练分类模型θ1,然后循环直到满足终止条件为止。

有益效果:

1.融合信息熵与相对熵协同工作,采取混合式的主动学习查询策略,通过使用相对熵进一步对低信息熵进行分析,更加充分利用样例包含的信息,从而提高软件缺陷预测性能更加迅速发现软件的缺陷模块。

2.采用混合式的主动学习查询策略,企业只需前期投入相对更少的人工标注成本,从而取得更好的软件缺陷预测能力,能够在满足企业需求的前提下更好的控制成本,节约人力。

附图说明

图1为本发明混合式主动学习策略的软件缺陷预测方法的算法流程示意图

图2为equinox数据集在不同主动学习查询策略下的auc指标示意图

图3为eclipsejdtcore数据集在不同主动学习查询策略下的auc指标示意图

图4为apachelucene数据集在不同主动学习查询策略下的auc指标示意图

图5为mylyn数据集在不同主动学习查询策略下的auc指标示意图

图6为eclipsepedui数据集在不同主动学习查询策略下的auc指标示意图

具体实施方式

该部分我们将详细介绍我们提出的基于代价敏感的信息熵与相对熵协同主动学习策略(cost-effectiveentropykullback–leibler-divergenceactivelearning),简称为uncertaintykl模型。该学习策略将会应用于软件缺陷预测中常用的aeeeem数据集中,通过选择策略增量的改进分类模型,达到在相同数据标注量的时候分类器能够实现更好的分类指标。

uncertaintykl主动学习策略

本发明的uncertaintykl模型将协同训练的思路融入主动学习的学习策略中,通过最小化标记数目来完成模型的创建。基于不确定度信息熵的主动学习策略将从未标注数据中选择信息熵最高的由领域专家进行标注,同时信息熵最低的待标注数据,由查询委员会根据kld进行投票,如果由查询委员计算出来的该样例的相对熵较低(目前设置的经验阈值为0.1),则加入该样例到已标注数据集,同时用预测结果的标记作为该数据的伪标记,具体如下

xu,max=argmax(-∑ipθ(yi/x)logpθ(yi/x))(1)

定义含有l个已标注样例的数据集定义含有u个未标注的数据集表示第i个未标注样例(i=1,2,…u),xu,max表示根据(1)得到的未标记数据集中信息熵最大的数据样例,pθ(yi/x)表示基于已标注数据集数据分布情况下,xu,max属于类别yi的预测概率值,argmax(-∑ipθ(yi/x)logpθ(yi/x))表示选择未标注数据集中值最大的数据样例。

xu,min表示根据(1)得到的未标记数据集中信息熵最小的数据样例,c表示查询委员会的分类器数目,分类器的数据集为动态更新的dl。分类委员会c={θ1,...,θm},分类委员会的分类器成员代表不同的分类策略,都能够对未标记数据计算当前标记。pc(yi/x)用于表示查询委员会分类模型对于待分类标记所属的标签yi的概率的平均值。d(pθ(c)/pc)表示分类模型θi对其他模型的相对信息熵,表示根据所有分类模型kld计算得到的相对熵的均值。如果相对熵小于阈值,则使用θi对待标记实例进行伪标记。

以上标注的算法具体如下:

分段式的优化策略用于解决该模型求解问题,优化过程如下所示:

a系统初始化

系统开始运行之前,从样例集合池中取出一部分样例交由领域专家进行手工标注,该集合记为dl。该初始标记结合的采样方式是随机的从样例集合中取样,由dl数据集完成对分类模型θ1的初次训练,作为后续对无标记数据分类的基础;

b未标记样例主动选择

使用分类模型θ1对每一个未标记样例进行预测,依据公式(1)计算每个样例的信息熵,排序取出信息熵最大的样例xu,max交由领域专家进行手工标注,并将xu,max加入标记数据集dl;

c确定度最高样例的伪标记处理

将信息熵最低的样例xu,min取出,依据公式(2)(3)(4)计算相对熵,即kld,将kld与阈值进行比较,如果满足阈值,则对xu,min标注,并将xu,min加入标记数据集dl;

d分类模型更新

使用标记数据集dl再次训练分类模型θ1,然后循环直到满足终止条件为止。

整个算法过程可以总结为算法1

算法1分段式策略求解uncertaintykl模型

1:input:初始化标记数据集dl={x1,...xl},未标记数据集du={xl+1,...xl+u},数据标记y1i,...yl,最大循环次数umax,kld阈值threshold

2:output:分类委员会集合分类性能集合

3:使用标记数据初始化查询委员会的分类模型

4:while当前循环次数<最大循环次数||未收敛do

5:fori<-1toumaxdo

6:取出委员会成员θi,在标记数据集上训练模型

7:对当前x(i)计算分类概率p,依据argmax(-∑ipθ(yi/x)logpθ(yi/x))计算相应信息熵

8:信息熵最大的样例x(i)交由领域专家进行人工标注,并加入标记数据集

9:信息熵最小的样例x(t),依据公式(2)(3)(4)计算相对熵,即平均kld值。

10:dl=dl∪x(i);du=du\x(i)

11:ifkld>threshold:dl=dl∪x(t);du=du\x(t)

12:i=i+1

13:endfor

14:endwhile

15:

实验设计

评测对象

本发明将在公开数据集aeeem上分析评估uncertaintykl查询策略对软件缺陷预测领域主动学习采用策略的影响,aeeem数据集将被用于评估不同的学习策略。该数据集被广泛应用于软件缺陷预测领域中。该数据集用于作为软件缺陷预测领域进行性能比较的基准数据集。该数据集提供了61个指标,包括软件开发过程度量等,在本实验中61个指标都被用于做分类器建模。aeeem数据集概要信息展示在表1中。

表1aeeem数据集概述

实验设置

实验采用了5*2折交叉验证进行实验,每次实验都对数据做随机分层抽样,一半数据作为训练数据,一半数据作为测试数据,防止训练数据和测试数据之间产生数据重叠而使得评测结果不独立。训练数据中取出一定比例的数据进行人工标注,在本实验中初始标记数据的比例为30%,使用初始标记数据集训练分类模型,剩余70%数据作为未标注数据,依据主动学习策略从中选择。实验中的分类器支持向量机(supportingvectormachine)使用由libsvm实现的rbf核及默认参数进行训练。uncertaintykl查询策略中使用了由sklearn实现的随机森林分类器randomforestclassifier,训练中使用默认参数。uncertaintykl策略中,针对未标注数据进行迭代,每次迭代选择一个不确定度最高的样例人工进行标注,同时选择确定度最低的样例进一步使用kld进行判断,判断的阈值设置为经验值0.1。

评测指标

aeeem数据集存在类不平衡问题,使用auc(areaunderroccurve)指标能够较好的反映主动学习查询策略的性能,同时auc(areaunderroccruve)指标也是在进行软件缺陷预测的时候用的最多的指标之一。该指标基于roc曲线,roc曲线的全称是受试者工作特征(receiveroperationcharacteristic)曲线。软件缺陷预测中二元分类模型的混淆矩阵如表2所示。

表2混淆矩阵

roc曲线将伪阳性率(fpr)定义为x轴,真阳性率(tpr)定义为y轴。tpr:在所有实际为有缺陷模块的样本中,被正确地判断为有缺陷模块之比率。fpr:在所有实际为无缺陷模块的样本中,被错误地判断为有缺陷模块之比率。

tpr=tp/(tp+fn)

fpr=fp/(tn+fp)

auc值对应的是roc曲线下面的面积,其取值范围介于0到1之间,值越大则模型的性能越好。

基准方法

本发明使用了以下三种主动学习的查询策略作为基线与uncertaintykl主动学习策略进行比较:

(1)随机采样策略(random):随机的从未标注数据中选择一个查询实例,交由领域专家进行标注,加入到训练数据集中;

(2)基于不确定度信息熵的采样策略(uncertainty):基于svm分类器对训练数据集进行训练,对每一个未标注数据预测,计算信息熵,选择不确定度最高的实例进行标注;

(3)基于查询委员会的主动学习策略(committee):使用svm和随机森林构建查询委员会对标注样例进行查询。同时使用了所有的训练数据进行训练,在测试数据上进行测试,以便于与其他主动学习策略进行对比,该模型的训练性能可以近似认为是训练集上的最佳训练数据模型。

实验结果与分析

图2至图6分析图的分析结果用下列表3表示,具体如下:

表3:auc值对比(均值+标准差).基于pairedt-tests置信度为95%的最佳性能以黑体标注

表4:不同标注比例情况下uncertaintykl模型与其他模型的win/tie/loss对比分析

如表3-4所示,图2至图6展示了不同的主动学习查询策略在标注实例不同的情况下auc值的变化情况。

表3展示了在标注样例比例为10%、20%、30%、40%、50%情况下auc值的变化情况。标注样例比例大于50%时候,uncertaintykl主动学习策略使用伪标记方法已经完成了所有样例的标记,已经没有未标记样例。使用确信度为95%的pairedt-tests进行统计分析,将性能最佳的模型标注出来。表4对标注比例不同情况下的不同学习策略做了win/tie/loss分析,统计了uncertaintykl学习策略与committee、random、uncertainty等策略对比结果。

首先,我们可以观察到随着未标记样例逐渐减少,标注样例加入到标注数据集以后,评测指标都基本上能保持上升的趋势,该趋势表明了主动学习的学习策略的有效性;不确定度的采样策略效果不错,证明该策略可以作为主动学习领域里的基线策略;基于查询委员会的主动学习策略,在aeeem数据集中表现出了较大的不稳定性;大部分情况下,uncertaintykl效果最佳,比其他几种主动学习策略都有较大提升,最多情况下性能提升了13%。

上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。

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