【技术实现步骤摘要】
基于生成对抗网络和集成学习的软件缺陷预测方法
[0001]本专利技术属于软件缺陷预测
,具体涉及一种基于生成对抗网络和集成学习的软件缺陷预测方法。
技术介绍
[0002]随着信息化的普及,各种正在使用或者正在开发过程中的软件都可能存在着软件缺陷,能够及时的发现和定位软件缺陷,对于软件系统的正常运行和软件功能的完善都有着重大的作用。软件缺陷预测(Software Defect Prediction,SDP)旨在从软件项目中找到最有可能包含缺陷的模块,这里的模块可以是一个函数、一个循环体或者是一个类等等。通常软件缺陷预测方法分为以下三个步骤。首先,根据历史软件中各模块出现的漏洞报告,对软件模块进行缺陷和非缺陷的标注。其次,为了训练各种软件缺陷预测模型,使用不同的软件缺陷度量指标信息作为缺陷数据的特征。最后,经过一定的数据预处理之后,划分训练集和测试集,进行软件缺陷预测模型的训练和测试工作。
[0003]目前已提出很多软件缺陷预测方法,如支持向量机、决策树、随机森林、AdaBoost方法等。但是,这些方法仅对原始缺陷数据进行简要的预处理,在算法层面进行了不同的修改,并没有考虑数据层面存在的问题。考虑到软件缺陷在整个软件中所占的比例为少数,因此软件缺陷数据集属于典型的类不平衡性数据,例如在NASA MDP软件缺陷数据集的PC1、PC2及PC3中,存在着严重的类不平衡现象。由于对样本数据进行重采样,可使原本不均衡的数据变得均衡。因此,重采样的方法被引入软件缺陷预测方法中,典型的重采样方法如合成少数类过采样方法(S ...
【技术保护点】
【技术特征摘要】
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中鉴别...
【专利技术属性】
技术研发人员:孟海宁,郑毅,冯锴,朱磊,杨哲,张嘉薇,黑新宏,
申请(专利权)人:西安理工大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。