[发明专利]基于CNN-SVM的软件缺陷预测方法在审
申请号: | 202011430269.5 | 申请日: | 2020-12-09 |
公开(公告)号: | CN112631898A | 公开(公告)日: | 2021-04-09 |
发明(设计)人: | 雷杨;朱耀琴 | 申请(专利权)人: | 南京理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/04 |
代理公司: | 南京理工大学专利中心 32203 | 代理人: | 封睿 |
地址: | 210094 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 cnn svm 软件 缺陷 预测 方法 | ||
1.一种基于CNN-SVM的软件缺陷预测方法,其特征在于,包括如下步骤:
步骤1,从软件历史开发数据中提取软件数据特征,将获得的数据特征进行归一化处理;
步骤2,对归一化后的缺陷样本的数据特征进行SMOTE样本扩充;
步骤3,构建CNN-SVM模型,正常样本和扩充后的缺陷样本一起输入到CNN-SVM模型中,先由CNN网络进行卷积、下采样和扁平化处理,完成特征提取后,输入到SVM层进行缺陷预测;
步骤4,采用RMSProp优化器,基于binary_cross_entroy损失函数进行优化拟合,完成CNN-SVM模型的训练;
步骤5,将目标软件缺陷特征输入训练好的CNN-SVM模型,输出预测结果。
2.根据权利要求1所述的基于CNN-SVM的软件缺陷预测方法,其特征在于,步骤1,从软件历史开发数据中提取软件数据特征,将获得的数据特征进行归一化处理,具体方法为:
从软件历史开发数据中提取软件数据特征,包括代码结构信息、代码行数信息、数符信息、可读性信息、McCabe度量信息、Halstead度量信息以及缺陷信息;
将获得的数据特征进行归一化处理,公式为:
其中,xmax与xmin分别为某一数据特征信息列中的最大、最小值,x'为对每一个数据特征信息x作归一化后得到结果。
3.根据权利要求1所述的基于CNN-SVM的软件缺陷预测方法,其特征在于,步骤2,对归一化后的缺陷样本的数据特征进行SMOTE样本扩充,其中,SMOTE算法是一种合成少数类的随机过采样技术,算法步骤如下:
1)对于每一个缺陷样本x,基于欧式距离计算其到其他样本y中的距离并得到最近的K个样本,称K近邻样本,欧式距离公式如下,
其中,xi与yi分别为缺陷样本x和其他样本y中的第i个数据特征;
2)根据不平衡比率设置采样比例,确定采样倍率N,之后对每个缺陷样本随机选择若干K近邻样本xk;
3)根据每个选择出的K邻近样本xk,做如下计算获得新样本x':
x'=x+rand(0,1)×(x-xk)。
4.根据权利要求1所述的基于CNN-SVM的软件缺陷预测方法,其特征在于,步骤3,构建CNN-SVM模型,正常样本和扩充后的缺陷样本一起输入到CNN-SVM模型中,先由CNN网络进行卷积、下采样和扁平化处理,完成特征提取后,输入到SVM层进行缺陷预测,具体方法为:
(1)首先设置batch、kernel、stride、epoch这些参数,调整CNN网络结构,根据所设置的网络层数进行一次或多次卷积、下采样操作,完成特征提取;
由于软件缺陷特征并不具有二维结构,因此模型采用一维卷积进行计算,卷积层中使用卷积核进行特征提取和特征映射,卷积核大小设为2,步长设为1,使用softmax函数作为激励函数协助表达输入的复杂特征,卷积计算公式如下:
其中,f是缺陷特征序列,N为缺陷特征序列长度,g是卷积核序列,S是输出序列;
池化层采用maxpooling函数进行下采样操作完成特征选择和过滤,池化层滑动窗口大小设为2,通过滑动窗口对缺陷特征进行采样,将窗口内最大值作为输出,形成池化层缺陷特征输出序列;
然后通过全连接层对选择和过滤后的缺陷特征进行扁平化处理,并将扁平化后的缺陷特征输入SVM层;
(2)SVM层使用SVC分类算法,惩罚系数C取值86,kernel采用线性核函数linear,输出分类结果,得到初步的软件缺陷预测模型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京理工大学,未经南京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011430269.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种实现多服务器免密登录的方法及相关装置
- 下一篇:一种高效散热配电箱