应用于软件缺陷预测模型的量子粒子群优化BP算法

2019-08-12 06:15莫有印
现代电子技术 2019年15期
关键词:软件缺陷预测模型

莫有印

摘  要: 软件缺陷检测的主要目的是对程序模块中是否存在缺陷进行自动检测,以此有效促进软件的测试进程,使软件系统质量得到提高。针对传统软件缺陷预测模型的问题,提出在软件缺陷预测模型中使用粒子群优化BP算法。此模型使用粒子群优化算法对BP神经网络权值及阈值进行优化,通过交叉验证方法实现实验,并且同传统机器学习方法及BP神经网络等方法进行对比,实验结果表明提出的方法预测精准性比较高。

关键词: 软件缺陷; 预测模型; 量子粒子群; BP算法; 交叉验证; 预测精准性

中图分类号: TN911.1?34                        文献标识码: A                         文章編号: 1004?373X(2019)15?0127?04

Abstract: The main purpose of software defect detection is to automatically detect whether there are defects in the program module, which can promote the software testing process effectively and improve the quality of the software system. In allusion to the traditional software defect prediction model, the BP algorithm optimized by quantum particle swarm used in the software defect prediction model is proposed. This model uses particle swarm optimization algorithm to optimize the weights and thresholds of BP neural network. The experiment is carried out with cross?validation method. The method is compared with traditional machine learning method and BP neural network method. The experimental results show that the proposed method has high prediction accuracy.

Keywords: software defect; prediction model; quantum particle swarm optimization; BP algorithm; cross?validation; prediction accuracy

0  引  言

随着互联网时代的到来,市场对于软件产品质量要求也在持续提高,软件的可靠性、安全性与人们的财产及生命安全密切相关。所以,研究软件安全,保证每个服务软件都是安全且稳定的很有必要[1]。目前软件缺陷预测方法主要包括线性判别、支持向量机、人工神经网络、分类回归树等。但是传统预测模型都是通过软件缺陷相应数据实现统计分析,大部分都存在问题。比如,线性判别不满足非高斯分布样本降维,会出现拟合数据。所以,选择参数对于支持向量机尤为重要,但是无法使用良好的方法选择。分类回归树的泛化性能比较差,人工神经网络的收敛速度比较慢。目前,对于软件缺陷预测的方法比较多,它们都有优点和缺点,量子粒子群优化BP算法是目前常见且实用的方法[2]。综上,本文提出量子粒子群优化BP算法,并将其应用在软件缺陷预测模型中,结果表明改进算法不仅能够解决自身缺点,还能够实现BP网络的优化。

1  相应工作

1.1  改进粒子群算法

标准粒子群算法将复杂适应系统作为基础,属于具备随机性的搜索算法,其也是群集智能,通过众人合力解决问题。[w]属于标准粒子群算法较为重要并且能够改变的参数,对于算法改进具有重要的作用。在[w]增大时,速度就会变小,对全局搜索有利。在[w]减小时,速度会缩小,对局部搜索有利。如何对[w]的值进行控制,使其能够有效解决问题是研究过程中的热点[3]。相关研究提出线性递减惯性权重,也就是LDW,通过线性方式改变[w],从而提高算法的收敛性:

通过以上公式可知:在[t]值小时,[w]近似与[wmax]相等,[w]取值比较大时,对全局搜索是非常有利的;在[t]不断增加的过程中,[w]非线性减小,[w]值比较小时,能够保证算法良好的局部搜索能力,以此对全局搜索及局部搜索进行灵活调整[4]。

1.2  神经网络

目前神经网络种类比较多,其使用领域较为广泛,在较为常见的模型中,大部分都是利用BP神经网络实现,其属于根据误差反向传播,具有教师监督的典型多层前向学习算法。良好的学习规则是算法学习能力的基础,梯度下降法对BP神经网络的学习进行了规约,是调整降低网络总误差的有效方法[5]。一般,使用三层结构网络能够使优化设计问题得到解决,所以,大多使用三层神经网络,也就是输入、输出及隐含三层。在有信号输入时,并且信号正向传播,下层神经元状态会受到上层影响。如果在输出层没有得到期望输出,就会出现反向传播。在进行反向传播过程中的各层神经元值在不断调整,降低误差信号[6],整个过程为:

1) 网络初始化。每层都有各自的权系数[wij],随机给定比较小的非零数,实现各层阈值初始化,对学习速率和神经元激励函数进行确定。

2) 各层输出计算。首先,实现样本[X=(x1,x2,…,xn])的输入,实现[Y=(y1,y2,…,yn)]的输出,通过以下公式对神经元输出进行计算:

式中:[H]属于隐含层输出;[i]为节点数;[a]为阈值;[f]为激励函数;[wij]为输入层及隐含层的连接权值;[O]指的是输出层输出;[b]指的是阈值;[wki]指的是隐含层和输出层的连接权值。

3) 对网络输出[O]及期望输出[O1]的误差[e]进行计算:

4) 更新网络连接及阈值:

2  创建软件缺陷预测模型

2.1  软件缺陷预测模型

量子粒子群BP算法的软件缺陷预测模型流程图如图1所示。

图1  软件缺陷预测模型结构

软件缺陷预测模型的步骤为:

1) 得到软件缺陷数据集;

2) 以训练样本为基础,创建BP神经网络软件缺陷预测模型,使用sigmoid转移函数及三层网络结构;

3) 通过PSO算法对BP网络阈值及权值进行优化;

4) 使用测试样例对模型进行分类预测,假如预测结果满足终止条件,则停止优化,从而得出优化软件预测模型。否则,返回步骤3),继续优化模型。

基于终止条件,模型对精准率进行预测,对阈值及循环次数进行设置,并以此设置最大值[8]。

2.2  優化BP神经网络

要求BP神经网络误差梯度下降法的函数可导、可微,那么就使用量子粒子群实现BP神经网络阈值及权值的优化,从而实现BP算法缺陷的改进,使泛化性能得到提高。简单来说,也就是使用粒子群优化算法对每个粒子在不同方向中的速度及位置到BP神经网络阈值及权值的映射进行计算,所以粒子在群体及个体经验指导中能够寻找群体最优解,其主要步骤为:

1) 粒子群初始化。实现粒子群规模的设置,并且设置粒子位置、速度和向量维度。本文中的粒子规模设置为30,BP神经网络及向量维数的阈值、权值数量相等。另外,对每个粒子速度、位置和个体、群体的最优解进行初始化,以经验将惯量权重设置为0.3,设置加速常数为2,最大进化代数设置为[Tmax]。

2) 对BP神经网络实现粒子速度及位置分量的映射,根据公式对每个粒子适应度进行计算。

3) 根据以下方法对比适应度:

假如current

其中,current为粒子当前适应值;pbestfit为粒子个体最优值;gbestfit为种群全局最优适应值;pbestfit为粒子个体最优值;gbest为种群全局最优值;[xi]为粒子当前位置。

4) 以上述条件对粒子位置及速度进行更新,一般为了使粒子能够满足最佳全局寻优能力,实现速度阈值[Vmax]的设置。

5) 对比迭代次数和[Tmax],假如比[Tmax]要大,那么算法终止,并且目前gbest属于BP神经网络优化阈值及权值,否则,就跳转到步骤2),继续迭代。

2.3  特征属性预处理

实际项目中的所有训练和待测数据集都具有大量样本特征属性,导致软件缺陷预测模型具有较为沉重的计算负担。另外,因为分类中属性的贡献程度不同,无法实现属性的任意添加或者删除,所以选择Relief算法对问题进行解决。Relief算法专门为两种数据分类问题实现设计,能够对软件缺陷预测问题实现各特征属性排名、权重计算,在选择特征之后,还能够保证分类模型的精准度,而且具有较高的运行效率,算法如下:

样本实例空间设置为[T={T1,T2,…,Tn}],其中,[Ti={t1,t2,…,tm}]。

1) 赋值样本特征属性权值为0,并且使非数值属性数值化,之后根据最大最小归一化方法实现全部数值归一化处理。

2) 随机选择样本[Ti],并且从其同类型样本及非同类型样本中选择最近邻样本,表示为[Thit]及[Tmiss]。

3) 根据以下公式对属性[tk]的权值进行更新:

式中:[D(Ti,Tj,tk)]指的是[Ti]及[Tj]在属性[tk]中的欧氏距离;[max(D(tk))]指的是全部样本在属性[tk]中的最大欧氏距离。

4) 从步骤3)开始迭代此过程[n]次,最后对特征属性平均权重进行计算,根据此特征属性实现排序,之后和特征属性阈值对比,或者根据预设数量得出最终保留特征属性的集合,使其能够支持向量机模型训练。

3  实验分析

3.1  实验数据

本文中收录的数据源都是最近一年利用工作检测项目得出的,保证数据来源的可靠性。通过传统实验选择9个数据集,使其成为本文数据源,表1为实验数据。

表1  实验数据

3.2  实验评估指标

为了实现本文方法有效性的对比,使用对比通用指标,包括查准率、准确率及查全率,利用此指标对软件预测模型的预测水平进行分析。根据交叉矩阵定义三个指标,指标的定义如表2所示。

表2  指标定义

3.3  实验结果分析

使用量子粒子群实现BP算法的优化,对比使用传统粒子群实现BP算法优化,分别创建软件缺陷预测模型,实验结果详见表3。

表3  量子粒子群和传统粒子群算法性能对比

图2  准确率对比

图3  查准率对比

图4  查全率对比

实验结果表明,使用量子粒子群优化BP算法的软件缺陷预测模型比传统粒子群的能力要强,从而提高了预测能力。在对比精准率过程中,使用本文方法测试9组数据中的7组数据精准率都比较高。在对比查准率的过程中,测试9组数据有8组都能够提高查准率。查全率中本文方法比传统粒子群方法要强。

4  结  语

本文创建的软件缺陷预测模型在实现数据训练过程中能够缩小训练规模,主要是利用改进粒子群算法实现数据样本优化,使最优解映射实现分类规则集提取。在研究过程中充分考虑训练数据值变化范围,提高寻优复杂性,采用值映射方法使寻优空间大小降低。通过仿真实验表示,本文所提出的方法能够使缺陷预测精准率得到提高,还能够缩小预测时间。

参考文献

[1] 朱朝阳,陈相舟,王志宏,等.基于粒子群优化SVM的面向对象软件缺陷预测模型[J].计算机应用,2017,37(z2):60?64.

ZHU Chaoyang, CHEN Xiangzhou, WANG Zhihong, et al. Object?oriented software defect prediction model based on particle swarm optimization SVM [J]. Computer applications, 2017, 37(S2): 60?64.

[2] 张兰.改进量子粒子群优化算法的神经网络模型负荷预测[J].西北大学学报(自然科学版),2016,46(5):639?644.

ZHANG Lan. Neural network model load forecasting based on improved quantum particle swarm optimization algorithm [J]. Journal of Northwest University (Natural science edition), 2016, 46(5): 639?644.

[3] 程加堂,艾莉,熊燕.基于IQPSO?BP算法的煤矿瓦斯涌出量预测[J].矿业安全与环保,2016,43(4):38?41.

CHENG Jiatang, AI Li, XIONG Yan. Coal mine gas emission prediction based on IQPSO?BP algorithm [J]. Mining safety and environmental protection, 2016, 43(4): 38?41.

[4] 段志梅,程加堂.量子粒子群优化算法在异步电机转子机械故障诊断中的应用[J].电机与控制应用,2016,43(3):89?92.

DUAN Zhimei, CHENG Jiatang. Application of quantum particle swarm optimization in fault diagnosis of rotor machinery of asynchronous motor [J]. Motor and control applications, 2016, 43(3): 89?92.

[5] 张宏立,李瑞国,范文慧,等.基于量子粒子群的全参数连分式混沌时间序列预测[J].控制与决策,2016,31(1):52?58.

ZHANG Hongli, LI Ruiguo, FAN Wenhui, et al. Full?parameter continuous fractional chaotic time series prediction based on quantum particle swarm optimization [J]. Control and decision, 2016, 31(1): 52?58.

[6] 孙晨,李阳,李晓戈,等.基于布谷鸟算法优化BP神经网络模型的股价预测[J].计算机应用与软件,2016(2):276?279.

SUN Chen, LI Yang, LI Xiaoge, et al. Stock price prediction of BP neural network model based on cuckoo algorithm optimization [J]. Computer applications and software, 2016(2): 276?279.

[7] 张飞.改进PSO?ISVM算法的软件缺陷预测[J].计算机工程与应用,2016,52(11):17?21.

ZHANG Fei. Software defect prediction based on improved PSO?ISVM algorithm [J]. Computer engineering and applications, 2016, 52(11): 17?21.

[8] 杨照峰,时合生.基于改进QPSO的模糊C?均值聚类算法[J].现代电子技术,2014,37(7):118?120.

YANG Zhaofeng, SHI Hesheng. Fuzzy C?means clustering algorithm based on improved QPSO [J]. Modern electronics technique, 2014, 37(7): 118?120.

猜你喜欢
软件缺陷预测模型
基于测试的软件缺陷数据分析方法
基于源文件可疑度的静态软件缺陷检测方法研究
基于NPE-SVM的软件缺陷预测模型
开源程序的软件缺陷分布特征的量化分析研究
基于矩阵理论下的高校教师人员流动趋势预测
基于支持向量回归的台湾旅游短期客流量预测模型研究
基于神经网络的北京市房价预测研究
中国石化J分公司油气开发投资分析与预测模型研究
基于IOWHA法的物流需求组合改善与预测模型构建
基于预测模型加扰动控制的最大功率点跟踪研究