基于生成对抗网络和集成学习的软件缺陷预测方法技术

技术编号:32356547 阅读:9 留言:0更新日期:2022-02-20 03:17
本发明专利技术公开一种基于生成对抗网络和集成学习的软件缺陷预测方法,包括:步骤1,对软件缺陷数据集进行预处理后划分成训练集和测试集,计算重采样率;步骤2,构造生成对抗网络模型;步骤3,将训练集输入至生成对抗网络训练,得到训练完成的生成对抗网络;步骤4,使用训练完成的生成对抗网络,根据重采样率,生成新的少样本缺陷数据,得到重采样后的训练集;步骤5,使用AdaBoost方法,构造软件缺陷强分类器,将测试集输入至训练完成的软件缺陷强分类器,得到软件缺陷预测结果。本发明专利技术解决了软件缺陷数据不平衡的问题,提高了软件缺陷预测方法的准确度、正确率、召回率和F

【技术实现步骤摘要】
基于生成对抗网络和集成学习的软件缺陷预测方法


[0001]本专利技术属于软件缺陷预测
,具体涉及一种基于生成对抗网络和集成学习的软件缺陷预测方法。

技术介绍

[0002]随着信息化的普及,各种正在使用或者正在开发过程中的软件都可能存在着软件缺陷,能够及时的发现和定位软件缺陷,对于软件系统的正常运行和软件功能的完善都有着重大的作用。软件缺陷预测(Software Defect Prediction,SDP)旨在从软件项目中找到最有可能包含缺陷的模块,这里的模块可以是一个函数、一个循环体或者是一个类等等。通常软件缺陷预测方法分为以下三个步骤。首先,根据历史软件中各模块出现的漏洞报告,对软件模块进行缺陷和非缺陷的标注。其次,为了训练各种软件缺陷预测模型,使用不同的软件缺陷度量指标信息作为缺陷数据的特征。最后,经过一定的数据预处理之后,划分训练集和测试集,进行软件缺陷预测模型的训练和测试工作。
[0003]目前已提出很多软件缺陷预测方法,如支持向量机、决策树、随机森林、AdaBoost方法等。但是,这些方法仅对原始缺陷数据进行简要的预处理,在算法层面进行了不同的修改,并没有考虑数据层面存在的问题。考虑到软件缺陷在整个软件中所占的比例为少数,因此软件缺陷数据集属于典型的类不平衡性数据,例如在NASA MDP软件缺陷数据集的PC1、PC2及PC3中,存在着严重的类不平衡现象。由于对样本数据进行重采样,可使原本不均衡的数据变得均衡。因此,重采样的方法被引入软件缺陷预测方法中,典型的重采样方法如合成少数类过采样方法(Synthetic Minority Over

Sampling Technique,SMOTE)、自适应综合过采样方法(Adaptive Synthetic Sampling,ADASYN)、随机上采样方法(Randomly Over Sampling,ROS)、随机下采样方法(Randomly Under Sampling,RUS)等。其中SMOTE和ADASYN方法采用人工方式合成少样本数据的形式,来减少数据的类不平衡问题,生成数据的规则是人为规定的,而在真实软件缺陷数据集中,难以找到合适的规则。而ROS和RUS方法,直接减少软件缺陷预测模型训练集的数据量,实际应用效果较差。

技术实现思路

[0004]本专利技术的目的是提供一种基于生成对抗网络和集成学习的软件缺陷预测方法,本专利技术在应对不同软件缺陷数据集时,都能自适应的经过生成对抗网络进行数据重采样,缓解数据不平衡问题,同时,采用集成学习的AdaBoost方法,进行软件缺陷分类训练,提高软件缺陷预测方法的准确度、正确率、召回率和F

measure性能。
[0005]本专利技术所采用的技术方案是:
[0006]基于生成对抗网络和集成学习的软件缺陷预测方法,包括以下步骤:
[0007]步骤1,对软件缺陷数据集进行预处理,将预处理后的数据集划分成训练集和测试集,计算训练集数据中缺陷类和非缺陷类数据的比值,记为重采样率;
[0008]步骤2,构造生成对抗网络模型,该模型包括生成器和鉴别器两部分;
[0009]步骤3,采用生成对抗网络对训练集数据进行训练,至生成对抗网络收敛或达到设置的迭代次数后,得到训练完成的生成对抗网络;
[0010]步骤4,使用训练完成的生成对抗网络,根据步骤1计算得到的重采样率,生成新的少数类别缺陷类数据,得到重采样后的训练集;
[0011]步骤5,使用集成学习AdaBoost方法,进行软件缺陷强分类器的训练,将步骤4重采样后的训练集输入至软件缺陷分类器,训练完成后;在测试集上检验分类器效果,得到软件缺陷预测评价指标。
[0012]本专利技术的特点还在于:
[0013]生成器和鉴别器的损失函数如公式(1)和公式(2)所示:
[0014]DLoss=BCELoss(x
true
,y
true
)+BCELoss(x
fake
,y
fake
)
ꢀꢀꢀ
(1)
[0015]GLoss=BCELoss(x
fake
,y
true
)
ꢀꢀꢀꢀꢀꢀꢀ
(2)
[0016]其中DLoss为鉴别器的损失函数,GLoss为生成器的损失函数;生成器和鉴别器均采用Adam优化器,使用学习率(learning rate)、Betas和迭代次数三个超参数;x
fake
、x
true
、y
true
、y
fake
分别为生成器生成的伪造数据、真实的少数类别缺陷类数据、真实少数类别缺陷类数据的标签和伪造数据的标签,BCELoss为二元交叉熵损失函数,公式为:
[0017][0018]其中x
i
,y
i
分别为第i个软件缺陷样本和其对应的标签,n为总的样本数。
[0019]步骤2中生成器包括初始的随机噪声输入层、最终的生成数据输出层以及由线性层、批量归一化层和LeakyReLU激活函数组成的块式结构,在噪声输入层之后的第一个块式结构中不设置批量归一化层,同样在数据输出层的前一个块式结构中也不设置批量归一化层,在数据输出层采用Sigmoid激活函数,噪声输入维度为noise_dim,经过3个块式结构,最终经过输出层的全连接层,输出维度为out_dim;
[0020]步骤2中鉴别器包括初始的数据输入层,最终的鉴别结果输出层以及由线性层和LeakyReLU激活函数组成的块式结构;输入数据的维度为out_dim,同生成器输出的数据维度相同;鉴别结果输出层采用线性层和Sigmoid激活函数,鉴别器最终的输出结果为0到1的数值。
[0021]步骤3的步骤为:
[0022]步骤3.1,将训练集进行归一化操作,将其数值范围约束到0到1之间;
[0023]步骤3.2,将数值范围在0到1的随机噪声输入到生成器G中,生成伪造数据,并将该数据标签记为0;将步骤3.1中归一化后的训练集标签记为1,与伪造数据一同输入至鉴别器D中,区分真实数据和伪造数据;
[0024]步骤3.3,重复步骤3.2,至生成对抗网络收敛或达到设置的迭代次数后,得到训练完成的生成器G和鉴别器D。
[0025]步骤4的具体操作如下:步骤4.1,使用步骤3训练完成的生成对抗网络中的生成器G,根据步骤1中的重采样率k,计算得到需要生成的少样本软件缺陷类数据,将0到1的随机噪声输入至步骤3得到的生成器G中,经过生成器的计算,得到生成的少数类别缺陷类数据;
[0026]步骤4.2,对步骤4.1中生成的少数类别缺陷类数据,进行同步骤3.2中归一化操作相反的反归一化操作,与原始的软件缺陷少样本类训练数据合并后,得到重采样后的训练
集数据。
[0027]所示步骤5的具体操作如下:
[0028]步骤5.1,将本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于生成对抗网络和集成学习的软件缺陷预测方法,其特征在于,包括以下步骤:步骤1,对软件缺陷数据集进行预处理,将预处理后的数据集划分成训练集和测试集,计算训练集数据中缺陷类和非缺陷类数据的比值,记为重采样率;步骤2,构造生成对抗网络模型,该模型包括生成器和鉴别器两部分;步骤3,采用生成对抗网络对训练集数据进行训练,至生成对抗网络收敛或达到设置的迭代次数后,得到训练完成的生成对抗网络;步骤4,使用训练完成的生成对抗网络,根据步骤1计算得到的重采样率,生成新的少数类别缺陷类数据,得到重采样后的训练集;步骤5,使用集成学习AdaBoost方法,进行软件缺陷强分类器的训练,将步骤4重采样后的训练集输入至软件缺陷分类器,训练完成后;在测试集上检验分类器效果,得到软件缺陷预测评价指标。2.如权利要求1所述的基于生成对抗网络和集成学习的软件缺陷预测方法,其特征在于,所述生成器和鉴别器的损失函数如公式(1)和公式(2)所示:DLoss=BCELoss(x
true
,y
true
)+BCELoss(x
fake
,y
fake
)
ꢀꢀꢀꢀ
(1)GLoss=BCELoss(x
fake
,y
true
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)其中DLoss为鉴别器的损失函数,GLoss为生成器的损失函数;生成器和鉴别器均采用Adam优化器,使用学习率(learning rate)、Betas和迭代次数三个超参数;x
fake
、x
true
、y
true
、y
fake
分别为生成器生成的伪造数据、真实的少数类别缺陷类数据、真实少数类别缺陷类数据的标签和伪造数据的标签,BCELoss为二元交叉熵损失函数,公式为:其中x
i
,y
i
分别为第i个软件缺陷样本和其对应的标签,n为总的样本数。3.如权利要求2所述的基于生成对抗网络和集成学习的软件缺陷预测方法,其特征在于,所述步骤2中生成器包括初始的随机噪声输入层、最终的生成数据输出层以及由线性层、批量归一化层和LeakyReLU激活函数组成的块式结构,在噪声输入层之后的第一个块式结构中不设置批量归一化层,同样在数据输出层的前一个块式结构中也不设置批量归一化层,在数据输出层采用Sigmoid激活函数,噪声输入维度为noise_dim,经过3个块式结构,最终经过输出层的全连接层,输出维度为out_dim;所述步骤2中鉴别...

【专利技术属性】
技术研发人员:孟海宁郑毅冯锴朱磊杨哲张嘉薇黑新宏
申请(专利权)人:西安理工大学
类型:发明
国别省市:

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

1