?

基于支持向量回歸的軟件缺陷密度預測模型

2017-03-27 05:49楊騰翔王欽釗馬振宇韓志賀
裝甲兵工程學院學報 2017年5期
關鍵詞:度量向量密度

楊騰翔, 萬 琳, 王欽釗, 馬振宇,3, 韓志賀

(1. 陸軍裝甲兵學院信息工程系, 北京 100072; 2. 陸軍裝甲兵學院控制工程系, 北京 100072;3. 陸軍裝甲兵學院技術保障工程系, 北京 100072; 4. 31689部隊, 吉林 四平 136000)

軟件缺陷預測主要用于判別軟件中是否包含缺陷,預測軟件中包含缺陷的數量或密度。預測過程屬于機器學習的范疇,依據不同方法構建預測模型,完成軟件缺陷的預測工作。軟件缺陷預測[1-4]大致可分為靜態缺陷預測和動態缺陷預測,其中:靜態缺陷預測主要是依據軟件靜態屬性預測軟件中是否包含缺陷;動態缺陷預測則是為了建立缺陷與相應時間階段之間的規則聯系,記錄出現缺陷數量較多的時間段。目前,軟件缺陷預測模型主要有基于支持向量機(Support Vector Machine, SVM)的預測模型、基于神經網絡的預測模型[5]和基于LASSO-SVM的預測模型[6]等。另外,研究者結合數據挖掘算法對模型的預測效果不斷進行了改進,如:姜慧研等[7]提出了利用蟻群算法對軟件缺陷預測模型進行改進;王男帥等[8]提出了利用遺傳算法優化缺陷數據屬性和SVM參數的預測模型。

現階段,雖然缺陷預測技術一定程度上取得了相應進展,但仍存在以下問題:1)度量元的選擇并沒有得出系統的論證,缺陷的度量元有幾十種且相互關聯,在預測過程中需選擇對缺陷預測影響較大的度量元;2)數據集對現有缺陷預測模型的影響較大,對一組數據預測結果較好的模型,換一組數據或許就達不到預測的效果;3)缺陷數據的預處理和模型參數的選擇對預測結果的影響也較大。

針對上述問題,筆者提出一種基于支持向量回歸(Support Vector Regression, SVR)的軟件缺陷密度預測模型。首先,考慮不同度量元對缺陷密度預測的影響,選擇與缺陷密度相關性較大的度量元,利用SVR構建缺陷密度預測模型,并對預測數據進

行歸一化和隨機排序,以降低數據集對預測模型的影響;然后,選取徑向基核函數(Radial Basis Function,RBF),并利用網格搜索的方法對模型參數進行優化;最后,通過實驗驗證預測模型的有效性。

1 軟件缺陷密度預測方法框架

王青等[9]研究表明:缺陷的存在符合二八原則,即80%的缺陷往往存在于20%的程序模塊中。缺陷密度是對軟件、程序模塊或源文件中缺陷數量和代碼行數關系的度量,反映了該模塊包含缺陷的概率。度量元是對程序內在屬性的一種直觀表示,反映了程序代碼的質量和復雜度。筆者將度量元、缺陷密度分別作為預測過程的輸入、輸出,通過預測模型建立二者之間的關系,用于下一步的預測。圖1為軟件項目的缺陷密度預測模型。

圖1 軟件項目的缺陷密度預測模型

2 軟件缺陷密度預測模型

2.1 度量元數據提取

本文引入Spearman秩相關系數的分析方法,用于衡量度量元和缺陷密度之間的關系,從而提取對缺陷密度影響較大的度量元,去除冗余的度量元。

給定軟件項目某度量元X和缺陷密度Y的n組數據,可表示為X(X1,…,Xk,…,Xn)和Y(y1,…,yk,…,yn)。其中:Xk為第k個軟件項目的度量元;yk為第k個軟件項目的缺陷密度。

為分析度量元X和缺陷密度Y之間的相關程度,首先將X和Y中數據進行配對,得到數據組(X1,y1),…,(Xk,yk),…,(Xn,yn);然后將Xk和yk分別按照大小排序,獲得Xk和yk在2個順序樣本中的排名(即秩),記作Rk和Sk。由此可以得到數據組的n對秩,即(R1,S1),…,(Rk,Sk),…,(Rn,Sn)。利用Spearman秩相關系數衡量X和Y之間的相關程度,可表示為

(1)

式中:

(2)

(3)

dk=Rk-Sk。

(4)

注:1)r的取值范圍為[-1,1];2)當r>0時,表明X和Y正相關,當r<0時,表明X和Y負相關;3)|r|越大,說明X和Y的相關程度越高;4)當r=1時,則X和Y完全正相關,當r=-1時,則X和Y完全負相關。

2.2 數據預處理

為了避免在數據處理過程中因某個或某些度量元數值差別過大而影響計算的精度,加快程序的收斂速度,需要對數據進行預處理。歸一化就是將度量元屬性數值規范到 [0,1]的過程,不影響原始數據屬性對回歸模型的預測。本文將單個維度下的度量元數據分別進行歸一化,即

(5)

另外,樣本的排序對實驗結果必然產生一定的影響,本文利用隨機抽樣的方法對數據順序進行重新排列,避免因為訓練集和測試集中個別實驗數據異常而影響回歸預測的整體效果,從而找出擬合度較高的回歸模型。

2.3 缺陷密度預測模型構建

給定數據樣本集合{(x1,y1),…,(xi,yi),…,(xl,yl)},其中,xi(i=1,2,…,l)為第i個軟件項目的度量元向量,yi為第i個軟件項目的缺陷密度,xi∈Rn,yi∈R。尋找Rn上的一個模型f(x)來擬合這些點,以便用該模型推斷任一輸入x所對應的y值。其中,

f(x)=w·x+b,

(6)

式中:w為超平面的法向量;b為常數。

回歸預測的過程就是尋找一個最優超平面,使所有的樣本點距離超平面的“總偏差”較小,因此采用一個正則化的誤差函數進行度量,即

(7)

式中:f(xi)為第i個軟件項目缺陷密度的預測值。

則原問題可轉化為最優化問題:

(8)

(9)

式中:C為懲罰因子;ε為允許的范圍誤差;ν為支持向量的個數;ξi、ξi*分別為訓練樣本對于超平面的上、下偏差。

引入拉格朗日乘子αi,得到對偶形式:

(10)

(11)

式中:K(xi,xj)為核函數。

最終建立的SVR預測模型為

(12)

通過上述方法構建出軟件缺陷密度預測模型,給定任一輸入的度量元向量x,則能夠預測出軟件項目所對應的缺陷密度y。

2.4 核函數的選擇

為了提高模型對缺陷密度預測的效果,首先需要對模型中的核函數進行選擇。合適的核函數能夠較好地將低維空間的非線性問題轉化為高維空間的線性問題,在高維空間中尋找回歸問題的最優超平面,解決了傳統方法在轉化過程中出現的計算量劇增的問題。

在缺陷密度的回歸預測過程中,核函數的作用可表示為:首先,把度量元所表示的向量x轉化到高維空間的向量x′,并計算出高維空間中回歸模型的w′和b′;然后,通過f(x′)=w′·x′+b′進一步得到回歸結果。核函數的目的就是建立數據從低維到高維轉換的映射關系,當給定低維空間的w和x時,可直接輸出確定的f(x′)。

模型中最常用的核函數主要有線性核函數、多項式核函數和RBF核函數[8-9]。其中,RBF核函數是某種沿徑向對稱的標量函數,能夠將數據映射到無窮維,同時能夠逼近任意非線性函數,具有良好的泛化能力,收斂速度較快。因此,本文采用RBF核函數構建軟件缺陷密度預測模型,其表達式為

(13)

式中:xj為RBF核函數的中心;σ為RBF核函數的寬度系數,決定著核函數的徑向作用范圍。

2.5 參數優化

雖然SVR模型中存在默認參數,但在實際問題中并不能適用于所有問題的最優解,因此在研究具體問題時需要優化參數。參數優化包括懲罰因子C和g參數[10]的設置,其中:懲罰因子C在確定的特征空間中控制回歸曲線的平滑度并折中經驗風險;g參數用來調節RBF核函數中的σ,決定著RBF核函數的性能[11]。對于C、g這2個參數,國際上并沒有給出公認統一的設置方法,需要根據具體研究對象和樣本數據特點進行優化。

網格搜索法是一種遍歷搜索的優化方法,其優化過程是依據步距將數值范圍劃分成網格,將所有數值分組并不斷取任何可能的值。

參數優化的實質是針對不同的研究對象選擇合適的(C,g)數據對。在缺陷密度的預測模型中設置C、g的數值范圍,根據搜索步長將C、g分別劃分為n1、n2組數值,然后將這些數值進行配對,共有n1·n2組(C,g)數據對。網格搜索就是對n1·n2組參數進行遍歷搜索,通過驗證選擇出預測精度較高的(C,g)數據對作為最優參數。

驗證過程采用十折交叉檢驗的方法,其主要過程是將所有的數據樣本劃分為10個子集,每個子集都將被其余數據訓練后作為測試集。整個過程需要進行10次,直到每個子集都被當作一次測試集,最后將10次的平均交叉驗證誤差作為最終結果。網格搜索法通過設置搜索步長對參數進行全面搜索,與其他啟發式或逼近的優化方法相比,搜索的范圍更全面。由于每個(C,g)對是相互獨立的,因此運算時可并行性高,能夠節省一定的時間開銷。

3 實驗結果及分析

為驗證基于SVR軟件缺陷密度預測模型的效果,筆者基于MATLAB2016a、VS2010平臺C++編譯環境以及LibSVM工具包進行測試。實驗采用我國特種車輛軟件評測中心以及通用裝備保障軟件評測中心的33組實驗數據進行測試。首先利用軟件靜態分析工具LogiScope對軟件項目進行度量,采集44個軟件缺陷度量元,通過Spearman相關系數分析法選擇對缺陷密度影響較大的5種缺陷度量元進行回歸預測,分別是耦合因子(ap_cof)、違反結構化編程數量(struc_pg)、使用某個類的類數量(cu_cdusers)、某個類使用的類數量(cu_cdused)和子類數量(in_noc)。然后與Bagging、LinearRegression、Gaussian processes、IBK、MultilayerPerceptron五種機器學習算法進行對比實驗分析,5種機器學習算法分別基于不同的原理構建預測模型,分析輸入和輸出之間的關系,算法具體描述如表1所示。

表1 機器學習算法描述

通過隨機抽樣的方法對33組數據進行重新排序后,分析預測結果,搜索預測結果較好的數據序列進行預測分析。將最優數據序列的前22組作為訓練集,后11組數據作為測試集,驗證網格搜索后預測模型的可行性和有效性。筆者采用均方根誤差、平均絕對誤差、相對平方根誤差和相對絕對誤差4個指標,分析預測的缺陷密度值和實際缺陷密度值之間的誤差,各個指標的表達式如下:

均方根誤差:

(14)

平均絕對誤差:

(15)

相對平方誤差:

(16)

相對絕對誤差:

(17)

另外,通過相關系數衡量預測模型中度量元數據和缺陷密度的相關程度,相關系數越大,說明構建的預測模型效果越好。

支持向量回歸共有ε-SVR和ν-SVR兩種類型。下面通過實驗分析采用ε-SVR和ν-SVR的不同預測效果,結果對比如表2所示??芍褐С窒蛄炕貧w中ν-SVR模型預測效果較好,這是因為ν-SVR模型在預測過程中能夠自動將允許的范圍誤差ε最小化,而且能夠控制支持向量的個數ν,支持向量的個數直接決定預測的效果。

表2 不同SVR類型預測結果對比

因此,筆者選取ν-SVR模型進行實驗,并將參數優化后的SVR預測模型與5種機器學習算法的預測模型進行對比分析,其缺陷密度預測結果對比如表3所示。

表3 不同預測模型缺陷密度預測結果對比

由表3可見:與基于5種機器學習算法構建的預測模型相比,本文的SVR預測模型得到的缺陷密度預測誤差較小,度量元數據和缺陷密度的相關系數較大,表明該模型的預測效果較好。

通過網格搜索法對SVR預測模型參數尋優后,得到C的最優值為8,g的最優值為0.5,結果如圖2所示。

測試集模型的預測結果如圖3所示,可以看出:

圖2 SVR參數尋優結果

圖3 測試集模型的預測結果

缺陷密度回歸預測值基本能夠擬合實際缺陷密度值,誤差在合理范圍之內。

4 結論

筆者通過Spearman相關系數提取對缺陷密度影響較大的缺陷度量元數據,利用SVR構建軟件缺陷密度預測模型,并采用網格搜索法對模型中參數(C,g)進行優化,一定程度上提高了回歸預測的效果,最后與5種機器學習算法進行了對比實驗,結果表明:所建立的SVR預測模型是有效的,能較好地預測軟件缺陷。

[1] 陳翔,顧慶,劉望舒,等. 靜態軟件缺陷預測方法研究[J].軟件學報,2016(1):1-25.

[2] AGARWAL S,TOMAR D,Prediction of software defects using twin support vector machine[C]∥International conference on information systems and computer networks.Mattura:IEEE,2014:128-132.

[3] SUFFIAN M D M,IBRAHIM S.A prediction model for system testing defects using regression analysis[J].International journal of soft computing & software engineering,2012,2(7):55-68.

[4] OKUTAN A,YILDIZ O T.Software defect prediction using Baye-sian networks[J]. Empirical software engineering,2014,19(1):154-181.

[5] 王李進,吳保國,鄭德祥.基于人工神經網絡的軟件質量評價[J].計算機應用與軟件,2008,25(12):133-134,150.

[6] 吳曉萍,趙學靖,喬輝,等.基于LASSO-SVM的軟件缺陷預測模型研究[J].計算機應用研究,2013,30(9):2748-2751,2754.

[7] 姜慧研,宗茂,劉相瑩.基于ACO-SVM的軟件缺陷預測模型的研究[J].計算機學報,2011,34(6):1148-1154.

[8] 王男帥,薛靜鋒,胡昌振,等.基于遺傳優化支持向量機的軟件缺陷預測模型[J].中國科技論文,2015(2):159-163.

[9] 王青,伍書劍,李明樹.軟件缺陷預測技術[J].軟件學報,2008(7):1565-1580.

[10] RYU D,CHOI O,BAIK J.Value-cognitive boosting with a support vector machine for cross-project defect prediction[J].Empirical software engineering,2016,21(1):43-71.

[11] SHAN C,ZHU H J,HU C Z,et al.Software defect prediction model based on improved LLE-SVM[C]∥International Confe-rence on Computer Science and Network Technology.Harbin:IEEE,2015:530-535.

猜你喜歡
度量向量密度
鮑文慧《度量空間之一》
向量的分解
大尺寸高相對密度鎢管的制備
聚焦“向量與三角”創新題
代數群上由模糊(擬)偽度量誘導的拓撲
突出知識本質 關注知識結構提升思維能力
度 量
向量垂直在解析幾何中的應用
密度的不變性與可變性
向量五種“變身” 玩轉圓錐曲線
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合