基于强化混合专家模型的跨项目软件缺陷预测方法技术

技术编号:27006148 阅读:15 留言:0更新日期:2021-01-08 17:09
本发明专利技术涉及一种基于强化混合专家模型的软件缺陷预测方法,属于计算机与信息科学技术领域。主要解决跨项目软件缺陷预测中混合专家模型未能学习跨项目软件的全局信息造成软件缺陷预测性能下降的问题。本发明专利技术首先全局训练随机森林,由森林中的树经过挑选与强化构成专家,然后经过改进的EM算法计算每个样本的后验概率并迭代执行专家模型的挑选与强化过程,最后根据迭代重构后的子簇训练门控网络,组合优化好的专家模型构成完整的强化混合专家模型,预测本项目待预测软件模块的缺陷。结果表明本发明专利技术能达到较好的分类效果,进一步提升了跨项目软件缺陷预测的准确率。

【技术实现步骤摘要】
基于强化混合专家模型的跨项目软件缺陷预测方法
本专利技术涉及一种基于强化混合专家模型的跨项目软件缺陷预测方法,属于计算机与信息科学

技术介绍
软件缺陷是指软件产品中存在的,导致其无法满足软件需求和规格要求,需要进行修复的瑕疵、问题。软件缺陷是软件失效的源头和影响软件可靠性的重要因素,尽早地预测软件中存在的缺陷,以合理分配测试验证资源并保证软件质量在软件工程领域尤为重要。目前已有很多高效的软件缺陷预测方法被提出,这些方法主要基于项目历史软件模块的度量特征,采用统计学和机器学习的技术构建软件缺陷预测模型,然后将待测软件模块的度量特征输入软件缺陷预测模型,从而得到该软件模块的缺陷预测结果。但是当待预测的软件项目没有充足的历史数据时,很难顺利进行预测,得到可靠结果。这种情况下需通过引入其他已有软件项目的历史数据,协助进行跨项目软件缺陷预测。不同软件项目既会由于开发过程、编程规范及应用领域不同而存在数据差异性,也会因为采用相同的开发语言、相近的编码风格或相似的体系结构从而存在共性。这些共性能够作为模式和规律传递的桥梁,建立不同概率分布样本集之间的联系,因此从不同软件项目中提取全局的共性信息并分辨局部的特性信息是实现跨项目软件缺陷预测的关键。混合专家模型常用来处理分布差异的数据,它可以通过门控函数将分布相近的项目软件数据划分到相同的簇中、分布差异的项目软件数据划分到不同的簇中,针对每个簇分别训练专家模型来共同执行软件缺陷预测任务。通过这个过程,混合专家模型能学习到不同项目软件的特性信息,将其应用于待测项目软件模块,从而实现了跨项目软件缺陷预测。在进行跨项目软件缺陷预测时,混合专家模型虽然可以很好地学习不同项目软件的局部信息,但是未能学到所有项目软件的全局信息,因此不能很好地对局部数据尤其是不同分布交界处的数据进行分类,从而导致跨项目软件缺陷预测性能下降。所以本专利技术提出了一种基于强化混合专家模型的跨项目软件缺陷预测方法。
技术实现思路
本专利技术的目的是为了解决跨项目软件缺陷预测中,混合专家模型未能学习跨项目软件的全局信息造成软件缺陷预测性能下降的问题,提出了一种基于强化混合专家模型的跨项目软件缺陷预测方法。本专利技术的设计原理为:首先全局训练随机森林,由森林中的树经过挑选与强化构成专家,然后经过改进的EM算法计算每个样本的后验概率并迭代执行专家模型的挑选与强化过程,最后根据迭代重构后的子簇训练门控网络,组合优化好的专家模型构成完整的强化混合专家模型,预测本项目待预测的软件模块缺陷。本专利技术的技术方案是一种基于强化混合专家模型的跨项目软件缺陷预测方法,其特征在于,包括以下步骤:步骤1,提取跨项目软件模块数据;步骤1.1,抽取跨项目软件模块的历史数据;步骤1.2,提取跨项目软件模块的度量特征;步骤1.3,标注所有跨项目软件模块的缺陷属性;步骤2,提取跨项目软件模块数据中的全局信息;步骤2.1,对所有跨项目软件模块数据进行k均值聚类,将全局数据划分为多个子集;步骤2.2,基于所有跨项目软件模块数据,全局训练随机森林;步骤3,基于划分得到的不同簇,迭代执行预专家模型的分配和强化,提取跨项目软件模块数据中的局部信息;步骤3.1,设置阈值,为聚类获得的每个子集分配专家模型;步骤3.2,使用每个子集中的局部数据优化预专家模型;步骤3.3,根据预专家模型的分类性能对样本点重新分配;步骤3.4,重复执行预专家模型的强化与重构过程,直到模型的性能最优;步骤4,根据迭代重构后的子集划分结果训练门控网络,组合优化好的专家模型构成完整的强化混合专家模型;步骤5,用训练得到的强化混合专家模型预测本项目软件模块是否存在缺陷。有益效果相比国内外已有的跨项目软件缺陷预测方法,本专利技术基于强化混合专家模型进行训练,每个专家模型既能保留通过全局训练学到的不同项目的共性特征,又能通过各自所在的子簇进行局部强化,保留每个项目的局部特性,充分挖掘出跨项目软件历史模块和本项目历史模块中的全局信息和局部信息,提高了跨项目软件缺陷预测的性能。附图说明图1为本专利技术基于强化混合专家模型的跨项目软件缺陷预测方法的原理图。具体实施方式为了更好的说明本专利技术的目的和优点,下面结合实例对本专利技术方法的实施方式做进一步详细说明。具体流程为:步骤1,抽取跨项目软件模块,提取度量特征和缺陷属性;步骤1.1,从开源软件仓库和历史项目仓库中抽取跨项目软件模块数据作为样本,提取数据内容包括模块名称,模块源代码,代码更改信息,模块测试信息,开发人员数量,开发持续时间,模块缺陷信息;步骤1.2,根据缺陷信息对所有样本模块进行缺陷标记处理,对第i个样本软件模块(i=1,2,...,M),若存在缺陷,则缺陷标记Yi=1,若不存在缺陷,则缺陷标记Yi=0;步骤1.3,提取所有跨项目软件模块的度量特征;对第i个样本软件模块,使用面向对象的C&K度量方法,提取软件模块的度量特征,分别为:类中方法的个数,类的继承层次,类的直接子类个数,类与其他类存在耦合关系的数量,类的响应集,内聚缺乏度,传入耦合,传出耦合,公共方法的数量,内聚的缺乏度,代码行数,一个类中私有的属性占所有属性的比例,类中的属性类型是类的定义的个数,一个类中继承的方法个数占所有方法个数的比率,每个方法不同参数类型总和除以类中不同参数的个数乘以总的方法个数,继承的方法与该类中新建的方法之间耦合的个数。提取得到共n个度量值(n=16),将这些度量值分别标记为xi1,xi2,...,xin,构成样本软件模块的样本向量Xi={xi1,xi2,...,xin},所有的样本向量和缺陷标记一起构成软件缺陷数据集D{(Xi,Yi)|i=1,2,...,M}。步骤2,提取跨项目软件模块数据中的全局信息;步骤2.1,对所有跨项目软件模块数据进行k均值聚类,将全局数据划分为多个子集,分别记为D1,D2,D3,...,DK;步骤2.2,基于所有跨项目软件模块数据,全局训练随机森林。步骤3,基于样本簇的划分,迭代执行预专家模型的分配和强化,提取跨项目软件模块数据中的局部信息;步骤3.1,设置阈值,为聚类获得的每个子集分配专家模型;将训练好的随机森林在子集D1上的准确率作为阈值θ。使用D1作为测试集,计算森林中所有树模型的分类精确度。采用平均加权策略,将分类精度大于阈值θ的树模型组合成关于D1的预专家模型,记为M1。类似地,根据相同的策略为第2到第K个子集分配预专家模型,分别为M2,M3,…,Mk。预专家模型Mj的评选标准如下:其中θj是训练好的随机森林在子集Dj上的准确率,作为属于子集Dj的预专家模型的选择阈值。步骤3.2,使用每个子集中的局部数据优化预专家模型;在保留节点特征的前提下,使用子集D1中的数据,优化为其所分配的预专家模型M1,通过调本文档来自技高网
...

【技术保护点】
1.基于强化混合专家模型的跨项目软件缺陷预测方法,其特征在于,包括以下步骤:/n步骤1,提取跨项目软件模块数据,首先抽取跨项目软件模块的历史数据,然后提取跨项目软件模块的度量特征,最后标注所有跨项目软件模块的缺陷属性;/n步骤2,提取跨项目软件模块数据中的全局信息,首先对所有跨项目软件模块数据进行k均值聚类,将全局数据划分为多个子集,然后基于所有跨项目软件模块数据,全局训练随机森林;/n步骤3,基于划分得到的不同簇,迭代执行预专家模型的分配和强化,提取跨项目软件模块数据中的局部信息,首先设置阈值,为聚类获得的每个子集分配专家模型,然后使用每个子集中的局部数据优化预专家模型,再根据预专家模型的分类性能对样本点重新分配,最后重复执行预专家模型的强化与重构过程,直到模型的性能最优;/n步骤4,根据迭代重构后的子集划分结果训练门控网络,组合优化好的专家模型构成完整的强化混合专家模型;/n步骤5,用训练得到的强化混合专家模型预测本项目软件模块是否存在缺陷。/n

【技术特征摘要】
1.基于强化混合专家模型的跨项目软件缺陷预测方法,其特征在于,包括以下步骤:
步骤1,提取跨项目软件模块数据,首先抽取跨项目软件模块的历史数据,然后提取跨项目软件模块的度量特征,最后标注所有跨项目软件模块的缺陷属性;
步骤2,提取跨项目软件模块数据中的全局信息,首先对所有跨项目软件模块数据进行k均值聚类,将全局数据划分为多个子集,然后基于所有跨项目软件模块数据,全局训练随机森林;
步骤3,基于划分得到的不同簇,迭代执行预专家模型的分配和强化,提取跨项目软件模块数据中的局部信息,首先设置阈值,为聚类获得的每个子集分配专家模型,然后使用每个子集中的局部数据优化预专家模型,再根据预专家模型的分类性能对样本点重新分配,最后重复执行预专家模型的强化与重构过程,直到模型的性能最优;
步骤4,根据迭代重构后的子集划分结果训练门控网络,组合优化好的专家模型构成完整的强化混合专家模型;

【专利技术属性】
技术研发人员:潘丽敏尹培宇罗森林王殿元
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京;11

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

1