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

一种软件缺陷数据生成方法和系统

文献发布时间:2024-04-18 20:00:50


一种软件缺陷数据生成方法和系统

技术领域

本发明涉及数据生成技术领域,尤其是指一种软件缺陷数据生成方法和系统。

背景技术

软件缺陷预测(Software Defect Prediction,SDP)涉及预测软件中可能会出现的缺陷。有效的缺陷预测有助于及时识别软件中软件缺陷的区域。在软件开发生命周期的早期阶段,识别软件缺陷并消除软件缺陷对产生具有成本效益和高质量的软件产品至关重要。通常,SDP的数据集具有数量不平衡现象,具体指非缺陷(多数类)样本的数量较多,缺陷(少数类)样本的数量很少。在不平衡数据上训练模型会产生偏差学习,从而导致不准确的预测。因此,有效处理不平衡数据对于成功开发有效的缺陷预测模型至关重要。

过采样方法是一种通过增加少数类样本的方法来解决数据分布不平衡问题。SMOTE(Synthetic Minority Oversampling Technique)是现有最经典的过采样方法,它通过随机选择少数类样本点来进行线性插值,以此来增加少数类样本点的数量。但是,SMOTE忽略了噪音样本点与无用样本点对分类结果的影响,可能会导致生成新的噪音样本点或者无用样本点,从而产生过拟合现象。Cluster-SMOTE(Cluster Synthetic MinorityOversampling Technique)是对SMOTE方法的一种改进,通过对少数类样本进行聚类,可以更好地保留数据的局部结构,减少过度拟合的风险。但是该方法可能会生成新的噪声点,使得分类器难以学习到有区分度的信息。

发明内容

为此,本发明所要解决的技术问题在于克服现有技术中软件缺陷预测数据中缺陷数据和非缺陷数据不平衡、且现有方法构造的新数据存在噪声的问题。

为解决上述技术问题,本发明提供了一种软件缺陷数据生成方法,包括:

步骤S1:获取软件数据集,其中,所述软件数据集包括缺陷数据集和非缺陷数据集,将所述缺陷数据集作为少数类数据集,将所述非缺陷数据集作为多数类数据集;

步骤S2:对所述缺陷数据集和非缺陷数据集进行过采样,生成所需的新的缺陷样本,将新的缺陷样本放入缺陷数据集中,使放入新的缺陷样本后的缺陷数据集的样本点和非缺陷数据集的样本点达到平衡。

在本发明的一个实施例中,所述步骤S1还包括:根据获取的软件数据集,计算所需生成的新的缺陷样本个数的方法,具体为:

获取软件数据集D={(x

令D=D

令所需生成的新的缺陷样本个数表示为n

在本发明的一个实施例中,所述步骤S2中对所述缺陷数据集和非缺陷数据集进行过采样,生成所需的新的缺陷样本个数,方法包括:

对所述少数类数据集D

对所述多数类数据集D

根据所述非缺陷边界数据集合B

对所述危险样本

根据安全样本

在本发明的一个实施例中,所述对所述少数类数据集D

在所述软件数据集D中寻找每个样本x

对于每个样本x

由所有安全样本构成的集合记为

在本发明的一个实施例中,所述对所述多数类数据集D

在所述软件数据集D中寻找每个样本x

对于每个样本x

由关于x

在数据集合D′

在本发明的一个实施例中,所述根据所述非缺陷边界数据集合B

对每个样本

其中,Sw(x

Sw(x

F(x

其中,f(x

d(x

G(x

g(x

其中,M是用户自定义的参数。

在本发明的一个实施例中,所述对所述危险样本

将危险样本

计算每个聚类子簇在危险样本

其中,

在本发明的一个实施例中,所述根据安全样本

根据所述安全样本

根据每个聚类子簇在

对于安全样本

其中,

对于危险样本

最终,获得新生成的缺陷数据样本集合

在本发明的一个实施例中,若

为解决上述技术问题,本发明提供了一种软件缺陷数据生成系统,包括:

获取模块:用于获取软件数据集,其中,所述软件数据集包括缺陷数据集和非缺陷数据集,将所述缺陷数据集作为少数类数据集,将所述非缺陷数据集作为多数类数据集;

过采样模块:用于对所述缺陷数据集和非缺陷数据集进行过采样,生成所需的新的缺陷样本,将新的缺陷样本放入缺陷数据集中,使放入新的缺陷样本后的缺陷数据集的样本点和非缺陷数据集的样本点达到平衡。

本发明的上述技术方案相比现有技术具有以下优点:

本发明通过构造出的新的缺陷数据集,能够将软件数据集中的缺陷数据集(少数类数据集)和非缺陷数据集(多数类数据集)达到平衡,并去除了噪声的影响,保证后期模型训练及预测的有效性;

本发明构造出的新的缺陷数据集能够使得用于软件缺陷预测的模型学习到有区分度的信息,保证模型的高效性。

附图说明

为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明。

图1是本发明的方法流程图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

实施例一

参照图1所示,本发明涉及一种软件缺陷数据生成方法,包括:

步骤S1:获取软件数据集,其中,所述软件数据集包括缺陷数据集和非缺陷数据集,将所述缺陷数据集作为少数类数据集,将所述非缺陷数据集作为多数类数据集;

步骤S2:对所述缺陷数据集和非缺陷数据集进行过采样,生成所需的新的缺陷样本,将新的缺陷样本放入缺陷数据集中,使放入新的缺陷样本后的缺陷数据集的样本点和非缺陷数据集的样本点达到平衡。

以下对本发明例进行详细介绍:

一、数据输入

输入软件数据集D={(x

令D=D

二、过采样

令新生成的缺陷项目样本数据集合为D

1.缺陷数据集D

(1)在数据集合D中寻找每个样本x

(2)统计这k个近邻样本中多数类样本的个数m

(3)由所有安全样本构成的集合记为

(4)令

2.非缺陷数据集D

(1)在数据集合D中寻找每个样本x

(2)若m

(3)由所有噪声样本构成的集合记为

(4)在数据集合D′

3.计算缺陷数据中安全样本

对每个

其中Sw(x

Sw(x

F(x

其中f(x

d(x

g(x

M是用户自定义的参数。

4.对缺陷数据中危险样本

(1)将缺陷危险数据集样本

(2)计算聚类子簇在

其中

5.生成少数类新样本(即所需的新的缺陷样本个数)

(1)根据安全样本和危险样本的数量,计算安全样本和危险样本分别需要生成新的样本数量

根据每个聚类子簇在

(2)对于安全样本点的新样本生成:先根据选择概率

其中

(3)对于危险样本点的新样本生成:对缺陷危险数据集合

(4)最终,获得新生成的缺陷数据样本集合

三、模型训练及预测

令D

以下通过一个具体的实施例进一步说明本发明:

本发明在PROMISE存储库中的Tomcat6.0数据集上进行了测试。数据集由20个软件指标和一个指示特定类别缺陷数量的因变量组成。在软件工程中,通常使用各种指标来度量软件质量、复杂性和可维护性等方面的特征。Tomcat6.0中重要指标包括CBO、RFC、LCOM、LOC、MOA、AMC、Max_CC、Avg_CC。例如CBO(Coupling Between Objects)表示对象之间的耦合度、RFC(Response For a Class)表示一个类对外响应的方法数、LCOM(Lack of Cohesionof Methods)表示方法缺乏内聚性、LOC(Lines Of Code)表示代码行数、MOA(Number OfAttributes)表示一个类中的属性数量、AMC(Average Method Complexity)表示平均方法复杂度等。通过属性描述将软件项目分类为具有非缺陷,即为多数类,或者缺陷,即为少数类。具体实施步骤如下:

一、数据输入

输入软件数据集D={(x

令D=D

二、过采样

令新生成的缺陷项目样本数据集合为,初始化其为空集。过采样的步骤如下:

1.缺陷数据集D

(1)在数据集合D中寻找每个样本x

(2)统计这k个近邻样本中多数类样本的个数m

(3)由所有安全样本构成的集合记为

(4)令

2.非缺陷数据集D

(1)在数据集合D中寻找每个样本x

(2)若k=m

(3)由所有噪声样本构成的集合记为

(4)在数据集合D′

3.计算缺陷数据中安全样本

对每个

其中Sw(x

Sw(x

F(x

其中f(x

d(x

g(x

M是用户自定义的参数。在本实例中,M=0.2。

DF(x

4.对缺陷数据中危险样本

(1)将缺陷危险数据集样本

(2)计算聚类子簇在

其中

5.生成少数类新样本(即所需的新的缺陷样本个数)

(1)根据安全样本和危险样本的数量,计算安全样本和危险样本分别需要生成新的样本数量

在本实例中,

在本实例中,

(2)对于安全样本点的新样本生成:先根据选择概率

其中

(3)对于危险样本点的新样本生成:对缺陷危险数据集合

(4)最终,获得新生成的缺陷数据样本集合

三、模型训练及预测

令D

四、实验对比

本实施例在Tomcat6.0数据集上进行五折交叉验证实验。将接收到的软件数据样本x

采用AUC、G-mean、Recall三个不同评价指标下对分类效果进行评估,混淆矩阵如表1所示。

表1混淆矩阵

AUC=Area Under Receiver Operating Characteristic Curve

分类结果如表2所示,本发明与SMOTE和Cluster-SMOTE相比,在AUC、G-mean、Recall这三个指标下的效果均较好。

表2三种过采样方法的结果对比

实施例二

本实施例提供一种软件缺陷数据生成系统,包括:

获取模块:用于获取软件数据集,其中,所述软件数据集包括缺陷数据集和非缺陷数据集,将所述缺陷数据集作为少数类数据集,将所述非缺陷数据集作为多数类数据集;

过采样模块:用于对所述缺陷数据集和非缺陷数据集进行过采样,生成所需的新的缺陷样本,将新的缺陷样本放入缺陷数据集中,使放入新的缺陷样本后的缺陷数据集的样本点和非缺陷数据集的样本点达到平衡。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,上述实施例仅仅是为清楚地说明所作的举例,并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

相关技术
  • 一种光伏组件及光伏建筑系统
  • 一种低间隙式高效型光伏组件
  • SEF型高效光伏电池和SEF型高效光伏电池组件
技术分类

06120116543267