国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于BPSO降維的軟件故障傾向模塊DNN預(yù)測

2018-08-17 03:01:12劉繼華王豐錦
計算機(jī)工程與設(shè)計 2018年8期
關(guān)鍵詞:傾向性降維粒子

劉繼華,王豐錦,孔 潔

(1.呂梁學(xué)院 計算機(jī)科學(xué)與技術(shù)系,山西 呂梁 033000;2.北京航空航天大學(xué) 計算機(jī)學(xué)院,北京 100191; 3.清華同方股份有限公司,北京 100083;4.北京電子科技技術(shù)職業(yè)學(xué)院 電信工程學(xué)院,北京 100176)

0 引 言

早期的軟件故障傾向性[1-3]預(yù)測方法是基于統(tǒng)計的,當(dāng)前引入了機(jī)器學(xué)習(xí)技術(shù),包括數(shù)據(jù)挖掘、樸素貝葉斯算法、支持向量機(jī)、深度神經(jīng)網(wǎng)絡(luò)和模糊邏輯等。雖然使用這些技術(shù)對軟件故障進(jìn)行了研究,但對故障數(shù)據(jù)集進(jìn)行處理時,缺少對數(shù)據(jù)的降維預(yù)處理,導(dǎo)致算法的計算復(fù)雜性過高[4,5]。軟件工程中最常用的降維方法是主成分分析(PCA)方法。例如,文獻(xiàn)[6]在利用PCA方法對軟件故障數(shù)據(jù)進(jìn)行降維基礎(chǔ)上,設(shè)計了一種兩階段的故障預(yù)測技術(shù)等。然而,PCA的一個缺點是,與原始輸入變量相反,派生維度可能沒有直觀的解釋。另一種常用降維方法是偏最小二乘法(PLS)。文獻(xiàn)[7]利用最小二乘算法對軟件故障數(shù)據(jù)進(jìn)行降維,并提出一種基于時序的故障檢測與故障排除的軟件可靠性模型。文獻(xiàn)[8]利用最小二乘算法對軟件故障數(shù)據(jù)進(jìn)行降維,并對復(fù)雜軟件系統(tǒng)故障分布單元進(jìn)行統(tǒng)計分析等。PLS在降維領(lǐng)域得到了廣泛應(yīng)用,但PLS的實現(xiàn)過程是基于非線性迭代的,通常需對原始樣本數(shù)據(jù)進(jìn)行假設(shè)或轉(zhuǎn)換,以便使用傳統(tǒng)的估計方法。在實際情況下,原始樣本數(shù)據(jù)可能受到操作環(huán)境、測試策略和資源分配等多方面因素的影響。因此,在實際問題中很難滿足這些假設(shè)。

與傳統(tǒng)算法相比,本文創(chuàng)新點在于:①對于軟件故障數(shù)據(jù),引入了粒子群數(shù)據(jù)降維算法,提高數(shù)據(jù)的執(zhí)行效率,并且受到測試過程影響更?。虎跒樘岣邤?shù)據(jù)降維效果,提出一種束縛態(tài)粒子群算法,取代傳統(tǒng)的粒子群算法,利用波函數(shù)代替原始粒子群算法的位置和速度,提高了數(shù)據(jù)降維效果。

1 模型方法與軟件指標(biāo)

1.1 模型方法

DNN[9]是基于在輸出和輸入兩級網(wǎng)絡(luò)層之間加入多個隱藏的網(wǎng)絡(luò)學(xué)習(xí)單元而形成的學(xué)習(xí)算法結(jié)構(gòu)。隱層在節(jié)點規(guī)模上要少于編碼器輸入層和解碼器輸出層。為對DNNs網(wǎng)絡(luò)進(jìn)行訓(xùn)練,引入二階優(yōu)化方法,從而實現(xiàn)深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練。深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1(a)所示。

圖1 DNN結(jié)構(gòu)和算法框架

本文使用的是雙隱層網(wǎng)絡(luò)的深度神經(jīng)網(wǎng)絡(luò)。將場理論引入到傳統(tǒng)粒子群優(yōu)化算法,該算法是可實現(xiàn)全局收斂性保證的搜索方法。因此,利用BPSO算法進(jìn)行算法降維處理。采用混合深度神經(jīng)網(wǎng)絡(luò)和粒子群算法,本文提出了一種有效的軟件缺陷預(yù)測方法。預(yù)測方法如圖1(b)算法框架所示。

1.2 軟件度量指標(biāo)

目前的研究大多使用軟件指標(biāo)來識別故障傾向性模塊,研究表明軟件指標(biāo)對于預(yù)測故障傾向類是非常有用的。在本文中,使用的指標(biāo)是McCabe,Butler,Halstead準(zhǔn)則等[10,11]。選擇的指標(biāo)有代碼行,循環(huán)復(fù)雜度,基本復(fù)雜度、設(shè)計復(fù)雜度等。表1列出了這些指標(biāo)的描述。在本文的實驗中,每個軟件模塊由21個指標(biāo)軟件故障進(jìn)行傾向性表示。

表1 選取的指標(biāo)

1.3 預(yù)處理過程

對于DNN算法,給定一個數(shù)據(jù)集(x(i),y(i))(i=1,2,…,q),其中x(i)∈Rd,是軟件指標(biāo)值的向量,它量化了第i類的指標(biāo)值,q是數(shù)據(jù)樣本的總數(shù)。輸出神經(jīng)元的第i類期望的輸出值是y(i),其值為“1”對應(yīng)的斷點傾向和“0”對應(yīng)的非斷點傾向性。在訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)時,將每個輸入歸一化化為相同的區(qū)間數(shù)。這有助于改善培訓(xùn)過程的行為,確保每個初始輸入同等重要。我們注意到,軟件指標(biāo)的上界通常在其取值范圍內(nèi)是無限的。為了規(guī)范化,需要獲得軟件指標(biāo)值范圍的上下界。對于特定的數(shù)據(jù)集和軟件指標(biāo),我們可以根據(jù)數(shù)據(jù)集獲得每個指標(biāo)的值。在這些數(shù)據(jù)集中,給出了每個指標(biāo)的值,因此很容易獲得最大值和最小值。

在本文中,對于每一個軟件指標(biāo),令min(x(j))和max(x(j))分別為數(shù)據(jù)集的最小和最大軟件指標(biāo)值。然后可得尺度參數(shù)X(j)為

(1)

因此,每個記錄的值被映射到封閉的區(qū)間0,1。利用(X(i),y(i))(i=1,2,…,q)規(guī)范化數(shù)據(jù)集,歸一化指標(biāo)向量為X(i)∈Rd。

2 基于BPSO的降維處理

2.1 粒子群優(yōu)化算法

粒子群算法每個粒子根據(jù)自己和鄰居節(jié)點的飛行經(jīng)驗,不時地調(diào)整搜索空間中的位置。它是以隨機(jī)方式進(jìn)行種群的初始化,該算法搜索滿足某些性能的最優(yōu)解。潛在的解決方案稱為粒子,通過多維搜索空間飛行,如圖2所示。

圖2 粒子尋優(yōu)過程

每個粒子i都有一個位置向量表示的位置Xi。用矢量表示的每個粒子的速度Vi。給出了質(zhì)點速度和位置方程形式

Vi(t+1)=wVi(t)+c1r1(Pi,best(t)-Xi(t))+
c2r2(Pglobal(t)-Xi(t))

(2)

(3)

其中,t是當(dāng)前迭代次數(shù),w是慣性權(quán)重,c1和c2是正常數(shù),r1和r2是區(qū)間0,1內(nèi)均勻分布的隨機(jī)數(shù)。Pi, best和Pglobal分別是當(dāng)期訪問粒子i的最佳位置和所有粒子位置值的最佳值,其中

(4)

式(2)中,w、c1和c2是預(yù)定義的。在迭代次數(shù)為t時,粒子i的成本值如下

(5)

(6)

當(dāng)粒子找到比先前最佳位置更好的位置時,它將被存儲在存儲器中。該算法將持續(xù)進(jìn)行直到找到一個滿意解決方案或迭代最大數(shù)量可滿足。

2.2 束縛態(tài)粒子群算法

(7)

其中,參數(shù)α具有均勻特性,為膨脹收縮參數(shù),ui、s是處于區(qū)間0,1范圍內(nèi)的均勻隨機(jī)數(shù),且有

pi(t)=φi(t)·Pi,best(t)+(1-φi(t))·Pglobal(t)

(8)

(9)

其中,φi是區(qū)間0,1內(nèi)的均勻分布的隨機(jī)數(shù),Q是所有粒子的個數(shù),mi, best定義為種群中所有粒子的最佳位置的平均值。粒子群算法的終止準(zhǔn)則是,如果Ct+1和C(t)之間的絕對差異連續(xù)10次小于δ,然后停止算法;否則直到最大迭代次數(shù)Gmax可滿足,其中δ是訓(xùn)練閾值。BPSO算法的流程如下所示:

算法1:BPSO算法

初始化所有粒子的位置和Pi,best位置。

Do

利用式(9)計算粒子i的mi, best,i=1,2,…,Q;

選擇合適的值α

For 粒子i=1:Q

根據(jù)方程(5)計算粒子i的成本值;

根據(jù)方程(6)更新Pi,best;

利用以下步驟更新Pglobal;

IfC(Pi,best(t))

Pglobal(t)=Pi,best(t);

Else

Pglobal(t)=Pi,best(t-1);

Endif

Endfor

For 維度1:ddo

φ=rand0,1;

u=rand0,1;

Ifrand0,1≥0.5 do

根據(jù)方程(7)上式更新粒子位置;

Else

根據(jù)方程(7)下式更新粒子位置;

Endfor

直到滿足終止條件

2.3 降維方法

假設(shè)D=(S,M)是一個帶有q樣本和d指標(biāo)的數(shù)據(jù)集,其中M={m1,m2,…,md},S={S1,S2,…,Sq}分別是指標(biāo)和樣本集。C={c1,c2,…,ct}指的是類型集。為實現(xiàn)算法降維,我們按照以下操作將解X編碼成二進(jìn)制字符串

f(rand

(10)

其中,S·是sigmoid函數(shù),形式為

S(x)=1/(1+e-x)

(11)

在所提降維方法中,粒子i的位置用二進(jìn)制(0或1)字符串表示,例如Xi=Xi1,Xi2,…,Xid。1代表一個選定的指標(biāo),而0則表示非選定的指標(biāo)。在BPSO算法中,一旦確定了最終解決方案Pglobal,最佳粒子的指標(biāo)Pglobal可以跟蹤其位置。我們讓選定的指標(biāo)集為M1?M,則所選擇的指標(biāo)值數(shù)量是l

3 軟件故障傾向性預(yù)測方法

3.1 算法步驟

對于所有的DNN模型,將其所有的輸入數(shù)據(jù)和預(yù)期的輸出進(jìn)行歸一化處理,使其值位于區(qū)間[0,1]。在軟件故障傾向性預(yù)測方法中,深度神經(jīng)網(wǎng)絡(luò)可實現(xiàn)從數(shù)據(jù)空間到“1”或“0”二進(jìn)制數(shù)據(jù)空間的映射??稍O(shè)計軟件故障傾向性預(yù)測算法如下:

步驟1 對輸入指標(biāo)x進(jìn)行歸一化處理,得到歸一化的指標(biāo)X。其取值位于區(qū)間0,1。

步驟2 將預(yù)處理的數(shù)據(jù)分為兩個子集:按適當(dāng)比例劃分成訓(xùn)練和測試子集。

步驟3 在訓(xùn)練子集上建立深度神經(jīng)網(wǎng)絡(luò)模型,得到訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)。

步驟4 基于BPSO算法從M得到一個降維子集M1,可獲得降維輸入數(shù)據(jù)集X′和簡化DNN模型。

步驟5 在訓(xùn)練子集上建立簡化的DNN模型,得到新的深度神經(jīng)網(wǎng)絡(luò)。

步驟6 在測試子集中使用新的深度神經(jīng)網(wǎng)絡(luò)預(yù)測模塊(傾向性故障或非傾向性故障)。

步驟7 為了分析軟件故障傾向性預(yù)測方法的性能,計算預(yù)測性能指標(biāo)值并獲得性能評價。

3.2 性能評價指標(biāo)

對于兩類問題的預(yù)測性能,通常利用混淆矩陣中的數(shù)據(jù)進(jìn)行評估,見表2。

表2 混淆矩陣

表2中,fij表示實際類i被預(yù)測為類j的數(shù)量,其中i,j∈{0,1}。預(yù)測性能指標(biāo)選取如下:定量評價預(yù)測方法的敏感性和特異性。這些指標(biāo)指標(biāo)可基于混淆矩陣進(jìn)行計算,計算形式分別為

(12)

(13)

其中,敏感性稱為故障檢測率。它被定義為正確預(yù)測為故障傾向的類數(shù)與實際故障傾向類總數(shù)的比值。特異性也稱為正確性。它被定義為正確預(yù)測非故障傾向的類數(shù)與非故障傾向預(yù)測類總數(shù)之比。

4 實驗分析

4.1 測試數(shù)據(jù)集

在這項研究中使用的數(shù)據(jù)集是國家航空和航天局(NASA)的4個關(guān)鍵軟件項目[12],這些是美國宇航局IV和V設(shè)施指標(biāo)數(shù)據(jù)程序,隸屬于公共可訪問的儲存庫。其中,PC1和JM1兩個數(shù)據(jù)集是利用C程序語言編寫的軟件項目,一個模塊是一個功能。其余兩個數(shù)據(jù)集KC1和KC3 是利用C++和java面向?qū)ο蟮恼Z言編寫的軟件項目,其模塊對應(yīng)一種算法。每個數(shù)據(jù)集都包含其軟件指標(biāo)和相關(guān)的獨立布爾變量:故障傾向(模塊是否有故障傾向)。根據(jù)標(biāo)準(zhǔn)McCabes規(guī)則,對于4個選取的數(shù)據(jù)集,v(G)>10的模塊識別為故障傾向。表3給出了這些數(shù)據(jù)集的一些主要特性。

表3 數(shù)據(jù)集的特性

4.2 參數(shù)設(shè)置

在本文中,需要確定幾個參數(shù):

DNN的網(wǎng)絡(luò)輸出利用1、2表示兩個類別,DNN輸出選擇最常用的方法是贏家通吃策略。DNN的邏輯函數(shù)選取sigmoid函數(shù),計算形式為

f(x)=1/(1+exp(-x))

(14)

(2)PSO和BPSO算法:在這項研究中,需要用戶指定的PSO和BPSO算法的參數(shù),見表4設(shè)定數(shù)據(jù)。

表4 PSO和BPSO算法參數(shù)

表4中,令參數(shù)w=0.45和c1=c2=2,α=0.55。支持向量機(jī):正則化參數(shù)設(shè)置為1,核函數(shù)的帶寬設(shè)置為0.5。

根據(jù)上面的定理,只要α滿足不等式α

4.3 降維和預(yù)測結(jié)果分析

在實驗中,訓(xùn)練集和測試集按3∶2的比例進(jìn)行劃分?;谏鲜鰠?shù),利用MATLAB 7.0深度神經(jīng)網(wǎng)絡(luò)工具箱可以得到一個訓(xùn)練好的深度神經(jīng)網(wǎng)絡(luò)。表5給出了在上述4個數(shù)據(jù)集上,PSO和BPSO算法獨立運行40次的實驗結(jié)果均值。

根據(jù)表5所示結(jié)果,基于PSO的維度降低方法,其選擇指標(biāo)的平均數(shù)量要多于BPSO算法。所選指標(biāo)的算法可以更有效地簡化網(wǎng)絡(luò)架構(gòu)。基于BPSO算法的指標(biāo)選擇結(jié)果見表6。

表5 不同數(shù)據(jù)集的PSO和BPSO算法性能

表6 基于BPSO算法的指標(biāo)選取

根據(jù)表6結(jié)果,所選取的指標(biāo)用于數(shù)據(jù)集(X′(i),y(i))的維度降低,其中i=1,2,…,q,X′(i)∈Rl,l=6,4,7和3??傻煤喕疍NN模型。

在訓(xùn)練子集上訓(xùn)練簡化深度神經(jīng)網(wǎng)絡(luò)后,可以得到新的深度神經(jīng)網(wǎng)絡(luò)。我們用MedCalcV11.2.0軟件獲得ROC曲線的AUC值。如圖3所示,在4個數(shù)據(jù)集的測試子集上,獨立運行30次獲得的新DNN的AUC值最大的ROC曲線。

圖3 原圖2~5的曲線合成

根據(jù)圖3,新DNN的所有AUC值均大于0.77,表明新深度神經(jīng)網(wǎng)絡(luò)可預(yù)測軟件故障傾向模塊。由于采取的是隨機(jī)劃分訓(xùn)練集和測試集,每次運行時新DNN預(yù)測結(jié)果不一定相同。為了評估新深度神經(jīng)網(wǎng)絡(luò)的預(yù)測能力和可靠性,在給定隨機(jī)數(shù)后,在每次測試集上運行30次。圖4(a)~圖4(d)所示,分別為在PC1,JM1,KC1和KC3數(shù)據(jù)集上的AUC值分布情況。

圖4 4組數(shù)據(jù)集的AUC值分布

根據(jù)圖4(a)~圖4(d)所示結(jié)果,我們可以觀察到PC1,JM1、KCl、和KC3測試集上的AUC值分布情況,AUC值大于0.7的累計值分別為93%、70%、83.33%和100%。因此,預(yù)測結(jié)果穩(wěn)定可靠。

4.4 算法性能對比

利用4個數(shù)據(jù)集預(yù)測軟件故障傾向性的實驗結(jié)果很多,分別采用不同的預(yù)測方法。為了比較算法的預(yù)測性能,這里在表7中列出所提算法的AUC值及其AUC均值。

表7 4種數(shù)據(jù)集的預(yù)測結(jié)果對比

根據(jù)表7結(jié)果可知,在選取的預(yù)測算法中,BPSO+DNN算法在JM1、KC1和KC3上的AUC值最大,這表明該算法相對于其它算法具有更加優(yōu)異的預(yù)測性能。對于數(shù)據(jù)集PC1,MLP-2,LS-SVM,C4.5和RndFor算法的AUC值均超過了0.90,其預(yù)測性能要優(yōu)于BPSO+DNN算法,但是整體相差不大。這表明所提算法在性能上要優(yōu)于選取的對比算法。具體分析如下:

(1)所提BPSO+DNN算法的AUC值均超過了0.776,這表明,利用所提BPSO+DNN算法可實現(xiàn)對所有數(shù)據(jù)集軟件故障傾向的有效預(yù)測。此外,軟件度量之間存在很強(qiáng)的相關(guān)性,并且存在適當(dāng)?shù)能浖燃?,這也表明刪除冗余度量有助于提高軟件故障傾向模型的性能。

(2)對比DNN和BPSO+DNN兩種算法,BPSO+DNN算法的AUC均值要始終高于DNN算法,這表明利用BPSO算法可以提高深度神經(jīng)網(wǎng)絡(luò)的預(yù)測性能,去除冗余的度量,因此基于BPSO的度量選擇是很有必要的。

(3)通過對比PSO+DNN和BPSO+DNN算法,BPSO+DNN算法的AUC均值要明顯優(yōu)于PSO+DNN算法,這表明PSO和BPSO算法均可實現(xiàn)度量指標(biāo)的有效選擇,但是BPSO算法要明顯優(yōu)于PSO算法。同時,根據(jù)表5結(jié)果可知,BPSO算法選取的指標(biāo)數(shù)量,要少于PSO算法,這表明BPSO算法相對于PSO算法更加具有計算效率。

(4)通過對比BPSO+DNN算法和BPSO+SVM算法,BPSO+DNN算法在PC1、JM1和KC1數(shù)據(jù)集上的AUC均值要明顯優(yōu)于BPSO+SVM算法,而在KC3數(shù)據(jù)集上的AUC均值兩種算法相同。這表明了SVM算法在軟件故障傾向預(yù)測上的有效性,也表明了BPSO+DNN算法的性能優(yōu)勢。

4.5 算法計算復(fù)雜度分析

表8給出DNN、PSO+DNN和BPSO+DNN這3種算法在4個數(shù)據(jù)集上的平均計算時間,每種算法獨立運行20次取均值。

表8 平均計算時間對比

根據(jù)表8計算結(jié)果可知,如果沒有采取降維措施,而是直接應(yīng)用軟件缺陷預(yù)測,時間成本要高得多,這表明在降低運行時的降維效果非常顯著。此外,BPSO算法的性能比PSO算法的降維效果更優(yōu),可實現(xiàn)計算時間的最大降低。

5 結(jié)束語

本文研究了混合深度神經(jīng)網(wǎng)絡(luò)和BPSO算法的應(yīng)用開發(fā)軟件缺陷預(yù)測方法。所提出的預(yù)測方法能夠較為準(zhǔn)確識別故障傾向性。所提出的預(yù)測方法的主要優(yōu)點如下:

(1)在本文中,BPSO算法是用于降低度量空間的維數(shù),而深度神經(jīng)網(wǎng)絡(luò)用于預(yù)測軟件模塊的故障傾向。并驗證了BPSO+DNN算法性能的有效性。

(2)所提降維算法實現(xiàn)簡單,這是因為粒子群算法有3個控制參數(shù),而BPSO算法只有一個,因此更容易實現(xiàn)算法的控制。實驗結(jié)果表明,它是可能的,基于BPSO算法的降維技術(shù)可以簡化網(wǎng)絡(luò)結(jié)構(gòu),并獲得更加的預(yù)測性能。

(3)從度量空間中選取的幾個度量對于軟件模塊的故障傾向性而言,比其它非選擇度量具有更顯著的效果,這表明在軟件開發(fā)過程中,開發(fā)人員應(yīng)該更多地關(guān)注選定的度量指標(biāo),而不是所有的度量指標(biāo)。

(4)提出的預(yù)測方法能夠有效地預(yù)測軟件故障傾向性,因此開發(fā)人員只需集中于具有故障傾向性的軟件模塊,從而最大限度地降低軟件維護(hù)成本。

猜你喜歡
傾向性降維粒子
Three-Body’s epic scale and fiercely guarded fanbase present challenges to adaptations
基于模糊數(shù)學(xué)法的阿舍勒銅礦深部巖體巖爆傾向性預(yù)測
降維打擊
海峽姐妹(2019年12期)2020-01-14 03:24:40
基于粒子群優(yōu)化的橋式起重機(jī)模糊PID控制
基于粒子群優(yōu)化極點配置的空燃比輸出反饋控制
關(guān)于醫(yī)患沖突報道的傾向性分析——以“湘潭產(chǎn)婦死亡案”為例
“沒準(zhǔn)兒”“不一定”“不見得”和“說不定”的語義傾向性和主觀性差異
語言與翻譯(2015年4期)2015-07-18 11:07:43
一種面向博客群的主題傾向性分析模型
拋物化Navier-Stokes方程的降維仿真模型
計算物理(2014年1期)2014-03-11 17:00:18
基于特征聯(lián)合和偏最小二乘降維的手勢識別
平南县| 甘谷县| 建平县| 锦屏县| 土默特右旗| 宁安市| 潜江市| 马山县| 肇州县| 东山县| 潞西市| 鸡泽县| 新沂市| 宝丰县| 田东县| 清涧县| 青铜峡市| 新昌县| 聂拉木县| 静海县| 肇州县| 大荔县| 南京市| 盖州市| 奉贤区| 华阴市| 易门县| 东兰县| 长治市| 嘉禾县| 沧州市| 韶关市| 黄大仙区| 荥经县| 昌吉市| 璧山县| 彩票| 临邑县| 武汉市| 噶尔县| 阜平县|