999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

工作量感知軟件缺陷預測中偏斜分布的影響及測試評估方法

2024-07-17 00:00:00郭育晨朱曉燕
西安交通大學學報 2024年7期

.

收稿日期:2024-01-31。

作者簡介:郭育晨(1990—),男,博士生;朱曉燕(通信作者),女,副教授,博士生導師。

基金項目:國家自然科學基金資助項目(92046009)。

網絡出版時間:2024-04-17""" 網絡出版地址:https:∥link.cnki.net/urlid/61.1069.T.20240416.1001.002

摘要:針對工作量感知軟件缺陷預測中傳統模型測試評估方法存在偏差這一問題,采用偏斜分布的偏度作為數值特征,研究了3種主要測試評估方法的測試集在工作量偏度的偏差和與其對應的估計誤差,并基于偏度偏差較小的采樣余量方法,提出一種改進方法——后采樣方法,所提后采樣方法能夠保持測試集的類標簽比例以避免生成無效測試集。研究結果表明:最常用的十折交叉驗證方法偏度偏差最大,其估計誤差也最大;與十折交叉驗證相比,改進方法性能估計誤差減少約4.9%~26.9%;與采樣余量方法相比,改進方法不會產生無效測試集,并證明了減小測試集偏度偏差以減少估計誤差的有效性。所提后采樣方法為工作量感知軟件缺陷預測提供了一種更可靠的測試評估方法,能夠更準確地評估模型性能。

關鍵詞:軟件缺陷預測;工作量感知;偏斜分布;測試評估方法

中圖分類號:TP311.5" 文獻標志碼:A

DOI:10.7652/xjtuxb202407019" 文章編號:0253-987X(2024)07-0203-11

Impact of Skewed Effort Distribution in Effort-Aware Software Defect Prediction and Its Validation Techniques

GUO Yuchen, ZHU Xiaoyan

(School of Computer Science and Technology, Xi’an Jiaotong University, Xi’an 710049, China)

Abstract:To handle the bias in traditional model validation methods for effort-aware software defect prediction, the skewness of skewed distribution is used as numeric feature to investigate the bias of effort skewness and estimation bias in the datasets of three major validation techniques. Based on out-of-sample method which is less biased in effort skewness, a refined hold-to-sample method is proposed, which maintains the class label proportion of the testing data to avoid generating invalid testing data. Results show that the commonly used 10-fold cross-validation method has the greatest bias in effort skewness and the greatest estimation bias. In comparison with this method, our refined method reduces the evaluation bias by 4.9%—26.9%; in comparison with the out-of-sample, it does not generate invalid testing data. Experiments confirm the effectiveness of reducing the evaluation bias by decreasing bias of skewness in testing data. The hold-to-sample method provides a more reliable validation method for effort-aware software defect prediction and can evaluate model performance more accurately.

Keywords:software defect prediction; effort-aware; skewed effort; validation method

在軟件開發和維護過程中,與軟件缺陷相關的工作量占據了軟件工程成本的很大一部分。據估計,定位、修復軟件缺陷(defect,也稱為bug)及其相關工作占總開發成本的40%~80%[1]。軟件缺陷預測希望通過引入機器學習技術,對歷史開發數據進行數據挖掘,從而實現預測和預警潛在缺陷,幫助軟件開發人員合理分配開發資源和工作量,以節省工程成本。

傳統軟件缺陷預測研究把軟件缺陷預測看作一個分類問題[2],應用機器學習中的分類算法對軟件開發過程中的一些特征數據進行學習,如軟件代碼模塊的結構和特征信息、軟件版本管理倉庫的提交特征數據、缺陷報告等。分類算法在軟件特征數據上訓練之后,便可以對潛在的軟件缺陷發出預警,預測新的軟件模塊(module)是否含有缺陷。然而,這樣二分類的預測預警并沒有考慮到在實際中的效率問題,因此有了工作量感知(effort-aware)軟件缺陷預測。

工作量感知缺陷預測要求使用更少的工作量來發現更多的軟件缺陷。這不僅要求預測是否有缺陷,還要求根據檢查潛在缺陷工作量的工效比進行排序[3],以此提高找到軟件缺陷的效率。比如文獻[4]中提出的工作量感知線性回歸(EALR)方法,用20%的工作量就可以找到35%的缺陷。文獻[5]中提出的雙層集成學習(TLEL)方法,只用20%的工作量就能找到70%的缺陷。可見,只要根據預測模型給出的排序來檢查軟件模塊,就可以用有限的測試資源找到更多潛在的軟件缺陷,從而提高軟件缺陷預測的效率和實用性。

近些年來,學者們對工作量感知缺陷預測的關注度逐漸提升[6],更多的軟件缺陷預測研究在評價模型預測性能時使用了工作量感知性能指標[6],一些工作量感知缺陷預測模型被提出[3-5, 7-11],但在單個數據集上評估軟件缺陷預測模型性能時,仍然沿用機器學習領域中的經典測試評估方法,如十折交叉驗證[12]。這是因為經典測試評估方法常用來評估分類性能。文獻[13]研究了多種測試評估方法對軟件缺陷預測模型分類性能估計的準確度和偏差,并推薦采樣余量(out-of-sample)方法以得到更好的綜合評估準確度。根據文獻[6,12]的統計,經典的交叉驗證(cross-validation)是使用最多的測試評估方法。

源自機器學習領域的測試評估方法并未考慮工作量感知缺陷預測的偏斜分布問題。本文在研究偏斜分布對工作量感知預測模型性能的影響時發現,十折交叉驗證從原始數據集上生成的測試集的工作量數值分布,往往和原始數據的工作量數值分布偏差較大。這種分布上的差異,將會導致對工作量感知缺陷預測模型的測試評估結果不夠準確。文獻[14]證實了偏斜分布對模型預測性能有不小的影響。數值化這種影響的大小,正是本文的研究動機。

現有研究較少考慮到不同測試評估方法生成的測試集,導致其工作量的偏差會有很大不同。從這一點出發,本文用偏度(skewness)作為工作量偏斜分布的特征,數值化研究測試集和原始數據集的偏差。本文假設當測試集工作量的偏度與原始數據集工作量的偏度相差很大,那么在測試集上對模型排序性能的測試評估將會不準確。基于這個假設,開展了研究并在真實數據集上驗證本文的假設。

1" 工作量的偏斜分布

1.1" 真實數據集工作量的分布

在工作量感知軟件缺陷預測中,處理每一個缺陷預警的工作量(effort)是不同的。如果把工作量數值分布可視化,就會發現工作量數值分布是一個天然向左的偏斜分布,如圖1所示。這是因為大部分軟件模塊并不需要很多的工作量,只有少數軟件模塊需要非常多的工作量。

在軟件缺陷預測中一般用軟件模塊尺寸,即代碼行數近似估計工作量,這是基于越大的軟件模塊需要更多的工作量這一假設。文獻[15]研究了復雜模型計算的工作量,并用代碼行數近似相比,發現應用于工作量感知軟件缺陷預測中結果是相似的。因此工作量感知軟件缺陷預測的研究[3-5, 8-11, 13, 15-17]基本都采用代碼行數(line of codes, LOC)或者修改行數(churn)來估計工作量。

從圖1可以觀察到,大部分模塊比較小,需要檢查的代碼在180行以內,聚集在整體分布的左側,整個分布就向左偏斜。采用統計學中的偏度來度量工作量分布的偏斜程度[18],計算公式如下

Ssk=1N∑Ni=1(xi-)3σ(1)

式中:N是工作量數據個數;x1,x2,…,xN是工作量數據;是工作量的均值;σ是工作量的標準差;Ssk表示偏度計算值。

由式(1)計算可得圖1分布的偏度是3.2,偏度為正,表示向左偏斜。偏度越大,偏斜程度越高;偏斜程度越高,軟件模塊的分布就在左側越集中。

表1統計了本文使用的數個軟件缺陷數據集工作量的偏度。從表1可以看到,缺陷數據集中工作量分布的偏斜程度差異很大,偏度取值從1.4到141.3,中位數為9.7。可見,大多數缺陷預測數據集中工作量的數值分布是高度向左偏斜的偏斜分布。

1.2" 測試集工作量的偏斜分布

在單個數據集上測試評估預測模型性能時,要從原數據集上劃分或者采樣生成訓練集和測試集,故測試集的生成方法是由具體的測試評估方法決定的。測試集工作量的分布是否靠近原始數據集也是由具體的測試評估方法決定的。雖然文獻[13]研究了更多的測試評估方法,但是那些方法在軟件缺陷預測的研究中并不常見。本文采用工作量感知軟件缺陷預測中最常見的3種測試評估方法——十折交叉驗證、五折交叉驗證和采樣余量方法進行研究。

根據文獻[12]的統計,經典的十次十折交叉驗證(10x10-fold cross-validation)是使用最多的測試評估方法。十折交叉驗證將原始數據集均勻劃分為10個子集,將每個子集輪流作為測試集,剩下的9個子集組成訓練集來測試評估性能。一輪10次,再重復10輪,就是最常用的十次十折交叉驗證。最終估計的性能是100次性能得分的平均值。

近幾年也開始有研究[19]使用文獻[13]推薦的采樣余量測試評估方法,因為其在評估分類性能時的綜合準確度最好[13]。采樣余量基于重復抽樣法(boostrap),通過對原始數據集進行有放回的采樣生成訓練集,而測試集則是由未被采樣到、不在訓練集中的數據條目構成的,因此測試集的規模不固定,平均規模為原始數據集的36.8%[13]。

除了在單個數據集上測試評估預測性能,參數調整是測試評估方法的另一個應用場景。比如文獻[20]使用網格搜索(grid search)全自動參數優化方法,具體采用五折交叉驗證來評估性能和優化參數[21]。五折交叉驗證和十折交叉驗證類似,將原始數據集均勻劃分為5個子集,每個子集都會作為測試集一次,所以測試集的規模是原始數據集的20%。類似地,文獻[17]在調整參數時使用采樣余量方法,驗證評估方法的準確度將會直接影響模型參數的設置。

本文研究十折交叉驗證、五折交叉驗證和采樣余量3種方法生成的測試集的偏度,其測試集的規模分別是原始數據集的10%、20%和大約36.8%。分別用3種測試評估方法在一個真實數據集上各自生成100個測試集,3種方法的100測試集的偏度分布密度見圖2。圖中的豎線是原數據集的工作量偏度,即7.5。只有當測試集的偏度靠近豎線時,測試集的工作量偏度才會接近原數據集的工作量偏度。

圖2中紅色分布是十折交叉驗證,可以看到其測試集的工作量偏度在2.5~5.0這個區間分布密度最高,但是這個區間沒有包含原始數據集的偏度7.5,說明十折交叉驗證測試集偏斜程度的差異較大。綠色是五折交叉驗證,和十折交叉驗證相比更接近7.5的豎線,但其密度分布較為扁平。藍色的是采樣余量方法,在豎線左邊附近有較高的峰,說明采樣余量方法生成的測試集最靠近原始數據集工作量的偏斜分布。3種方法的測試集在工作量偏度這個指標上有明顯區別,說明研究測試集的偏度有其理論指導意義。

1.3" 改進的采樣辦法

本文在實驗中發現,雖然采樣余量方法的測試集工作量的偏斜程度和原始數據集相差較小,但是采樣余量方法有概率生成無效測試集。無效測試集是指測試集完全不包含缺陷數據,缺陷數目為0,此時無法計算缺陷的召回率等性能指標。因此本文提出一種改進方法,稱為后采樣(hold-to-sample)方法。

在采樣余量方法中,通過對原始數據集進行有放回的采樣來生成訓練集,訓練集規模和原數據集一致;測試集由未被采樣到、不在訓練集中的數據條目構成。由于測試集是被動生成的,因此規模不固定(平均規模36.8%[13]),同時缺陷數據的比例也不穩定。由于軟件缺陷預測數據集的類標簽本身是不均衡的[22],缺陷數據是少數類,因此當測試集的缺陷數據條目數減少到0時,對工作量感知缺陷預測來說就是無效數據集。本文實驗發現,采樣余量方法有一定概率產生無效數據集。

針對此問題,本文做出改進:把測試集的生成方式從被動生成改為主動劃分。先主動劃分測試集,然后采樣生成與采樣余量方法同樣的訓練集。本文稱這種方法為后采樣的擬重復抽樣法(boostrap)方法,具體步驟如下。

步驟1" 按照36.8%的規模,從原數據集中提前劃分測試集,同時保持類標簽比例和原始數據集一致,這樣不僅可以避免生成無效數據集,還會讓測試結果更準確。

步驟2" 對剩下的63.2%的數據通過有放回的采樣進行補充,補充到和原始數據集規模一致。

在采樣余量方法中,訓練集的規模和原始數據集規模一致,由大約63.2%(非重復)的數據條目和重復條目組成。本文提出的后采樣方法的訓練集由63.2%的非重復數據條目和補充的重復條目組成。兩個方法的訓練集基本保持一致。

2nbsp; 實驗方法

2.1" 數據集

本文使用的軟件缺陷預測數據集來自多個研究和數據集倉庫,分別是PROMISE數據集[23]、AEEEM數據集[24]、文獻[25]中Tian等提供的JiT數據集、文獻[4]中Kamei等提供的JiT數據集、文獻[16]中Ni等提供的JavaScript數據集,共計120個數據集。實驗中,PROMISE數據集有部分數據集非常小,僅為10%規模的測試集,數據條目數不足10條,作為測試數據樣本量太少。按照數據集規模要求,本文排除了數據條目不足100條數據的數據集。另外,在有監督框架實驗中,bugzilla、pdf.js、postgres、Mylyn共4個數據集無法生成滿足條件的劃分,因此未在有監督框架實驗中使用,最終使用了95個數據集。

2.2" 工作量感知性能指標

本文使用工作量感知缺陷預測中常用的20%工作量召回率和歸一化工效曲線下面積作為實驗研究的工作量感知性能指標。其中,20%工作量召回率度量的是20%工作量能夠找到的缺陷模塊占總缺陷模塊數的占比,記作R20

R20=k/K(2)

式中:k是用20%工作量發現的缺陷模塊數;K是缺陷模塊的總數。R20越高說明預測性能越好,能找到更多的缺陷。R20有時也被記作Acc性能指標[4, 8]。文獻[3]用到的性能指標20%工作量缺陷檢出率(PofB20)和R20類似,計算的是缺陷數的召回率,適用于一個模塊含多個缺陷的情況。如果每個模塊最多含有一個缺陷,那么PofB20和R20是相等的。但是有的數據集只有缺陷與否的類標簽數據,缺陷數不是所有數據集都有,為保持一致,本文選擇使用R20。

歸一化工效曲線下面積計算的是工效曲線的曲線下面積。圖3是一個工效曲線的例子,圖中藍色的線代表模型預測排序的工效曲線,紅色的是最差解,綠色的是最優解。當模型給出排序預測之后,按照預測順序檢查軟件模塊,隨著工作量的增加,被找到的缺陷也會增加,將這個過程在坐標軸上畫成曲線即為工效曲線。

歸一化工效曲線下面積(Popt)的計算過程為:首先計算預測模型工效曲線的曲線下面積Sm,然后分別計算最優解和最差解的曲線下面積Sopt和Sworst,最后用如下公式計算得到

Popt=1-Sopt-SmSopt-Sworst(3)

可以看到,Popt是一個歸一化的性能指標,取值0~1。

2.3" 工作量感知缺陷預測的基線模型

本文使用無監督基線模型ManualUP[9]和有監督基線模型[3,11]先分類后排序方法(classify-before-sorting,CBS+)作為被評估的預測模型。這兩個模型因為易于實現和性能優異,在近年的研究[3,15]中仍然是最主要的基線模型。準確評估這兩個基線模型的性能,是比較其他工作量感知軟件缺陷預測模型的基礎。

無監督模型ManualUP根據代碼行數對軟件模塊進行排序和預測。文獻[16]使用的無監督基線模型Churn可以視作ManualUP的等價模型。當軟件模塊粒度為提交(commit)時,提交的代碼行數指的是修改行數。在預測時,兩個模型用同樣的公式按照代碼行數給出排序。

有監督模型CBS+是文獻[11]提出的方法,在分類結果的基礎上對軟件模塊進行排序預測。文獻[11]中使用邏輯回歸(LR)算法訓練分類器,文獻[3]提出用隨機森林(RF)算法訓練分類器性能更好,本文使用的是CBS+RF版本。

文獻[11]中提到無監督模型會受到工作的偏斜分布的影響,文獻[14]發現有監督模型的預測性能也會受到工作的偏斜分布的影響。因此不論有監督模型還是無監督模型,工作量感知的缺陷預測模型都會受工作量偏斜分布的影響。

2.4" 實驗設計

無監督實驗框架只適用于評估無監督模型ManualUP,其不需要訓練數據,而是將整個數據集用作測試集,因此可以排除訓練數據和目標數據不同所引入的誤差,是理想化的實驗框架。

有監督實驗框架參考了文獻[12]的實驗設計,更符合實際使用場景,可用于評估有監督模型和無監督模型。有監督實驗框架設計如圖4所示。將軟件缺陷數據集劃分為訓練數據和目標數據,在訓練數據上用評測估計方法對模型性能進行估計,在目標數據上測試預測模型的實際性能,對比估計性能和實際性能即可計算估計誤差。

有監督框架劃分訓練數據和目標數據的方法為:在保持類標簽比例不變的情況下,隨機將軟件缺陷數據集分成50%規模的兩個部分。此時,為了控制實驗誤差,限制劃分的訓練數據和目標數據偏度的偏差不大于6或者原數據集偏度的30%,否則重新劃分數據集。如果不能在有限次劃分生成滿足條件的數據集,則原數據集不納入實驗。不同于有監督框架,無監督框架的訓練數據和目標數據都是原數據集,沒有開始的劃分步驟。

在應用評測估計方法在訓練數據上評估基線模型性能時,兩種框架實驗都進行同樣的單組實驗。單組實驗模擬實際應用的場景,如常用的十次十折交叉驗證,會生成共計100個測試集,對模型性能的估計值則是這100個數據集上性能得分的平均值。本文實驗對標實際的使用場景,用4種測試評估方法分別生成100個測試集,作為一組實驗,具體配置見表2。

由于無監督實驗框架和有監督實驗框架都有隨機劃分的誤差,因此兩種實驗都對單組配置進行100組重復,而實驗結果則是對100組的估計誤差取平均值。

2.5" 誤差計算和統計方法

本文一共計算3種估計誤差:偏度的偏差、R20的誤差和Popt的誤差。偏度是工作量偏斜分布的偏斜特征值,計算公式如下

Ebias_sk=Ssk_o-Ssk_test(4)

式中:Ssk_o是預測目標數據工作量的偏度;Ssk_test是測試集工作量的偏度。偏度的誤差是兩個偏度之差的絕對值。

類似地,性能指標R20的誤差計算公式如下

Ebias_R20=R20_o-R20_test(5)

式中:R20_o是預測目標數據的R20性能得分;R20_test是在一組實驗即100個測試集上R20得分的平均值。與偏度的誤差不同,這里取平均值是和實際應用保持一致,使用一組實驗的均值作為性能得分的估計值,此時R20的誤差計算的是估計值和真實值之差的絕對值。

同理,Popt的誤差計算公式如下

Ebias_Popt=Popt_o-Popt_test(6)

式中:Popt_o是預測目標數據的Popt得分;Popt_test是在一組實驗上Popt得分的平均值。此時誤差計算的是估計值和真實值之差的絕對值。

統計分析方面,使用勝平負計數在每個數據集上進行成對比較,即用提出的后采樣方法和其他3種方法相比,誤差更小為勝,誤差相等為平,誤差更大為負。采用Wilcoxon符號秩檢驗[26]對觀察到的結果進行統計檢驗。為了降低多次統計檢驗而累積的統計風險,對表格中所有檢驗的p值應用Benjamini-Hochberg(BH)方法[27]進行矯正,以控制和減少假陽性率。

3" 結果與分析

3.1" 測試集工作量的偏差

將無監督框架和有監督框架的實驗各自進行100組來評估4個測試評測方法的偏差和估計誤差。每個測試方法在100組實驗生成1萬個測試集,測試集工作量偏度的偏差結果如圖5的箱線圖所示。箱線圖中長方形的上、下邊分別代表上四分位數和下四分位數,中線是中位數,長方形與向上、下延伸的線表示最大值到最小值的范圍,其余點表示離群值。實驗結果按照數據集分成5組,組名是其數據來源。

從圖5可以觀察到,紅色的無監督框架實驗結果和藍色的有監督框架實驗結果十分相近,在5個分組都呈現了相同的規律:十折交叉驗證的箱圖更高,偏差最大;五折交叉驗證次之;采樣余量和后采樣方法的箱圖最低,偏差最小。

無監督框架實驗計算的是測試集和原數據集的偏差,有監督框架實驗計算的是測試集和預測目標數據工作量的偏差。從圖5可以看到,二者偏差相近、結論相同。這是因為訓練數據(原數據)和目標數據偏度比較接近,實際應用中也建議選取和目標數據接近的訓練數據。有監督框架實驗結果的統計量見表3。

表3的計算結果與圖5一致,偏度的偏差由大到小分別是十折交叉驗證、五折交叉驗證、采樣余量方法和后采樣方法。其中,偏差最高的十折交叉驗證的平均偏差為10.147,約為后采樣方法偏差的1.8倍。勝平負計數是把后采樣方法和其他3種方法在每個數據集上一一對比。從表3可以看到,后采樣方法在95個數據集上的誤差都比十折交叉驗證和五折交叉驗證小(勝代表誤差更小)。而對比采樣余量方法,在95個數據集中的75個數據集上后采樣方法偏差更小。統計檢驗的p值均小于0.001,說明有統計顯著性。

總之,十折交叉驗證生成的測試集工作量分布的偏差最大,五折交叉驗證次之,采樣余量方法和后采樣方法的偏差最小。

3.2" 無效測試集的問題

實驗發現,采樣余量方法生成的部分測試集無法計算性能指標R20,因為測試集包含有0個缺陷,按照式(2)計算召回率會發生錯誤。在無監督框架實驗中,采樣余量方法一共產生了86個沒有缺陷數據的無效測試集。

在有監督框架實驗中,除了采樣余量方法,十折交叉驗證也生成了無效測試集。從原理上來說,如果數據集含有的缺陷數少于10個,那么必然不能保證十折中的每一折都有缺陷數據。PROMISE數據倉庫中的camel-1.0、ivy-1.4、jedit-4.3、synapse-1.0這4個數據集的缺陷數目全部少于20個。因此,在有監督框架實驗中,劃分50%規模的數據集包含少于10個缺陷,以保證十折交叉驗證產生不含缺陷的無效測試集。

表4為4種測試評估方法生成的無效測試集。根據表4,本文更推薦五折交叉驗證和后采樣方法。

3.3" 對基線模型ManualUP的估計誤差

本文對基線模型ManualUP分別進行了無監督框架實驗和有監督框架實驗。4種評測估計方法對性能指標R20的估計誤差如圖6所示。

從圖6可見,無監督框架實驗的誤差總體比有監督框架實驗低很多,這是因為無監督框架排除了訓練數據和目標數據不同所引入的誤差。無監督框架更能理想化、結果更純凈,而有監督框架更符合實際應用場景,對比二者可以更清楚地觀察到由偏度偏差造成的估計誤差。

圖6中紅色箱圖是無監督框架的結果。在全部5個分組中,十折交叉驗證的箱圖最高,五折交叉驗證次之,采樣余量和后采樣方法最低。十折交叉驗證的誤差平均比后兩種方法高0.02左右。

圖6中藍色箱圖是有監督框架實驗的結果。在除了JiT數據集[4]的4個數據集上,十折交叉驗證的誤差最高,五折交叉驗證次之;采樣余量和后采樣方法誤差最低。在JiT數據集[4]上4種方法區別較小,十折交叉驗證的中位數線稍高,但是上四分位數線更低。這可能是因為4種方法在JiT數據集[4]上偏度的偏差都很大(平均大于20)造成的。

在其他4個數據集上,十折交叉驗證的誤差最大,比采樣余量和后采樣方法的估計誤差高0.02左右,這個差值和無監督框架實驗結果相近。以實際應用為準,計算了有監督框架實驗的統計量,包括誤差的均值、勝平負計數和無效測試集的數目,結果見表5。

從表5可知,十折交叉驗正的誤差最大,平均為0.0848,后采樣方法的誤差和采樣余量方法相近,平均為0.0659。這個結果和從圖6一致。從表5的勝平負計數可以看到,后采樣方法和十折交叉驗證、五折交叉驗證相比,分別在79、59個數據集上勝出,說明在超過半數以上的數據集上誤差更小。統計檢驗的p值在矯正前和矯正后也均小于0.001,說明有顯著差異;采樣余量方法相比后采樣方法p值較大,可以認為沒有統計意義。后采樣方法對R20的估計誤差和十折交叉驗證相比誤差減少了約22.2%。

圖7為4個測試評估方法對性能指標Popt的估計誤差。可以觀察到和圖6類似的情況:①無監督框架實驗的誤差絕對值比有監督框架實驗誤差低很多;②4種方法的誤差從高到低為十折交叉驗證、五折交叉驗證、采樣余量方法和后采樣方法;③在JiT數據集[4]上,有監督框架實驗4種方法差別較小;④無監督框架和有監督框架實驗中,采樣余量方法和后采樣方法相比十折交叉驗證的誤差低0.01左右。以實際應用為準,表6列出了有監督框架實驗的結果。

從表6可以看出,十折交叉驗證的誤差最大,平均為0.0454;后采樣的誤差小,平均為0.0332,相比十折交叉驗證,誤差減少大約26.9%。在一對一對比中,后采樣方法和其他3種方法相比,分別在88、82和52個數據集上勝出,說明后采樣方法在超過半數以上的數據集上誤差更小。后采樣方法和十折交叉驗證、五折交叉驗證相比,統計檢驗的p值在矯正前和矯正后均小于0.001,說明有顯著差異。

綜合來看,測試集偏度的偏差最大的十折交叉驗證,其對無監督基線模型ManualUP性能估計的誤差也是最大的。這驗證了本文的假設,即如果測試集偏度的偏差很大,那么在測試集上對模型排序性能的測試評估將會不準確。后采樣方法和十折交叉驗證相比,在R20和Popt性能指標上的誤差分別減少了22.2%和26.9%。

3.4" 對基線模型CBS+的估計誤差

有監督模型CBS+是工作量感知缺陷預測中另一個主要的基線模型。不同于ManualUP模型,有監督模型CBS+僅適用于有監督框架的實驗。

圖8展示了4個測試評估方法對模型CBS+的R20性能的估計誤差。實驗結果的箱線圖被按照數據集分成5個組,可以觀察到5個組的結果有著相同的規律:十折交叉驗證的誤差最大,五折交叉驗證次之,采樣余量方法和后采樣方法的誤差最小。這個順序與偏度偏差的結果一致,說明偏差較大時,在性能指標R20上的估計誤差是更大的。與圖8對應的統計結果見表7。

表7的統計結果與圖8一致。十折交叉驗證的誤差最大,平均為0.1033;后采樣的誤差最小,平均為0.0856,相比十折交叉驗證,誤差減少大約17.1%。在一對一勝平負計數中,后采樣方法和其他3種方法相比,分別在74、77和56個數據集上勝出,都超過了半數。統計檢驗的p值在矯正前和矯正后全部小于0.05,有統計顯著性。

圖9展示了對Popt性能估計誤差的箱圖。可以看到,在PROMISE和JiT數據集[4]上,4種方法的估計誤差仍然符合前面結果的的規律;在AEEEM數據集中4種方法差別很小;在JiT數據集[25]中,后采樣和采樣余量方法和中位數高度接近。在JiT數據集[25]和JavaScript數據集中,十折交叉驗證誤差的上四分位數更高。總的來說,十折交叉驗證的誤差更大,其他3種方法則相差不大,這可能是因為CBS+模型在性能指標Popt上的誤差更高更不穩定造成的。對比同樣是Popt誤差的圖7和圖9可以發現,圖9的誤差要比圖7高,同時箱體更長。更高的誤差,意味著和偏差相關的誤差在總體誤差中所占比例相對減小,結果差異不再顯著。此時4種方法的結果相近,表8中的統計量證明了這一點。

從表8可以觀察到,十折交叉驗證的誤差最大,p值在矯正前后都小于0.05,有統計顯著性,說明十折交叉驗證的誤差比后采樣方法的誤差大。后采樣方法和其他兩種方法相比p值較大,沒有明顯差異。后采樣方法和十折交叉驗證相比,均值誤差減少約4.9%。總的來說,偏差最大的十折交叉驗證,估計誤差仍然最大。

4" 結" 論

工作量感知缺陷預測的性能會受到工作量數值分布的影響,而傳統的測試評估方法在劃分或者產生測試集時并未考慮到測試的工作量分布,因此最常用的十折交叉驗證方法劃分的測試集往往和原始數據集在工作量的數值分布差異較大。

本文假設,如果測試集工作量的偏度與原始數據集的工作量的偏度相差很大,那么在測試集上對模型排序性能的測試評估將會不準確。為了驗證這一點,設計了無監督框架實驗和有監督框架實驗,用來評測估計基線模型ManualUP和CBS+的預測性能,以計算測試集工作量的偏差和對模型性能的估計誤差。實驗比較了4種測試評估方法,包括十折交叉驗證、五折交叉驗證、采樣余量方法和本文提出的后采樣方法。實驗結果發現,最常用的十折交叉驗證的測試集偏差最大,同時估計誤差也是最大的,而采樣余量方法和后采樣方法的測試集偏差較小,綜合來看估計誤差也是更小的。這個結果驗證了本文的假設。本文提出的后采樣方法和十折交叉驗證相比,誤差減少約4.9%~26.9%;和采樣余量方法相比,不會產生無效數據集。

本文結果對實際應用工作量感知軟件缺陷預測有以下3點貢獻:①實驗驗證了最常用的十折交叉驗證在評估主要基線模型ManualUP和CBS+的工作量感知預測性能時,估計誤差較大;②發現文獻[12]推薦的采樣余量方法會生成無效測試集;③所提后采樣方法能夠更準確地估計基線模型的性能,可作為進一步比較其他工作量感知軟件缺陷預測模型的基礎。

參考文獻:

[1]HAMILL M, GOSEVA-POPSTOJANOVA K. Analyzing and predicting effort associated with finding and fixing software faults [J]. Information and Software Technology, 2017, 87: 1-18.

[2]LESSMANN S, BAESENS B, MUES C, et al. Benchmarking classification models for software defect prediction: a proposed framework and novel findings [J]. IEEE Transactions on Software Engineering, 2008, 34(4): 485-496.

[3]YU Xiao, RAO Jiqing, LIU Lei, et al. Improving effort-aware defect prediction by directly learning to rank software modules [J]. Information and Software Technology, 2024, 165: 107250.

[4]KAMEI Y, SHIHAB E, ADAMS B, et al. A large-scale empirical study of just-in-time quality assurance [J]. IEEE Transactions on Software Engineering, 2013, 39(6): 757-773.

[5]YANG Xinli, LO D, XIA Xin, et al. TLEL: a two-layer ensemble learning approach for just-in-time defect prediction [J]. Information and Software Technology, 2017, 87: 206-220.

[6]劉旭同, 郭肇強, 劉釋然, 等. 軟件缺陷預測模型間的比較實驗:問題、進展與挑戰 [J]. 軟件學報, 2023, 34(2): 582-624.

LIU Xutong, GUO Zhaoqiang, LIU Shiran, et al. Comparing software defect prediction models: research problem, progress, and challenges [J]. Journal of Software, 2023, 34(2): 582-624.

[7]MENDE T, KOSCHKE R. Effort-aware defect prediction models [C]//2010 14th European Conference on Software Maintenance and Reengineering. Piscataway, NJ, USA: IEEE, 2010: 107-116.

[8]YANG Yibiao, ZHOU Yuming, LIU Jinping, et al. Effort-aware just-in-time defect prediction: simple unsupervised models could be better than supervised models [C]//Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering. New York, USA: Association for Computing Machinery, 2016: 157-168.

[9]ZHOU Yuming, YANG Yibiao, LU Hongmin, et al. How far we have progressed in the journey?: an examination of cross-project defect prediction [J]. ACM Transactions on Software Engineering and Methodology, 2018, 27(1): 1-51.

[10]NI Chao, XIA Xin, LO D, et al. Revisiting supervised and unsupervised methods for effort-aware cross-project defect prediction [J]. IEEE Transactions on Software Engineering, 2022, 48(3): 786-802.

[11]HUANG Qiao, XIA Xin, LO D. Revisiting supervised and unsupervised models for effort-aware just-in-time defect prediction [J]. Empirical Software Engineering, 2019, 24(5): 2823-2862.

[12]蔡亮, 范元瑞, 鄢萌, 等. 即時軟件缺陷預測研究進展 [J]. 軟件學報, 2019, 30(5): 1288-1307.

CAI Liang, FAN Yuanrui, YAN Meng, et al. Just-in-time software defect prediction: literature review [J]. Journal of Software, 2019, 30(5): 1288-1307.

[13]TANTITHAMTHAVORN C, MCINTOSH S, HASSAN A E, et al. An empirical comparison of model validation techniques for defect prediction models [J]. IEEE Transactions on Software Engineering, 2017, 43(1): 1-18.

[14]GUO Yuchen, SHEPPERD M, LI Ning. Poster: bridging effort-aware prediction and strong classification-a just-in-time software defect prediction study[C]//2018 IEEE/ACM40th International Conference on Software Engineering: Companion (ICSE-Companion). Piscataway, NJ, USA: IEEE, 2018: 325-326.

[15]SHIHAB E, KAMEI Y, ADAMS B, et al. Is lines of code a good measure of effort in effort-aware models? [J]. Information and Software Technology, 2013, 55(11): 1981-1993.

[16]NI Chao, XIA Xin, LO D, et al. Just-in-time defect prediction on JavaScript projects: a replication study [J]. ACM Transactions on Software Engineering and Methodology, 2022, 31(4): 76.

[17]LI Fuyang, YANG Peixin, KEUNG J W, et al.Revisiting ‘revisiting supervised methods for effort-aware cross-project defect prediction’ [J]. IET Software, 2023, 17(4): 472-495.

[18]KING R S, JULSTROM B. Applied statistics using the computer [M]. Palo Alto, CA, USA: Distributed by Mayfield Pub. Co., 1982.

[19]GONG Lina, ZHANG Haoxiang, ZHANG Jingxuan, et al. A comprehensive investigation of the impact of class overlap on software defect prediction [J]. IEEE Transactions on Software Engineering, 2023, 49(4): 2440-2458.

[20]ZHANG Tanghaoan, YU Yue, MAO Xinjun, et al. FENSE: a feature-based ensemble modeling approach to cross-project just-in-time defect prediction [J]. Empirical Software Engineering, 2022, 27(7): 162.

[21]PEDREGOSA F, VAROQUAUX G, GRAMFORT A, et al. Scikit-learn: machine learning in python [J]. The Journal of Machine Learning Research, 2011, 12: 2825-2830.

[22]SONG Qinbao, GUO Yuchen, SHEPPERD M. A comprehensive investigation of the role of imbalanced learning for software defect prediction [J]. IEEE Transactions on Software Engineering, 2019, 45(12): 1253-1269.

[23]BOETTICHER G. The PROMISE repository of empirical software engineering data [EB/OL]. [2024-01-01]. http://promisedata.org/repository.

[24]D’AMBROS M, LANZA M, ROBBES R. Evaluating defect prediction approaches: a benchmark and an extensive comparison [J]. Empirical Software Engineering, 2012, 17(4): 531-577.

[25]TIAN Yuli, LI Ning, TIAN J, et al. How well just-in-time defect prediction techniques enhance software reliability?[C]//2020 IEEE 20th International Conference on Software Quality, Reliability and Security (QRS). Piscataway, NJ, USA: IEEE, 2020: 212-221.

[26]HOLLANDER M, WOLFE D A. Nonparametric statistical methods [M]. New York: Wiley, 1973: 503.

[27]BENJAMINI Y, HOCHBERG Y. Controlling the 1 discovery rate: a practical and powerful approach to multiple testing [J]. Journal of the Royal Statistical Society: Series B" Methodological, 1995, 57(1): 289-300.

(編輯" 亢列梅)

主站蜘蛛池模板: 全午夜免费一级毛片| 宅男噜噜噜66国产在线观看| 激情网址在线观看| 欧美一区中文字幕| 国产高清精品在线91| 国产美女无遮挡免费视频| 91精品小视频| 亚洲欧美日韩动漫| 国产女人综合久久精品视| 婷婷五月在线| 青青青国产精品国产精品美女| a天堂视频| 久久精品国产精品青草app| 视频二区中文无码| 四虎永久免费在线| 亚洲精品777| 国产美女精品一区二区| 女人毛片a级大学毛片免费| 18禁色诱爆乳网站| 亚洲永久免费网站| 国产精品亚洲αv天堂无码| 亚洲综合中文字幕国产精品欧美 | 色婷婷久久| 欧美a级完整在线观看| 国产精品成| 国产毛片高清一级国语 | 福利片91| 久久99精品久久久久久不卡| 在线精品亚洲一区二区古装| 91毛片网| 国产成人综合久久精品尤物| 亚洲综合经典在线一区二区| 免费av一区二区三区在线| 韩日午夜在线资源一区二区| 欧美日韩导航| 精品撒尿视频一区二区三区| 日韩视频福利| 国产拍揄自揄精品视频网站| 91精品久久久久久无码人妻| 国产精品任我爽爆在线播放6080| 666精品国产精品亚洲| 另类综合视频| a毛片免费在线观看| 久久精品娱乐亚洲领先| 亚洲高清在线播放| 制服丝袜一区二区三区在线| 国产成人无码播放| 中文字幕永久视频| 亚洲大学生视频在线播放 | 婷婷中文在线| 久久久久无码精品国产免费| 国产激情第一页| 国产乱人伦精品一区二区| 国产极品粉嫩小泬免费看| 99偷拍视频精品一区二区| 国产成人综合日韩精品无码不卡| 国产另类视频| 欧美日韩国产成人高清视频| 国产黑人在线| 不卡无码网| 亚洲一区色| 国产精品无码一区二区桃花视频| 毛片在线看网站| 欧美在线黄| 国产97视频在线| 欧美人与牲动交a欧美精品| 日本91视频| 欧美一级高清片久久99| 国产97视频在线| 久久99热这里只有精品免费看| 亚洲欧洲日产国码无码av喷潮| 91娇喘视频| 久久永久精品免费视频| 狠狠干欧美| 三区在线视频| 99一级毛片| 亚洲美女高潮久久久久久久| 日本午夜在线视频| 久久综合结合久久狠狠狠97色| 亚洲伦理一区二区| 五月婷婷欧美| 一级不卡毛片|