一种基于动态分类器选择的即时软件缺陷预测方法技术

技术编号:39248774 阅读:10 留言:0更新日期:2023-10-30 12:00
本发明专利技术公开了一种基于动态分类器选择的即时软件缺陷预测方法,该方法针对现有技术中存在的验证延迟、概念漂移和类不平衡问题,通过验证延迟框架,纠正数据标签。然后将项目内数据和跨项目数据过滤结合,缓解概念漂移的同时,避免跨项目数据导致的预测偏差。接着通过基于动态分类器选择方法集成分层AdaBoost,使用前序数据训练出的分类器预测后续数据的标签,迭代训练预测过程,解决数据流类分布不平衡的问题。最后使用处理后的数据集对即时软件缺陷预测模型进行训练,有效提高模型的预测性能。能。能。

【技术实现步骤摘要】
一种基于动态分类器选择的即时软件缺陷预测方法


[0001]本专利技术属于大数据处理
,涉及软件缺陷预测,具体涉及一种基于动态分类器选择的即时软件缺陷预测方法。

技术介绍

[0002]即时软件缺陷预测(JIT

SDP)是一种特定类型的软件缺陷预测方法,可以在软件更改级别进行缺陷预测,具体是在提交时立即提醒与软件更改相关的软件开发人员,其提交内容存在的潜在缺陷,由于此时开发人员对提交的更改内容印象较深,因此更容易定位到错误内容。因此即时软件缺陷预测能够以更具成本效益的方式进行软件测试和检查,从而提高软件质量。此外,软件更改通常涉及很少的代码行,具有精细的代码粒度,并且可以直接分配给对应的开发人员进行检查,从而进一步促进他们的任务。因此对即时软件缺陷预测进行研究具有重要意义。
[0003]现有技术在进行即时软件缺陷预测时,都假设问题的特征随着时间的推移保持不变,实际上,JIT

SDP可能会遭受类不平衡演变的影响,即随着时间的推移,缺陷类别之间的比例可能会发生变化,从而导致缺陷类别分布的不平衡,导致少数类别的缺陷无法被准确预测。
[0004]在整个软件开发期间,由于项目会经历各种不同的阶段,不同功能模块之间的复杂性也不尽相同,并且还会受到不同开发人员的影响,导致最近标记的软件更改可能已经过时,与当前概念并不相符,这个现象称为概念漂移。概念漂移对JIT

SDP的性能也会造成一定影响,例如特征漂移会导致在JIT

SDP中特征的典型值随时间而变化,预测漂移会导致在JIT

SDP中通常与干净类相关联的特征描述的更改现在可能与缺陷诱导类相关联。
[0005]另外,JIT

SDP还存在验证延迟的问题,这是因为开发人员提交的软件更改需要经历一定的时间才能进行验证和标记,因此接收训练示例的标签存在的延迟。验证延迟可能会导致训练示例的类标签不准确,从而影响预测的准确性。
[0006]JIT

SDP本身是一个在线学习的过程,数据流存在非平稳不平衡的挑战,而上述三个问题会随着时间的推移,加重对分类器性能的不良影响。

技术实现思路

[0007]针对现有技术的不足,本专利技术提出了一种基于动态分类器选择的即时软件缺陷预测方法,基于动态分类器选择方法集成分层AdaBoost,与验证延迟框架和跨项目数据过滤相结合,有效处理在线数据流的不平衡性,缓解概念漂移问题,提高验证延迟的准确性,综合处理现有技术普遍存在的三个问题,提高JIT

SDP的最终预测性能。
[0008]一种基于动态分类器选择的即时软件缺陷预测方法,具体包括以下步骤:
[0009]步骤1、收集用于即时软件缺陷预测的训练数据集,以数据块的形式输入基于两层滑动窗口的验证延迟框架,进行标记和纠正,以提供可靠的训练示例。首先为数据块中的每个软件变更数据设置一个二元组TE
i
,用作后续步骤的训练示例,TE
i
=(SC
i
,C
i
),其中,SC
i

示第i个软件变更,C
i
表示对应软件变更是否会引入缺陷,即软件变更对应的类标签:C
i
=1表示会引发缺陷,C
i
=0表示不会引入缺陷。然后设置两个大小为t的滑动时间窗口STW1和STW2,对训练示例中的类标签进行标记和纠正,保证训练示例的可靠性:
[0010]s1.1、将软件变更输入滑动时间窗口STW1。
[0011]s1.2、在滑动时间窗口STW1中,若软件变更SC
i
被发现引入缺陷,则令C
i
=1,生成训练示例TE
i
=(SC
i
,1),并放入训练队列,同时将滑动时间窗口STW1中的软件变更SC
i
移除,返回s1.1。若软件变更SC
i
没有引入缺陷,则令C
i
=0,生成训练示例TE
i
=(SC
i
,0),并将滑动时间窗口STW1中的软件变更SC
i
移除。
[0012]s1.3、复制训练示例TE
i
=(SC
i
,0),将一份训练示例放入训练队列中,另一份输入滑动时间窗口STW2中。
[0013]s1.4、在滑动时间窗口STW2中,若软件变更SC
i
没有引入缺陷,则将滑动时间窗口STW2中的TE
i
丢弃。若件变更SC
i
被发现引入缺陷,则将训练示例TE
i
=(SC
i
,0)修改为TE
i

=(SC
i
,1),并使用训练示例TE
i
'替换s1.3中放入训练队列的TE
i
,最后将滑动时间窗口STW2中的TE
i
丢弃。
[0014]步骤2、对于步骤1得到的训练队列,通过滑动窗口相似度分析筛选项目内数据流(WP,Within

Project)和跨项目数据流(CP,Cross

Project),从而利用WP和CP数据相结合的方式来缓解JIT

SDP中的概念漂移问题,具体步骤如下:
[0015]s2.1、引入提前准备的可靠CP数据,针对步骤1得到的训练队列,利用滑动窗口对相同类标签的训练示例进行相似性筛选,得到用于后续步骤的CP数据。接着利用筛选出的CP数据对训练队列中的项目内数据进行分流,得到WP数据。
[0016]s2.2、使用ADWIN方法依次对每个数据块进行概念漂移检测,如果存在概念漂移,则使用s2.1得到的CP数据进行纠正,然后再使用WP数据进行纠正。结合WP和CP数据同时进行概念漂移适应处理,既可以有效缓解概念漂移的问题,也可以有效避免仅使用跨项目数据带来的预测偏差的问题。
[0017]步骤3、采用动态分类器选择和分层AdaBoost集成的方法,来处理类不平衡演化问题。基于预处理数据和分层AdaBoost集成的优势,构建分类器池,传递给动态选择过程。在预测阶段,通过动态选择,使用适合当前数据流分布的分类器进行缺陷预测,充分利用不同分类器的优势,提高对于类不平衡演化的适应能力与预测性能。具体步骤如下:
[0018]s3.1、从空分类器池开始,对经过步骤2概念漂移检测后的第一个数据块DS0进行训练,根据sum规则对N个个体分类器的支持度函数进行聚合,得到第一个AdaBoost分类器Ψ0,并添加到分类器池Π中。
[0019]s3.2、当第二个数据块DS1到达时,首先根据数据块内的数据分布从分类器池Π中选择一个分类器,预测数据块DS1中每个示例对应的类标签。并根据得到的类标签训练一个新的AdaB本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于动态分类器选择的即时软件缺陷预测方法,其特征在于:具体包括以下步骤:步骤1、收集用于即时软件缺陷预测的训练数据集,通过两个大小为t的滑动时间窗口STW1和STW2,依次对每个训练示例进行类标签的标记与验证;步骤2、对步骤1处理后的训练示例使用滑动窗口相似度分析,根据提前收集的CP数据从相同类标签的训练示例中筛选出CP数据,接着利用筛选得到的CP数据对项目内的训练示例进行分流得到WP数据;使用ADWIN方法依次对每个数据块进行概念漂移检测,针对存在概念漂移的数据块,首先使用CP数据进行纠正,然后再使用WP数据进行纠正;步骤3、采用动态分类器选择和分层AdaBoost集成的方法,来处理类不平衡演化问题,具体步骤如下:s3.1、对经过步骤2概念漂移检测后的第一个数据块DS0进行训练,得到第一个AdaBoost分类器Ψ0,并添加到分类器池Π中;s3.2、对第二个数据块DS1首先根据数据块内的数据分布从分类器池Π中选择一个分类器,预测数据块DS1中每个示例对应的类标签;并根据得到的类标签训练一个新的AdaBoost分类器Ψ1,添加到分类器池Π中;对第二个数据块DS1进行过采样处理,将采样得到的数据存储为动态选择数据集DSEL1;s3.3、设置k≥2,对第k+1个数据块DS
k
,首先根据动态选择数据集DSEL
k
与数据块内的数据分布,从分类器池Π中选择一个分类器预测数据块DS
k
中每个示例对应的类标签;根据数据块DS
k
预测得到的类标签训练一个新的AdaBoost分类器Ψ
k
,若分类器池Π中分类器的数量超过L,则删除其中性能最差的基本分类器,再将Ψ
k
添加到分类器池Π中;最后对数据块DS
k
进行过采样处理,将采样得到的数据存储为动态选择数据集DSEL
k+1
;s3.4、重复s3.3,直至完成对训练数据集中所有数据块的处理;步骤4、构建一个用于即时软件缺陷预测的分类器,使用经过步骤1~3处理后的数据集对该分类器进行训练;然后向训练后的分类器输入开发人员新提交的软件变更,预测该软件变更对应的缺陷类标签,实现即时软件缺陷预测。2.如权利要求1所述一种基于动态分类器选择的即时软件缺陷预测方法,其特征在于:构建基于两层滑动窗口的验证延迟框架,对训练数据集中的软件变更进行标记和纠正,具体步骤为:s1.1、为每个软件变更数据设置一个二元组TE
i
=(SC
i
,C
i
),将软件变更输入滑动时间窗口STW1;s1.2、在滑动时间窗口STW1中,若软件变更SC...

【专利技术属性】
技术研发人员:王兴起吴启凯魏丹方景龙陈滨秦辉亮
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

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

1