付忠旺,肖 蓉,余 嘯,谷 懿
(1.湖北大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,武漢 430062; 2.軟件工程國(guó)家重點(diǎn)實(shí)驗(yàn)室(武漢大學(xué)),武漢 430072;3.湖北省教育信息化工程技術(shù)研究中心,武漢 430062)
軟件缺陷預(yù)測(cè)指的是通過(guò)從歷史軟件數(shù)據(jù)中學(xué)習(xí)出缺陷預(yù)測(cè)的模型,然后對(duì)新的軟件模塊進(jìn)行預(yù)測(cè),預(yù)測(cè)其是否有缺陷。如果預(yù)測(cè)該軟件模塊有缺陷則對(duì)該軟件模塊分配更多的軟件測(cè)試人員,這樣可以合理地分配測(cè)試資源。研究者已經(jīng)提出了很多軟件缺陷預(yù)測(cè)的方法[1-3]:陳翔等[4]總結(jié)了國(guó)內(nèi)外在該研究領(lǐng)域取得的主要成果,但這些研究者提出的軟件缺陷預(yù)測(cè)方法都是基于分類(lèi)模型,即預(yù)測(cè)軟件模塊是否有缺陷;文獻(xiàn)[5-6]指出,如果采用回歸方法預(yù)測(cè)一個(gè)軟件模塊存在多少個(gè)缺陷時(shí),可以?xún)?yōu)先測(cè)試缺陷個(gè)數(shù)多的模塊,這樣能夠更好地分配測(cè)試資源。
舉例來(lái)說(shuō),假如一個(gè)軟件公司開(kāi)發(fā)了一個(gè)包含有100個(gè)軟件模塊的新項(xiàng)目。由于項(xiàng)目交付時(shí)間提前,測(cè)試人員有限,在項(xiàng)目交付之前只能測(cè)試20個(gè)軟件模塊。因此,測(cè)試人員首先基于軟件倉(cāng)庫(kù)中的歷史軟件模塊數(shù)據(jù)建立了一個(gè)軟件缺陷預(yù)測(cè)模型或者軟件缺陷個(gè)數(shù)預(yù)測(cè)模型;然后利用預(yù)測(cè)模型預(yù)測(cè)這100個(gè)軟件模塊是否有缺陷或有多少個(gè)缺陷。假設(shè)缺陷預(yù)測(cè)模型預(yù)測(cè)這100個(gè)軟件模塊中30個(gè)軟件模塊有缺陷,由于在項(xiàng)目交付之前測(cè)試人員只能測(cè)試20個(gè)軟件模塊,因此測(cè)試人員不清楚應(yīng)該測(cè)試這30個(gè)被預(yù)測(cè)為有缺陷的軟件模塊中的哪20個(gè)軟件模塊;但如果根據(jù)軟件缺陷個(gè)數(shù)預(yù)測(cè)模型的預(yù)測(cè)結(jié)果,測(cè)試人員能夠基于這100個(gè)軟件模塊的缺陷個(gè)數(shù)的預(yù)測(cè)值對(duì)這100個(gè)軟件模塊進(jìn)行降序排序,優(yōu)先測(cè)試前20個(gè)軟件模塊,即優(yōu)先具有更多缺陷的軟件模塊,因此,預(yù)測(cè)軟件缺陷個(gè)數(shù)相比單純的預(yù)測(cè)軟件模塊是否有缺陷更利于優(yōu)化軟件測(cè)試資源的分配[7]。
目前在軟件缺陷個(gè)數(shù)預(yù)測(cè)方面已有大量研究。Rathore等[8]探究了決策樹(shù)回歸算法在本項(xiàng)目缺陷個(gè)數(shù)預(yù)測(cè)模型和跨項(xiàng)目缺陷個(gè)數(shù)預(yù)測(cè)模型的預(yù)測(cè)性能,實(shí)驗(yàn)結(jié)果表明在采用絕對(duì)誤差和相對(duì)誤差作為評(píng)估指標(biāo)時(shí),決策樹(shù)回歸算法有很好的預(yù)測(cè)性能。Wang等[9]提出了利用歷史數(shù)據(jù)構(gòu)造缺陷狀態(tài)轉(zhuǎn)換模型,然后利用馬爾可夫鏈預(yù)測(cè)將來(lái)每種狀態(tài)下的缺陷個(gè)數(shù)。Afzal等[10]提出了利用基因編程算法來(lái)預(yù)測(cè)缺陷個(gè)數(shù)。Rathore等[11]提出了利用遺傳算法和決策樹(shù)回歸算法來(lái)預(yù)測(cè)給定軟件系統(tǒng)的缺陷個(gè)數(shù)的方法,在PROMISE提供的開(kāi)源數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明該方法有較好的預(yù)測(cè)性能。
圖1 缺陷預(yù)測(cè)模型與缺陷個(gè)數(shù)預(yù)測(cè)模型的差異性 Fig. 1 Difference between a defect prediction model and a model for predicting the number of defects
Gao等[12]比較了泊松回歸算法、零膨脹泊松回歸算法和負(fù)二項(xiàng)回歸算法對(duì)于預(yù)測(cè)軟件缺陷個(gè)數(shù)上的能力,實(shí)驗(yàn)采用平均絕對(duì)誤差(Average Absolute Error, AAE)和平均相對(duì)誤差(Average Relative Error, ARE)作為評(píng)價(jià)指標(biāo),實(shí)驗(yàn)結(jié)果表明泊松回歸算法實(shí)現(xiàn)了最好的預(yù)測(cè)性能。Chen等[13]比較了線(xiàn)性回歸算法、貝葉斯嶺回歸算法、支持向量機(jī)回歸算法、最近鄰回歸算法、決策樹(shù)回歸算法和梯度Boosting回歸算法的預(yù)測(cè)性能;實(shí)驗(yàn)采用均方回歸誤差和精度作為評(píng)價(jià)指標(biāo),實(shí)驗(yàn)結(jié)果表明在本項(xiàng)目缺陷個(gè)數(shù)預(yù)測(cè)和跨項(xiàng)目缺陷個(gè)數(shù)預(yù)測(cè)兩種情形下,決策樹(shù)回歸算法都實(shí)現(xiàn)了最好的預(yù)測(cè)性能。在另一個(gè)比較相似的研究中,Rathore 等[14]基于PROMISE提供的開(kāi)源數(shù)據(jù)集上比較了遺傳算法、多層感知機(jī)回歸算法、線(xiàn)性回歸算法、決策樹(shù)回歸算法、零膨脹泊松回歸算法和負(fù)二項(xiàng)回歸算法等六種回歸算法對(duì)于預(yù)測(cè)軟件缺陷個(gè)數(shù)的能力;實(shí)驗(yàn)采用平均絕對(duì)誤差和平均相對(duì)誤差作為評(píng)價(jià)指標(biāo),實(shí)驗(yàn)結(jié)果表明線(xiàn)性回歸算法和決策樹(shù)回歸算法對(duì)于大多數(shù)數(shù)據(jù)集而言產(chǎn)生的錯(cuò)誤率最低并且相對(duì)于其他四種缺陷預(yù)測(cè)算法預(yù)測(cè)精準(zhǔn)度更高。
但這些論文一般以評(píng)估回歸模型的度量指標(biāo)如均方根誤差(Root Mean Square Error, RMSE)、平均絕對(duì)誤差或平均相對(duì)誤差來(lái)評(píng)價(jià)軟件缺陷個(gè)數(shù)預(yù)測(cè)模型的預(yù)測(cè)性能。這些度量指標(biāo)反映了預(yù)測(cè)值偏離真實(shí)值的程度,其值越小,表示預(yù)測(cè)準(zhǔn)確率越高。如平均絕對(duì)誤差的計(jì)算公式為:
其中:n為測(cè)試集中軟件模塊的個(gè)數(shù),yi,predicted為測(cè)試集中第i個(gè)軟件模塊的缺陷個(gè)數(shù)預(yù)測(cè)值,yi,actual為測(cè)試集中第i個(gè)軟件模塊的缺陷個(gè)數(shù)真實(shí)值。
但是由于軟件缺陷數(shù)據(jù)集是極度數(shù)據(jù)不平衡的,即大多數(shù)軟件模塊的缺陷個(gè)數(shù)為0,只有少數(shù)軟件模塊的缺陷個(gè)數(shù)大于0。僅用評(píng)價(jià)回歸模型的度量指標(biāo)評(píng)估軟件缺陷個(gè)數(shù)預(yù)測(cè)模型性能的好壞是不合適的。以本文2.1節(jié)中Ant 1.3這個(gè)軟件缺陷數(shù)據(jù)集為例,該數(shù)據(jù)集包含125個(gè)軟件模塊,其中20個(gè)軟件模塊是有缺陷的,總共有33個(gè)缺陷。假如一個(gè)預(yù)測(cè)模型在預(yù)測(cè)該數(shù)據(jù)集時(shí)預(yù)測(cè)這125個(gè)軟件模塊的缺陷個(gè)數(shù)均為0,AAE值為0.264(=33/125)。這個(gè)預(yù)測(cè)模型取得了很低的AAE,但是這樣的預(yù)測(cè)模型不能應(yīng)用到實(shí)際的應(yīng)用場(chǎng)景中,因?yàn)樗荒茴A(yù)測(cè)出任何有缺陷的軟件模塊的缺陷個(gè)數(shù)。
文獻(xiàn)[5]指出,由于缺乏高質(zhì)量的訓(xùn)練數(shù)據(jù),準(zhǔn)確地預(yù)測(cè)出一個(gè)模塊包含幾個(gè)缺陷是比較困難的。實(shí)際上,一般這些軟件缺陷個(gè)數(shù)預(yù)測(cè)方法都是利用預(yù)測(cè)出的缺陷個(gè)數(shù)來(lái)對(duì)軟件模塊進(jìn)行排序,優(yōu)先測(cè)試包含更多缺陷的軟件模塊。因此Weyukers等[15]提出采用平均缺陷百分比(Fault Percentile Average, FPA)評(píng)價(jià)指標(biāo)來(lái)評(píng)估軟件缺陷個(gè)數(shù)預(yù)測(cè)模型的性能。
針對(duì)文獻(xiàn)[12-14]在比較不同的回歸算法對(duì)軟件缺陷個(gè)數(shù)預(yù)測(cè)模型性能影響的研究中采用了均方根誤差、平均絕對(duì)誤差或平均相對(duì)誤差等不合適的評(píng)價(jià)指標(biāo),有可能產(chǎn)生錯(cuò)誤的結(jié)論的問(wèn)題,本文提出了以平均缺陷百分比為評(píng)價(jià)指標(biāo),利用PROMISE提供的6個(gè)開(kāi)源數(shù)據(jù)集,分析了線(xiàn)性回歸、決策樹(shù)回歸、貝葉斯嶺回歸、自相關(guān)決策回歸、支持向量回歸、梯度Boosting回歸、高斯過(guò)程回歸、最近鄰回歸、隨機(jī)梯度下降回歸和Huber回歸這10個(gè)常用的回歸算法對(duì)軟件缺陷個(gè)數(shù)預(yù)測(cè)模型預(yù)測(cè)結(jié)果的影響以及各種回歸算法之間的差異。實(shí)驗(yàn)結(jié)果表明:梯度Boosting回歸算法和貝葉斯嶺回歸算法預(yù)測(cè)效果最好。
本文主要工作為:
1)以平均缺陷百分比為評(píng)價(jià)指標(biāo)分析了回歸算法對(duì)軟件缺陷個(gè)數(shù)預(yù)測(cè)模型預(yù)測(cè)性能的影響。
2)對(duì)比分析了10種常用的回歸算法的差異,發(fā)現(xiàn)梯度Boosting回歸算法和貝葉斯嶺回歸算法建立軟件缺陷個(gè)數(shù)預(yù)測(cè)模型時(shí)具有最好的預(yù)測(cè)效果。
軟件缺陷個(gè)數(shù)預(yù)測(cè)的流程如圖1所示。第一步為從軟件歷史數(shù)據(jù)中提取出有用的軟件模塊,然后標(biāo)記這些模塊的特征和具有多少個(gè)缺陷。第二步為基于這些軟件模塊利用回歸模型建立軟件缺陷個(gè)數(shù)預(yù)測(cè)模型。第三步為對(duì)新的軟件模塊提取出特征,利用第二步中得到的軟件缺陷個(gè)數(shù)預(yù)測(cè)模型預(yù)測(cè)這個(gè)新的軟件模塊的缺陷個(gè)數(shù)。
圖2 軟件缺陷個(gè)數(shù)預(yù)測(cè)流程 Fig. 2 Flow chart of predicting the number of software defects
1.2.1 線(xiàn)性回歸
線(xiàn)性回歸(Linear Regression, LR)[16]是一種用于對(duì)因變量與一個(gè)或多個(gè)獨(dú)立變量之間的線(xiàn)性關(guān)系進(jìn)行建模的統(tǒng)計(jì)方法。一個(gè)線(xiàn)性回歸方程為Y=b0+b1x1+b2x2+…+bnxn,其中:Y是因變量,x1,x2,…,xn是獨(dú)立變量,b1,b2,…,bn是獨(dú)立變量的回歸系數(shù),b0是誤差項(xiàng)。針對(duì)軟件缺陷個(gè)數(shù)預(yù)測(cè)模型,Y為缺陷個(gè)數(shù),x1,x2,…,xn為軟件模塊的度量元。一般來(lái)說(shuō),線(xiàn)性回歸都可以通過(guò)最小二乘法求出其方程。
1.2.2 決策樹(shù)回歸
決策樹(shù)回歸(Decision Tree Regression, DTR)[17]通過(guò)學(xué)習(xí)從數(shù)據(jù)特征推斷的簡(jiǎn)單決策樹(shù)來(lái)預(yù)測(cè)目標(biāo)變量的值。決策樹(shù)從根節(jié)點(diǎn)自上而下構(gòu)建,并使用分割標(biāo)準(zhǔn)將數(shù)據(jù)分成包含具有相似值的實(shí)例的子集。選擇最大化減少預(yù)期誤差的屬性作為根節(jié)點(diǎn)。該過(guò)程在非葉分支上遞歸運(yùn)行,直到所有數(shù)據(jù)被處理。
1.2.3 貝葉斯嶺回歸
貝葉斯嶺回歸(Bayesian Ridge Regression, BRR)[18]假設(shè)先驗(yàn)概率、似然函數(shù)和后驗(yàn)概率都是正態(tài)分布。先驗(yàn)概率是假設(shè)模型輸出Y是符合均值為Xθ的正態(tài)分布,正則化參數(shù)α被看作是一個(gè)需要從數(shù)據(jù)中估計(jì)得到的隨機(jī)變量?;貧w系數(shù)θ的先驗(yàn)分布規(guī)律為球形正態(tài)分布,超參數(shù)為λ。貝葉斯嶺回歸通過(guò)最大化邊際似然函數(shù)來(lái)估計(jì)超參數(shù)α和λ,以及回歸系數(shù)θ。
1.2.4 自相關(guān)決策回歸
自相關(guān)決策回歸(Automatic Relevance Determination Regression, ARDR)[19]和貝葉斯嶺回歸很像,唯一的區(qū)別在于對(duì)回歸系數(shù)θ的先驗(yàn)分布假設(shè)。自相關(guān)決策回歸假設(shè)θ的先驗(yàn)分布規(guī)律為與坐標(biāo)軸平行的橢圓形高斯分布。自相關(guān)決策回歸也是通過(guò)最大化邊際似然函數(shù)來(lái)估計(jì)超參數(shù)α和λ向量,以及回歸系數(shù)θ。
1.2.5 支持向量回歸
支持向量回歸 (Support Vector Regression, SVR)[20]是支持向量在函數(shù)回歸領(lǐng)域的應(yīng)用。支持向量回歸不同于支持向量機(jī),支持向量回歸的樣本點(diǎn)只有一類(lèi),所尋求的最優(yōu)超平面不是使兩類(lèi)樣本點(diǎn)分得“最開(kāi)”,而是使所有樣本點(diǎn)離超平面的總偏差最小,這時(shí)樣本點(diǎn)都在兩條邊界線(xiàn)之間。
1.2.6 梯度Boosting回歸
梯度Boosting回歸(Gradient Boosting Regression, GBR)[21]以弱預(yù)測(cè)模型(通常是決策樹(shù))的形式產(chǎn)生預(yù)測(cè)模型,類(lèi)似于其他Boosting方法,都是以階段性方式構(gòu)建模型,但與其他Boosting方法不一樣的是,梯度Boosting回歸在迭代時(shí)選擇的是梯度下降的方向來(lái)保證最后的結(jié)果最好。
1.2.7 高斯過(guò)程回歸
高斯過(guò)程回歸(Gaussian Process Regression, GPR)[22]與貝葉斯嶺回歸類(lèi)似,區(qū)別在于高斯過(guò)程回歸中用核函數(shù)代替了貝葉斯嶺回歸中的基函數(shù)。高斯過(guò)程回歸從函數(shù)空間角度出發(fā),定義一個(gè)高斯過(guò)程來(lái)描述函數(shù)分布,直接在函數(shù)空間進(jìn)行貝葉斯推理。
1.2.8 最近鄰回歸
最近鄰回歸算法(Nearest Neighbors Regression, NNR)[23]通過(guò)找出一個(gè)樣本的k個(gè)最近鄰,將這k個(gè)最近鄰的回歸值的平均值賦給該樣本,就可以得到該樣本的回歸值。更有用的方法是將不同距離的鄰居對(duì)該樣本產(chǎn)生的影響給予不同的權(quán)值(weight),如權(quán)值與距離成正比。
1.2.9 隨機(jī)梯度下降回歸
隨機(jī)梯度下降回歸(Stochastic Gradient Descent Regression, SGDR)[24]是利用隨機(jī)梯度下降的方法來(lái)最小化訓(xùn)練時(shí)回歸方程中的誤差的回歸方法。
1.2.10 Huber回歸
相比線(xiàn)性回歸算法采用最小二乘法求出其回歸方程,異常點(diǎn)對(duì)回歸模型的影響會(huì)非常大,傳統(tǒng)的基于最小二乘的回歸方法將不適用。Huber回歸 (Huber Regression, HR)[25]并不會(huì)忽略異常點(diǎn),而是給予它們一個(gè)很小的權(quán)重值,因此對(duì)異常點(diǎn)具有魯棒性。
實(shí)驗(yàn)數(shù)據(jù)集為從PROMISE庫(kù)中的6個(gè)常用的項(xiàng)目,這6個(gè)項(xiàng)目的詳細(xì)信息如表1所示。對(duì)項(xiàng)目中的每個(gè)軟件模塊共提取了20個(gè)特征,這20個(gè)特征的具體細(xì)節(jié)參考文獻(xiàn)[3]。
表1 實(shí)驗(yàn)數(shù)據(jù)集Tab. 1 Experimental data set
為了評(píng)估1.2節(jié)中介紹的10個(gè)回歸算法的預(yù)測(cè)性能,實(shí)驗(yàn)采用10折交叉檢驗(yàn)方法。進(jìn)行實(shí)驗(yàn)時(shí),對(duì)于表1中的項(xiàng)目,是將該項(xiàng)目的所有版本合并為一個(gè)數(shù)據(jù)集。然后將該數(shù)據(jù)集均分為10份,輪流將其中的9份作訓(xùn)練集,1作做測(cè)試集,進(jìn)行實(shí)驗(yàn)。每次實(shí)驗(yàn)在訓(xùn)練集上訓(xùn)練1.2節(jié)中介紹的10個(gè)回歸算
表2 預(yù)測(cè)結(jié)果的Wilcoxon符號(hào)秩檢驗(yàn)(顯著性水平0.05)Tab. 2 Wilcoxon symbol rank test of prediction results (significance level 0.05)
表3 每個(gè)項(xiàng)目預(yù)測(cè)結(jié)果統(tǒng)計(jì)Tab. 3 Statistics of each project’s prediction result
法,然后在測(cè)試集上測(cè)試這10個(gè)回歸算法的FPA值。最后返回10次的結(jié)果的FPA值的平均值。為了防止樣本誤差,本實(shí)驗(yàn)進(jìn)行20次10折交叉檢驗(yàn),最后記錄的實(shí)驗(yàn)結(jié)果為20次10折交叉檢驗(yàn)的FPA均值。
本文提出了以下兩個(gè)研究問(wèn)題,為軟件缺陷個(gè)數(shù)預(yù)測(cè)模型中各種回歸算法的選擇提供了指導(dǎo)依據(jù)。
RQ1:軟件缺陷個(gè)數(shù)預(yù)測(cè)過(guò)程中,回歸算法的選取是否影響預(yù)測(cè)效果?
RQ2:采用哪一個(gè)回歸算法得到的軟件缺陷個(gè)數(shù)預(yù)測(cè)模型的預(yù)測(cè)效果更好?
圖3給出了10個(gè)回歸算法在6個(gè)數(shù)據(jù)集上的預(yù)測(cè)結(jié)果的盒圖,很容易看出預(yù)測(cè)結(jié)果分布有一定差別,其中LR、BRR、ARDR、GBR和HR這5種回歸算法的效果較好FPA中位數(shù)分別為0.764、0.763、0.763、0.761和0.744,而效果較差的GPR和SGDR其中位數(shù)僅為0.449和0.501。BRR取得了最大的FPA值為0.813,GPR取得了最低的FPA值為0.385,BRR在6個(gè)數(shù)據(jù)集上取得的最低的FPA值都比GPR在這6個(gè)數(shù)據(jù)集上取得的最高的FPA值都要高。因此從圖3的盒圖可以看出,對(duì)RQ1的回答是肯定的,即在軟件缺陷個(gè)數(shù)預(yù)測(cè)過(guò)程中,回歸算法的選取會(huì)影響預(yù)測(cè)效果。
為了進(jìn)一步分析這10個(gè)回歸算法對(duì)預(yù)測(cè)效果的影響的顯著程度,本文也對(duì)這10個(gè)回歸算法的預(yù)測(cè)結(jié)果采用Wilcoxon符號(hào)秩檢驗(yàn)進(jìn)行了假設(shè)檢驗(yàn)。在Wilcoxon符號(hào)秩檢驗(yàn)中,它把觀測(cè)值和零假設(shè)的中心位置之差的絕對(duì)值的秩分別按照不同的符號(hào)相加作為其檢驗(yàn)統(tǒng)計(jì)量。它檢驗(yàn)成對(duì)產(chǎn)生觀測(cè)數(shù)據(jù)的總體是否具有相同的均值。本文建立原假設(shè)H0:兩種回歸算法預(yù)測(cè)結(jié)果來(lái)自同一分布,即它們之間沒(méi)有差別。因此在顯著性水平為0.05的情況下,若檢測(cè)的顯著性水平大于0.05,表示假設(shè)成立,接受H0;否則,假設(shè)不成立,拒絕H0。由表2可見(jiàn),LR與除BRR、ARDR、GBR、HR外的算法顯著性水平均小于0.05,說(shuō)明LR與除BRR、ARDR、GBR、HR外的算法均有較大差異。DTR 與SVR的顯著性水平為0.563,高于0.05,說(shuō)明DTR與SVR沒(méi)有較大差異,但與除了SVR外的算法顯著性水平均小于0.05,說(shuō)明DTR與除SVR外的算法有較大差異。BRR與除LR、ARDR、GBR外的算法顯著性水平均小于0.05,說(shuō)明BRR與除LR、ARDR、GBR外的算法具有較大差異。ARDR與DTR、SVR、GPR、SGDR外的算法顯著性水平均小于0.05,說(shuō)明ARDR與DTR、SVR、GPR、SGDR外的算法均有較大差異。SVR與除DTR、NNR、HR外的算法顯著性水平均小于0.05,說(shuō)明SVR與除DTR、NNR、HR外的算法具有較大差異。GBR與除LR、BRR、ARDR、HR外的算法顯著性水平均小于0.05,說(shuō)明GBR與除LR、BRR、ARDR、HR外的算法具有較大差異。NNR與除ARDR、SVR、HR外的算法顯著性水平均小于0.05,說(shuō)明NNR與除ARDR、SVR、HR外的算法具有較大差異。GPR和SGDR與所有除自身以外的其他算法的顯著性水平均低于0.05,說(shuō)明GPR和SGDR與其他算法都有較大差異。HR與LR、DTR、BRR、GPR、SGDR的顯著性水平均小于0.05,說(shuō)明HR與LR、DTR、BRR、GPR、SGDR都要較大差異。因此對(duì)第一個(gè)研究問(wèn)題可以得出結(jié)論,回歸算法的選取不僅對(duì)預(yù)測(cè)結(jié)果有影響,而且部分算法之間影響效果顯著。
從表2還可發(fā)現(xiàn),LR、BRR、ARDR和GBR兩兩之間沒(méi)有顯著性差異,而HR和LR、ARDR、GBR、NNR之間也沒(méi)有顯著性差異。這是從6個(gè)數(shù)據(jù)集整體分析得到的結(jié)果,但在單個(gè)數(shù)據(jù)集上10種算法對(duì)預(yù)測(cè)結(jié)果的影響是否依然如此,還需作進(jìn)一步分析。因此本文統(tǒng)計(jì)了在每個(gè)數(shù)據(jù)集上10種回歸算法的預(yù)測(cè)結(jié)果。表3表明,在數(shù)據(jù)集Ant和Log4j中BRR占優(yōu)且在Log4j這個(gè)數(shù)據(jù)集上取得FPA的最大值為0.813,而在數(shù)據(jù)集Camel、Jedit、Synapse和Xalan上GBR占優(yōu),取得的FPA的最大值為Jedit的0.839。在這6個(gè)數(shù)據(jù)集上,GBR取得最優(yōu)的平均值為0.766,BRR取得第二好的平均值為0.762,但這兩個(gè)平均值相差不大。因此對(duì)第二個(gè)研究問(wèn)題可以得出結(jié)論,采用梯度Boosting回歸算法和貝葉斯嶺回歸算法得到的軟件缺陷個(gè)數(shù)預(yù)測(cè)模型的預(yù)測(cè)效果更好。
針對(duì)2.4節(jié)中提出的兩個(gè)研究性問(wèn)題,本文通過(guò)實(shí)驗(yàn)回答了這兩個(gè)研究性問(wèn)題,但實(shí)驗(yàn)過(guò)程中也潛在一些有效性威脅,具體如下:
1)實(shí)驗(yàn)選用的是PROMISE平臺(tái)提供的6個(gè)數(shù)據(jù)集,雖然數(shù)據(jù)提供者Jureczko[26]曾表示這些數(shù)據(jù)在數(shù)據(jù)搜集過(guò)程中可能存在不足,但這6個(gè)數(shù)據(jù)集已經(jīng)廣泛地應(yīng)用于軟件缺陷個(gè)數(shù)預(yù)測(cè)的應(yīng)用研究[8-13]中。因此,但本文堅(jiān)信本文的實(shí)驗(yàn)結(jié)果具有一定的可信性和可重復(fù)性。
2)本文研究的10個(gè)回歸算法均為較常見(jiàn)的回歸算法,這些算法全部基于Sklearn包實(shí)現(xiàn),算法參數(shù)使用Sklearn包中提供的默認(rèn)參數(shù),即本文沒(méi)有對(duì)回歸算法進(jìn)行任何優(yōu)化。
3)本文采用了平均缺陷百分比這個(gè)評(píng)價(jià)指標(biāo)來(lái)評(píng)價(jià)軟件缺陷個(gè)數(shù)預(yù)測(cè)模型的性能好壞,其他的一些指標(biāo)如代價(jià)有效性圖[27]也可以進(jìn)行考慮。
本文圍繞軟件缺陷個(gè)數(shù)預(yù)測(cè)展開(kāi)研究,針對(duì)建立軟件缺陷個(gè)數(shù)預(yù)測(cè)模型過(guò)程中回歸算法的選擇問(wèn)題,分析了10個(gè)常見(jiàn)的回歸算法對(duì)軟件缺陷個(gè)數(shù)預(yù)測(cè)模型預(yù)測(cè)結(jié)果的影響以及各個(gè)回歸算法之間的差異。研究結(jié)果表明:使用不同的回歸算法建立的軟件缺陷個(gè)數(shù)預(yù)測(cè)模型具有不同的預(yù)測(cè)效果,其中梯度Boosting回歸算法和貝葉斯嶺回歸算法預(yù)測(cè)效果更好。
在后續(xù)的工作中,將進(jìn)一步在更多的數(shù)據(jù)集上進(jìn)行分析,驗(yàn)證本文得出的實(shí)驗(yàn)結(jié)果的一般性;此外,將理論上分析梯度Boosting回歸算法和貝葉斯嶺回歸算法建立的缺陷數(shù)目預(yù)測(cè)模型預(yù)測(cè)效果較好的原因。
參考文獻(xiàn)(References)
[1] RAHMAN R, POSNETT D, DEVANBU P. Recalling the “imprecision” of cross-project defect prediction [C]// FSE ’12: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering. New York: ACM, 2012: Article No. 61.
[2] SHEPPERD M, BOWES D, HALL T. Researcher bias: the use of machine learning in software defect prediction [J]. IEEE Transactions on Software Engineering, 2014, 40(6): 603-616.
[3] 王星,何鵬,陳丹,等.跨項(xiàng)目缺陷預(yù)測(cè)中訓(xùn)練數(shù)據(jù)選擇方法[J].計(jì)算機(jī)應(yīng)用,2016,36(11):3165-3169. (WANG X, HE P, CHEN D, et al. Selection of training data for cross-project defect prediction [J]. Journal of Computer Applications, 2016, 36(11): 3165-3169.)
[4] 陳翔,顧慶,劉望舒,等.靜態(tài)軟件缺陷預(yù)測(cè)方法研究[J].軟件學(xué)報(bào),2016,27(1):1-25. (CHEN X, GU Q, LIU W S, et al. Survey of static software defect prediction [J]. Journal of Software, 2016,27(1):1-25.)
[5] YANG X, TANG K, YAO X. A learning-to-rank approach to software defect prediction [J]. IEEE Transactions on Reliability, 2015, 64(1): 234-246.
[6] FENTON N E, NEIL M. A critique of software defect prediction models [J]. IEEE Transactions on Software Engineering, 1999, 25(5): 675-689.
[7] MALHOTRA R. A systematic review of machine learning techniques for software fault prediction [J]. Applied Soft Computing, 2015, 27: 504-518.
[8] RATHORE S S, KUMAR S. A decision tree regression based approach for the number of software faults prediction [J]. ACM Sigsoft Software Engineering Notes, 2016, 41(1): 1-6.
[9] WANG J, ZHANG H. Predicting defect numbers based on defect state transition models [C]// ESEM ’12: Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement. New York: ACM, 2012: 191-200.
[10] AFZAL W, TORKAR R, FELDT R. Prediction of fault count data using genetic programming [C]// INMIC 2008: Proceedings of the 12th IEEE International Multitopic Conference. Piscataway, NJ: IEEE, 2008: 349-356.
[11] RATHORE S S, KUMAR S. Predicting number of faults in software system using genetic programming [J]. Procedia Computer Science, 2015, 62: 303-311.
[12] GAO K, KHOSHGOFTAAR T M. A comprehensive empirical study of count models for software fault prediction [J]. IEEE Transactions on Reliability, 2007, 56(2): 223-236.
[13] CHEN M, MA Y. An empirical study on predicting defect numbers [C]// Proceedings of the 27th International Conference on Software Engineering and Knowledge Engineering. Piscataway, NJ: IEEE, 2015:397-402.
[14] RATHORE S S, KUMAR S. An empirical study of some software fault prediction techniques for the number of faults prediction [J]. Soft Computing, 2016, 21(24): 7417-7434.
[15] WEYUKER E J, OSTRAND T J, BELL R M. Comparing the effectiveness of several modeling methods for fault prediction [J]. Empirical Software Engineering, 2010, 15(3): 277-295.
[16] ASAI H T S U K. Linear regression analysis with fuzzy model [J]. IEEE Transaction on System, Man and Cybernetics, 1982, 12(6): 903-907.
[17] XU M, WATANACHATURAPORN P, VARSHNEY P K, et al. Decision tree regression for soft classification of remote sensing data [J]. Remote Sensing of Environment, 2005, 97(3): 322-336.
[18] HOERL A E, KENNARD R W. Ridge regression: biased estimation for nonorthogonal problems [J]. Technometrics, 1970, 12(1): 55-67.
[19] JACOBS J P. Bayesian support vector regression with automatic relevance determination kernel for modeling of antenna input characteristics [J]. IEEE Transactions on Antennas and Propagation, 2012, 60(4): 2114-2118.
[20] BASAK D, PAL S, PATRANABIS D C. Support vector regression [J]. Neural Information Processing — Letters and Reviews, 2007, 11(10): 203-224.
[21] ELITH J, LEATHWICK J R, HASTIE T. A working guide to boosted regression trees [J]. Journal of Animal Ecology, 2008, 77(4): 802-813.
[23] ALTMAN N S. An introduction to kernel and nearest-neighbor nonparametric regression [J]. The American Statistician, 1992, 46(3): 175-185.
[24] CARPENTER B. Lazy sparse stochastic gradient descent for regularized multinomial logistic regression [R]. [S.l.]: Alias-i, Inc., 2008: 1-20.
[25] HUBER P J. Robust regression: asymptotics, conjectures and Monte Carlo [J]. The Annals of Statistics, 1973, 1(5): 799-821.
[26] JURECZKO M, MADEYSKI L. Towards identifying software project clusters with regard to defect prediction [C]// PROMISE ’10: Proceedings of the 6th International Conference on Predictive Models in Software Engineering. New York: ACM, 2010: Article No. 9.
[27] JIANG T, TAN L, KIM S. Personalized defect prediction automated software engineering [C]// ASE 2013: Proceedings of the IEEE/ACM 28th International Conference on Automated Software Engineering. Piscataway, NJ: IEEE, 2013: 279-289.
FUZhongwang, born in 1993, M. S. candidate. His research interests include data mining, software engineering.
XIAORong, born in 1980, Ph. D. candidate, lecturer. Her research interests include software engineering.
YUXiao, born in 1994, Ph. D. candidate. His research interests include software engineering, deep learning.
GUYi, born in 1996, undergraduate. His research interests include machine learning.