莫有印
摘 ?要: 軟件缺陷檢測(cè)的主要目的是對(duì)程序模塊中是否存在缺陷進(jìn)行自動(dòng)檢測(cè),以此有效促進(jìn)軟件的測(cè)試進(jìn)程,使軟件系統(tǒng)質(zhì)量得到提高。針對(duì)傳統(tǒng)軟件缺陷預(yù)測(cè)模型的問題,提出在軟件缺陷預(yù)測(cè)模型中使用粒子群優(yōu)化BP算法。此模型使用粒子群優(yōu)化算法對(duì)BP神經(jīng)網(wǎng)絡(luò)權(quán)值及閾值進(jìn)行優(yōu)化,通過交叉驗(yàn)證方法實(shí)現(xiàn)實(shí)驗(yàn),并且同傳統(tǒng)機(jī)器學(xué)習(xí)方法及BP神經(jīng)網(wǎng)絡(luò)等方法進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果表明提出的方法預(yù)測(cè)精準(zhǔn)性比較高。
關(guān)鍵詞: 軟件缺陷; 預(yù)測(cè)模型; 量子粒子群; BP算法; 交叉驗(yàn)證; 預(yù)測(cè)精準(zhǔn)性
中圖分類號(hào): TN911.1?34 ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ? ? ? 文章編號(hào): 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 ?引 ?言
隨著互聯(lián)網(wǎng)時(shí)代的到來,市場(chǎng)對(duì)于軟件產(chǎn)品質(zhì)量要求也在持續(xù)提高,軟件的可靠性、安全性與人們的財(cái)產(chǎn)及生命安全密切相關(guān)。所以,研究軟件安全,保證每個(gè)服務(wù)軟件都是安全且穩(wěn)定的很有必要[1]。目前軟件缺陷預(yù)測(cè)方法主要包括線性判別、支持向量機(jī)、人工神經(jīng)網(wǎng)絡(luò)、分類回歸樹等。但是傳統(tǒng)預(yù)測(cè)模型都是通過軟件缺陷相應(yīng)數(shù)據(jù)實(shí)現(xiàn)統(tǒng)計(jì)分析,大部分都存在問題。比如,線性判別不滿足非高斯分布樣本降維,會(huì)出現(xiàn)擬合數(shù)據(jù)。所以,選擇參數(shù)對(duì)于支持向量機(jī)尤為重要,但是無法使用良好的方法選擇。分類回歸樹的泛化性能比較差,人工神經(jīng)網(wǎng)絡(luò)的收斂速度比較慢。目前,對(duì)于軟件缺陷預(yù)測(cè)的方法比較多,它們都有優(yōu)點(diǎn)和缺點(diǎn),量子粒子群優(yōu)化BP算法是目前常見且實(shí)用的方法[2]。綜上,本文提出量子粒子群優(yōu)化BP算法,并將其應(yīng)用在軟件缺陷預(yù)測(cè)模型中,結(jié)果表明改進(jìn)算法不僅能夠解決自身缺點(diǎn),還能夠?qū)崿F(xiàn)BP網(wǎng)絡(luò)的優(yōu)化。
1 ?相應(yīng)工作
1.1 ?改進(jìn)粒子群算法
標(biāo)準(zhǔn)粒子群算法將復(fù)雜適應(yīng)系統(tǒng)作為基礎(chǔ),屬于具備隨機(jī)性的搜索算法,其也是群集智能,通過眾人合力解決問題。[w]屬于標(biāo)準(zhǔn)粒子群算法較為重要并且能夠改變的參數(shù),對(duì)于算法改進(jìn)具有重要的作用。在[w]增大時(shí),速度就會(huì)變小,對(duì)全局搜索有利。在[w]減小時(shí),速度會(huì)縮小,對(duì)局部搜索有利。如何對(duì)[w]的值進(jìn)行控制,使其能夠有效解決問題是研究過程中的熱點(diǎn)[3]。相關(guān)研究提出線性遞減慣性權(quán)重,也就是LDW,通過線性方式改變[w],從而提高算法的收斂性:
通過以上公式可知:在[t]值小時(shí),[w]近似與[wmax]相等,[w]取值比較大時(shí),對(duì)全局搜索是非常有利的;在[t]不斷增加的過程中,[w]非線性減小,[w]值比較小時(shí),能夠保證算法良好的局部搜索能力,以此對(duì)全局搜索及局部搜索進(jìn)行靈活調(diào)整[4]。
1.2 ?神經(jīng)網(wǎng)絡(luò)
目前神經(jīng)網(wǎng)絡(luò)種類比較多,其使用領(lǐng)域較為廣泛,在較為常見的模型中,大部分都是利用BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),其屬于根據(jù)誤差反向傳播,具有教師監(jiān)督的典型多層前向?qū)W習(xí)算法。良好的學(xué)習(xí)規(guī)則是算法學(xué)習(xí)能力的基礎(chǔ),梯度下降法對(duì)BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)進(jìn)行了規(guī)約,是調(diào)整降低網(wǎng)絡(luò)總誤差的有效方法[5]。一般,使用三層結(jié)構(gòu)網(wǎng)絡(luò)能夠使優(yōu)化設(shè)計(jì)問題得到解決,所以,大多使用三層神經(jīng)網(wǎng)絡(luò),也就是輸入、輸出及隱含三層。在有信號(hào)輸入時(shí),并且信號(hào)正向傳播,下層神經(jīng)元狀態(tài)會(huì)受到上層影響。如果在輸出層沒有得到期望輸出,就會(huì)出現(xiàn)反向傳播。在進(jìn)行反向傳播過程中的各層神經(jīng)元值在不斷調(diào)整,降低誤差信號(hào)[6],整個(gè)過程為:
1) 網(wǎng)絡(luò)初始化。每層都有各自的權(quán)系數(shù)[wij],隨機(jī)給定比較小的非零數(shù),實(shí)現(xiàn)各層閾值初始化,對(duì)學(xué)習(xí)速率和神經(jīng)元激勵(lì)函數(shù)進(jìn)行確定。
2) 各層輸出計(jì)算。首先,實(shí)現(xiàn)樣本[X=(x1,x2,…,xn])的輸入,實(shí)現(xiàn)[Y=(y1,y2,…,yn)]的輸出,通過以下公式對(duì)神經(jīng)元輸出進(jìn)行計(jì)算:
式中:[H]屬于隱含層輸出;[i]為節(jié)點(diǎn)數(shù);[a]為閾值;[f]為激勵(lì)函數(shù);[wij]為輸入層及隱含層的連接權(quán)值;[O]指的是輸出層輸出;[b]指的是閾值;[wki]指的是隱含層和輸出層的連接權(quán)值。
3) 對(duì)網(wǎng)絡(luò)輸出[O]及期望輸出[O1]的誤差[e]進(jìn)行計(jì)算:
4) 更新網(wǎng)絡(luò)連接及閾值:
2 ?創(chuàng)建軟件缺陷預(yù)測(cè)模型
2.1 ?軟件缺陷預(yù)測(cè)模型
量子粒子群BP算法的軟件缺陷預(yù)測(cè)模型流程圖如圖1所示。
軟件缺陷預(yù)測(cè)模型的步驟為:
1) 得到軟件缺陷數(shù)據(jù)集;
2) 以訓(xùn)練樣本為基礎(chǔ),創(chuàng)建BP神經(jīng)網(wǎng)絡(luò)軟件缺陷預(yù)測(cè)模型,使用sigmoid轉(zhuǎn)移函數(shù)及三層網(wǎng)絡(luò)結(jié)構(gòu);
3) 通過PSO算法對(duì)BP網(wǎng)絡(luò)閾值及權(quán)值進(jìn)行優(yōu)化;
4) 使用測(cè)試樣例對(duì)模型進(jìn)行分類預(yù)測(cè),假如預(yù)測(cè)結(jié)果滿足終止條件,則停止優(yōu)化,從而得出優(yōu)化軟件預(yù)測(cè)模型。否則,返回步驟3),繼續(xù)優(yōu)化模型。
基于終止條件,模型對(duì)精準(zhǔn)率進(jìn)行預(yù)測(cè),對(duì)閾值及循環(huán)次數(shù)進(jìn)行設(shè)置,并以此設(shè)置最大值[8]。
2.2 ?優(yōu)化BP神經(jīng)網(wǎng)絡(luò)
要求BP神經(jīng)網(wǎng)絡(luò)誤差梯度下降法的函數(shù)可導(dǎo)、可微,那么就使用量子粒子群實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)閾值及權(quán)值的優(yōu)化,從而實(shí)現(xiàn)BP算法缺陷的改進(jìn),使泛化性能得到提高。簡(jiǎn)單來說,也就是使用粒子群優(yōu)化算法對(duì)每個(gè)粒子在不同方向中的速度及位置到BP神經(jīng)網(wǎng)絡(luò)閾值及權(quán)值的映射進(jìn)行計(jì)算,所以粒子在群體及個(gè)體經(jīng)驗(yàn)指導(dǎo)中能夠?qū)ふ胰后w最優(yōu)解,其主要步驟為:
1) 粒子群初始化。實(shí)現(xiàn)粒子群規(guī)模的設(shè)置,并且設(shè)置粒子位置、速度和向量維度。本文中的粒子規(guī)模設(shè)置為30,BP神經(jīng)網(wǎng)絡(luò)及向量維數(shù)的閾值、權(quán)值數(shù)量相等。另外,對(duì)每個(gè)粒子速度、位置和個(gè)體、群體的最優(yōu)解進(jìn)行初始化,以經(jīng)驗(yàn)將慣量權(quán)重設(shè)置為0.3,設(shè)置加速常數(shù)為2,最大進(jìn)化代數(shù)設(shè)置為[Tmax]。
2) 對(duì)BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)粒子速度及位置分量的映射,根據(jù)公式對(duì)每個(gè)粒子適應(yīng)度進(jìn)行計(jì)算。
3) 根據(jù)以下方法對(duì)比適應(yīng)度:
假如current 其中,current為粒子當(dāng)前適應(yīng)值;pbestfit為粒子個(gè)體最優(yōu)值;gbestfit為種群全局最優(yōu)適應(yīng)值;pbestfit為粒子個(gè)體最優(yōu)值;gbest為種群全局最優(yōu)值;[xi]為粒子當(dāng)前位置。 4) 以上述條件對(duì)粒子位置及速度進(jìn)行更新,一般為了使粒子能夠滿足最佳全局尋優(yōu)能力,實(shí)現(xiàn)速度閾值[Vmax]的設(shè)置。 5) 對(duì)比迭代次數(shù)和[Tmax],假如比[Tmax]要大,那么算法終止,并且目前gbest屬于BP神經(jīng)網(wǎng)絡(luò)優(yōu)化閾值及權(quán)值,否則,就跳轉(zhuǎn)到步驟2),繼續(xù)迭代。 2.3 ?特征屬性預(yù)處理 實(shí)際項(xiàng)目中的所有訓(xùn)練和待測(cè)數(shù)據(jù)集都具有大量樣本特征屬性,導(dǎo)致軟件缺陷預(yù)測(cè)模型具有較為沉重的計(jì)算負(fù)擔(dān)。另外,因?yàn)榉诸愔袑傩缘呢暙I(xiàn)程度不同,無法實(shí)現(xiàn)屬性的任意添加或者刪除,所以選擇Relief算法對(duì)問題進(jìn)行解決。Relief算法專門為兩種數(shù)據(jù)分類問題實(shí)現(xiàn)設(shè)計(jì),能夠?qū)浖毕蓊A(yù)測(cè)問題實(shí)現(xiàn)各特征屬性排名、權(quán)重計(jì)算,在選擇特征之后,還能夠保證分類模型的精準(zhǔn)度,而且具有較高的運(yùn)行效率,算法如下: 樣本實(shí)例空間設(shè)置為[T={T1,T2,…,Tn}],其中,[Ti={t1,t2,…,tm}]。 1) 賦值樣本特征屬性權(quán)值為0,并且使非數(shù)值屬性數(shù)值化,之后根據(jù)最大最小歸一化方法實(shí)現(xiàn)全部數(shù)值歸一化處理。 2) 隨機(jī)選擇樣本[Ti],并且從其同類型樣本及非同類型樣本中選擇最近鄰樣本,表示為[Thit]及[Tmiss]。 3) 根據(jù)以下公式對(duì)屬性[tk]的權(quán)值進(jìn)行更新: 式中:[D(Ti,Tj,tk)]指的是[Ti]及[Tj]在屬性[tk]中的歐氏距離;[max(D(tk))]指的是全部樣本在屬性[tk]中的最大歐氏距離。 4) 從步驟3)開始迭代此過程[n]次,最后對(duì)特征屬性平均權(quán)重進(jìn)行計(jì)算,根據(jù)此特征屬性實(shí)現(xiàn)排序,之后和特征屬性閾值對(duì)比,或者根據(jù)預(yù)設(shè)數(shù)量得出最終保留特征屬性的集合,使其能夠支持向量機(jī)模型訓(xùn)練。 3 ?實(shí)驗(yàn)分析 3.1 ?實(shí)驗(yàn)數(shù)據(jù) 本文中收錄的數(shù)據(jù)源都是最近一年利用工作檢測(cè)項(xiàng)目得出的,保證數(shù)據(jù)來源的可靠性。通過傳統(tǒng)實(shí)驗(yàn)選擇9個(gè)數(shù)據(jù)集,使其成為本文數(shù)據(jù)源,表1為實(shí)驗(yàn)數(shù)據(jù)。表1 ?實(shí)驗(yàn)數(shù)據(jù)
3.2 ?實(shí)驗(yàn)評(píng)估指標(biāo)
為了實(shí)現(xiàn)本文方法有效性的對(duì)比,使用對(duì)比通用指標(biāo),包括查準(zhǔn)率、準(zhǔn)確率及查全率,利用此指標(biāo)對(duì)軟件預(yù)測(cè)模型的預(yù)測(cè)水平進(jìn)行分析。根據(jù)交叉矩陣定義三個(gè)指標(biāo),指標(biāo)的定義如表2所示。
3.3 ?實(shí)驗(yàn)結(jié)果分析
使用量子粒子群實(shí)現(xiàn)BP算法的優(yōu)化,對(duì)比使用傳統(tǒng)粒子群實(shí)現(xiàn)BP算法優(yōu)化,分別創(chuàng)建軟件缺陷預(yù)測(cè)模型,實(shí)驗(yàn)結(jié)果詳見表3。
實(shí)驗(yàn)結(jié)果表明,使用量子粒子群優(yōu)化BP算法的軟件缺陷預(yù)測(cè)模型比傳統(tǒng)粒子群的能力要強(qiáng),從而提高了預(yù)測(cè)能力。在對(duì)比精準(zhǔn)率過程中,使用本文方法測(cè)試9組數(shù)據(jù)中的7組數(shù)據(jù)精準(zhǔn)率都比較高。在對(duì)比查準(zhǔn)率的過程中,測(cè)試9組數(shù)據(jù)有8組都能夠提高查準(zhǔn)率。查全率中本文方法比傳統(tǒng)粒子群方法要強(qiáng)。
4 ?結(jié) ?語(yǔ)
本文創(chuàng)建的軟件缺陷預(yù)測(cè)模型在實(shí)現(xiàn)數(shù)據(jù)訓(xùn)練過程中能夠縮小訓(xùn)練規(guī)模,主要是利用改進(jìn)粒子群算法實(shí)現(xiàn)數(shù)據(jù)樣本優(yōu)化,使最優(yōu)解映射實(shí)現(xiàn)分類規(guī)則集提取。在研究過程中充分考慮訓(xùn)練數(shù)據(jù)值變化范圍,提高尋優(yōu)復(fù)雜性,采用值映射方法使尋優(yōu)空間大小降低。通過仿真實(shí)驗(yàn)表示,本文所提出的方法能夠使缺陷預(yù)測(cè)精準(zhǔn)率得到提高,還能夠縮小預(yù)測(cè)時(shí)間。
參考文獻(xiàn)
[1] 朱朝陽(yáng),陳相舟,王志宏,等.基于粒子群優(yōu)化SVM的面向?qū)ο筌浖毕蓊A(yù)測(cè)模型[J].計(jì)算機(jī)應(yīng)用,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] 張?zhí)m.改進(jìn)量子粒子群優(yōu)化算法的神經(jīng)網(wǎng)絡(luò)模型負(fù)荷預(yù)測(cè)[J].西北大學(xué)學(xué)報(bào)(自然科學(xué)版),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算法的煤礦瓦斯涌出量預(yù)測(cè)[J].礦業(yè)安全與環(huán)保,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] 段志梅,程加堂.量子粒子群優(yōu)化算法在異步電機(jī)轉(zhuǎn)子機(jī)械故障診斷中的應(yīng)用[J].電機(jī)與控制應(yīng)用,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] 張宏立,李瑞國(guó),范文慧,等.基于量子粒子群的全參數(shù)連分式混沌時(shí)間序列預(yù)測(cè)[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] 孫晨,李陽(yáng),李曉戈,等.基于布谷鳥算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)模型的股價(jià)預(yù)測(cè)[J].計(jì)算機(jī)應(yīng)用與軟件,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] 張飛.改進(jìn)PSO?ISVM算法的軟件缺陷預(yù)測(cè)[J].計(jì)算機(jī)工程與應(yīng)用,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] 楊照峰,時(shí)合生.基于改進(jìn)QPSO的模糊C?均值聚類算法[J].現(xiàn)代電子技術(shù),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.