掌桥专利:专业的专利平台
掌桥专利
首页

一种软件缺陷预测方法

文献发布时间:2023-06-19 11:16:08


一种软件缺陷预测方法

技术领域

本发明涉及软件仓库挖掘中的软件缺陷预测领域,尤其涉及一种基于聚类组合采样方法的软件缺陷预测方法。

背景技术

通过软件缺陷预测技术预先识别出软件可能含有的缺陷将有助于减少测试成本,提高测试效率,提升软件的性能与质量。然而软件缺陷预测精度受数据类不平衡的影响,仍然没有达到令人满意的程度。

传统的采样技术,如随机过采样方法,针对整体数据集生成新的有缺陷样本,使得有缺陷样本密集区域中生成大量重复数据,而有缺陷样本稀疏区域生成的样本不足,导致整体样本数量达到期望值,解决数据集的类间不平衡问题。但数据集中,往往还存在类内不平衡,类内不平衡指数据集内有缺陷样本分布不均匀,有缺陷的样本可以被划分为多个子簇,且子簇之间的样本数量差距较大,即容易产生小析取问题。类不平衡会干扰软件缺陷的预测精度,影响整个软件的开发过程。但样本分布更加失衡,给缺陷预测造成较大的困扰。

软件缺陷预测技术中,对于考虑到类内不平衡的圆域采样方法,随机选取样本A、B,在以A为原点,A、B距离为半径的范围内随机生成新样本,该圆域范围过大,当A为某一边缘样本时,假设该方法在圆域范围内生成的样本均匀分布,则与多数样本相背的范围内生成的样本是不被期望的,该范围的新样本会使簇偏离原样本数据,且更为分散,增加分类器学习的难度,影响缺陷预测效果。

发明内容

本发明提出了一种软件缺陷预测方法,通过采用K-means聚类算法将软件缺陷预测数据集样本划分为三个簇,并针对每一簇中数据样本的特征选取合适的采样方法进行处理,以解决数据集类间不平衡与类内不平衡问题,提升软件缺陷预测效果。

为了达到上述目的,本发明公开了一种软件缺陷预测方法,具体包含以下步骤:

根据软件缺陷预测数据集中数据样本缺陷特征将该数据集划分为三簇数据样本,每一簇数据样本中根据其内的有缺陷样本的分布情况分别选择合适的采样方法以生成新的有缺陷数据样本,从而合成新的数据集对软件缺陷预测模型进行训练。

进一步地,采用采样方法生成新的有缺陷数据样本时,根据每一簇数据样本中的样本数量计算其需要生成的有缺陷样本数量,以使每一簇数据样本中的样本数较为合理。

进一步地,所述计算每一簇数据样本中需要生成的有缺陷样本数量的公式为:

N=Z*p-M

其中,p是预设的有缺陷样本的比例参数,M为该簇数据样本中含有的有缺陷样本数量,Z为该簇数据样本中的样本总量。

进一步地,采用K-means聚类算法将软件缺陷预测数据集样本划分为:有缺陷样本密集簇、有缺陷样本和无缺陷样本混合簇以及有缺陷样本稀疏簇。

进一步地,针对有缺陷样本密集簇,若其需要生成的有缺陷样本数量为非正数,则不需对该簇数据样本进行采样处理;否则,采用SMOTE过采样方法生成有缺陷样本。

进一步地,针对有缺陷样本和无缺陷样本混合簇,采用SMOTE过采样方法生成有缺陷样本。

进一步地,针对有缺陷样本稀疏簇,采用三点过采样方法生成有缺陷样本。

进一步地,所述采用SMOTE过采样方法生成有缺陷样本的方法,包括以下步骤:

a、在数据样本簇内随机选取一个有缺陷样本;

b、在该有缺陷样本近邻随机选取一样本;

c、在上述两个样本的线性连线上随机生成新的有缺陷样本;

d、重复步骤a-c,直至生成足够数量的新样本;

所述生成新样本的计算公式为:

x

式中,x

进一步地,所述采用三点过采样方法生成有缺陷样本的方法,包含:

1、在数据样本簇中随机选取一个有缺陷样本;

2、再随机选取两个与该有缺陷样本相邻的有缺陷样本;

3、在上述三个有缺陷样本组成的三角区域内,随机生成新的有缺陷样本;

4、重复执行步骤1-3,直至生成足够数量的新样本;

所述生成新样本的计算公式为:

式中,Q为所生成的新样本,A为随机选取的有缺陷样本,B、C分别为与有缺陷样本A相邻的有缺陷样本,随机参数r

本发明具有以下优势:

本发明利用有缺陷样本的分布特点将软件缺陷预测数据集划分为三簇数据样本,并针对每一簇数据样本选取合适的采样方法,有助于解决样本分布类内不平衡问题;对于有缺陷样本稀疏簇,采用三点过采样方法进行处理,能够使有缺陷样本分布更加集中,在解决样本分布类间不平衡的同时,解决新样本生成造成的样本分布类内不平衡问题;从而在进行软件缺陷预测时,能够提高预测精度,降低软件开发的成本,提高软件的质量。

附图说明

图1为软件缺陷预测方法的流程图;

图2为三点过采样方法的示意图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用以方便、明晰地辅助说明本发明实施例的目的。

如图1所示,本发明提出的软件缺陷预测方法,包含以下步骤:

S1、获取软件缺陷预测数据集,并对该数据集进行特征选择处理;

本实施例中,采用NASA公布的MDP数据集,并从其中选用CM1、JM1、KC1、PC3数据集作为本实施例的软件缺陷预测数据集。软件缺陷预测数据集中又包括有缺陷样本与无缺陷样本两类数据样本。

对该数据集进行特征选择处理,选取倾向于少数类样本的特征,删掉冗余和不相关的特征,以降低类不平衡现象,并提高缺陷预测模型的泛化能力。

本实施例中通过C4.5决策树的信息增益率进行数据集特征选择,即先从当前候选特征集合中找到信息增益高于平均水平的特征,组成新的候选特征集合,然后再计算这个新候选特征集合中的增益率,选取信息增益率较高的特征,由此完成特征的选择。

在计算信息增益率之前,先引入信息熵Ent(D),公式如下所示:

式中,|y|表示样本的总类,软件缺陷预测的|y|=2,只有有缺陷和无缺陷两种情况;p

进一步地,引入信息增益Gain,用来确定以哪个特征作为下一个判别特征。假设选取的属性F

信息增益越大,意味着使用判别特征F

这里IV(F

IV(F

S2、将数据集划分为训练集及测试集,并采用K-means聚类算法将该训练集划分为三簇数据样本。

本实施例中,采用十折交叉验证法将数据集随机划分为10份,其中9份作为训练集,另外1份作为测试集,每份只有一次机会作为测试集。

若只根据样本类别将训练集划分为两簇数据样本,则该两簇数据样本中都会混着不同类的样本,容易引起缺陷样本分布不平衡与缺陷样本比例不平衡问题。本发明通过K-means聚类算法按照样本距离,将训练集划分为具有不同样本分布特征的三簇数据样本,分别为:有缺陷样本密集簇、有缺陷样本和无缺陷样本混合簇以及有缺陷样本稀疏簇,有助于每簇内的样本分布均匀,避免每一簇数据样本中都存在类间不平衡问题。

具体地,采用K-means聚类算法划分训练集的方法,包括以下步骤:

A、随机选取一个聚类中心点,计算训练集中样本到该聚类中心点的欧氏距离,依据距离大小随机选择第二、第三个聚类中心点。选取的原则是距离越大,被选择的概率越高。

所述欧式距离的计算公式为:

式中,Center为聚类中心,x

B、计算每一簇内样本的均值作为新的聚类中心点。其计算公式如下:

其中,C表示不同的簇,i∈{1,2,3}。

C、重复步骤A、B,直到新的聚类中心点不再发生变化。

D、依据新的聚类中心点,计算样本点与新的聚类中心点的欧式距离,将训练集样本重新划分为三个簇。

S3、每一簇数据样本中分别计算该簇数据样本需要生成的有缺陷样本数量,并采用合适的采样方法生成新的有缺陷样本,从而合成新训练集;

具体地,不同簇数据样本中,有缺陷样本与无缺陷样本的比例各不相同,根据每一簇数据样本中的样本数量计算其需要生成的有缺陷样本数量,以使每一簇数据样本中的样本数较为合理。

所述计算每一簇数据样本中需要生成的有缺陷样本数量的公式为:

N=Z*p-M

其中,p是预设的有缺陷样本的比例参数,M为该簇数据样本中含有的有缺陷样本数量,Z为该簇数据样本中的样本总量。

对于有缺陷样本密集簇,若所计算的其需要生成的有缺陷样本数量为非正数,则不需对该簇数据样本进行采样处理;否则,采用SMOTE过采样方法生成有缺陷样本。对于有缺陷样本和无缺陷样本混合簇,采用SMOTE过采样方法生成有缺陷样本。

具体地,所述采用SMOTE过采样方法生成有缺陷样本的方法,包括以下步骤:

a、在数据样本簇内随机选取一个有缺陷样本;

b、在该有缺陷样本近邻随机选取一样本;

c、在上述两个样本的线性连线上随机生成新的有缺陷样本;

d、重复步骤a-c,直至生成足够数量的新样本;

所述生成新样本的计算公式为:

x

式中,x

对于有缺陷样本稀疏簇,采用三点过采样方法生成有缺陷样本。

具体地,如图2所示,所述采用三点过采样方法生成有缺陷样本的方法,包含:

1、在数据样本簇中随机选取一个有缺陷样本;

2、再随机选取两个与该有缺陷样本相邻的有缺陷样本;

3、在上述三个有缺陷样本组成的三角区域内,随机生成新的有缺陷样本;

4、重复执行步骤1-3,直至生成足够数量的新样本;

所述生成新样本的计算公式为:

式中,Q为所生成的新样本,A为随机选取的有缺陷样本,B、C分别为与有缺陷样本A相邻的有缺陷样本,r

相较之前研究者提出的圆域方法,本发明三点过采样方法所标注范围不包含与样本点相背的区域,在该区域上生成新样本,距离原有缺陷样本分布更紧密,能够使有缺陷样本分布更加集中,在解决考虑数据集类间不平衡的同时,解决样本生成造成的类内不平衡问题。

三簇数据样本内均生成足够数量的新样本后,合成新的训练集。

S4、采用新训练集训练软件缺陷预测模型,并通过训练后的软件缺陷预测模型对测试集进行软件缺陷测试。

本实施例中,软件缺陷预测模型采用AdaBoost集成思想并选择C4.5决策树作为弱分类器。通过新训练集对该模型进行训练,具体包含以下步骤:

A.给每一个训练集赋相等的权重;

B.按照样本权重分布训练数据得到第一个弱分类器;

C.计算弱分类器在加权训练数据集上的分类误差率;

D.计算弱分类器的权重,并更新分类器的权重;

E.重复步骤B~D,直到分类器数量达到阈值;

F.构建最终的分类器线性组合,得到最终的分类器。

使用训练后的分类器对测试集进行缺陷预测,能提高预测精度,提高软件的质量。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

相关技术
  • 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
  • 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
技术分类

06120112859829