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

軟件缺陷預測中的數據預處理方法

2020-11-30 05:48:00潘春霞楊秋輝譚武坤鄧惠心
計算機應用 2020年11期
關鍵詞:特征方法模型

潘春霞,楊秋輝,譚武坤,鄧惠心,伍 佳

(四川大學計算機學院,成都 610065)

(?通信作者電子郵箱yangqiuhui@scu.edu.cn)

0 引言

軟件缺陷預測通過分析與缺陷有關的歷史數據,比如源代碼、缺陷報告、測試記錄、缺陷修復記錄等,發現缺陷在軟件中的分布規律,構建缺陷預測模型,對新提交的軟件版本進行缺陷分布的預測,以幫助軟件測試人員有的放矢地進行軟件測試,降低軟件的測試成本。軟件資源庫中存儲了與缺陷有關的歷史數據,但從軟件資源庫里收集的數據集往往具有多維度的問題,數據特征很多;對于缺陷數據,還有不平衡問題,即有缺陷的數據是少數。數據特征的選擇和數據的平衡處理問題是缺陷預測中數據預處理的關鍵。近年來,一些學者針對缺陷預測問題進行了相應的研究,如Ibrahim 等[1]、Wang等[2],但他們在特征選擇后,僅使用隨機過采樣方法處理不平衡數據,隨機復制有缺陷樣本,易導致模型的過擬合問題。因此本文將特征選擇算法和其他的不平衡處理算法結合,對缺陷類進行分析后再合成新缺陷樣本,以更加有效提升模型的訓練數據質量。

軟件缺陷數據特征主要分為兩大類:軟件的靜態特征和基于開發過程的軟件動態特征。文獻[3-5]表明:基于開發過程特征構建的軟件缺陷預測模型的性能優于基于軟件靜態特征構建的軟件缺陷預測模型。本文為提高缺陷預測模型訓練數據的質量,提出在數據特征選取上采用軟件開發過程特征數據,同時創新性地提出擴展過程特征,即軟件演化版本間靜態特征的變化值,將靜態特征的變化值作為擴展過程特征,豐富了過程特征內涵;采用聚類分析的特征選擇方法,去掉數據集中的非關鍵特征和冗余特征;針對缺陷數據類的不平衡問題,提出改進的Borderline-SMOTE(Borderline-Synthetic Minority Oversampling Technique),使訓練數據集的數據相對平衡。

1 相關工作

軟件缺陷預測中,使用哪些特征建立預測模型,對預測結果的質量有很大影響。文獻[3-5]對使用過程特征和靜態特征分別建立的缺陷預測模型的預測能力進行了對比,得到相同的結論:使用過程特征比使用靜態特征建立的預測模型效率更高;文獻[6-7]中也提到:用靜態特征結合開發過程特征建立的缺陷預測模型具有更好的缺陷預測性能;文獻[8]通過調查過程特征在缺陷預測中的作用,總結了部分常被一些文獻使用的過程特征,其中包括不同提交者數量、修改行數、先前版本中修復缺陷個數等。本文參考上述工作,使用常規開發過程特征和擴展過程特征作為備選訓練特征,將具有這些特征的數據構成了原始的高維數據。

特征選擇是降低特征空間維數的重要手段。文獻[9]通過對高維數據集使用不同的特征選擇算法進行實驗發現:大部分時候,缺陷預測模型只需要使用到原數據集的10%的特征;文獻[10]使用了一種混合特征選擇方法,通過考慮不同的特征排序評估方法和特征子集評估方法發現:移除85%的特征并不會大幅度降低預測性能;文獻[11]提出了特征選擇方法FECAR(FEature Clustering And feature Ranking),該方法通過對特征進行聚類和排序,能有效去除冗余特征和非關鍵特征。本文參考以上結論,使用基于聚類分析的特征選擇算法,實現數據降維處理。

在解決數據類不平衡方面,文獻[12]總結了一些常用的過采樣方法:ADASYN(ADAptive SYNthetic sampling approach)、Borderline-SMOTE 和Safe Level SMOTE。對于每個少數類,ADASYN[13]使用密度分布來自動確定需要合成的樣本數量,不同的少數類樣本采用不同的權重分布;Borderline-SMOTE 算法[14]則關注少數類中處于邊界的樣本,針對這些樣本進行重采樣,從而合成新的樣本;Safe Level SMOTE[15]則通過給每個少數類實例分配一個安全級別值,讓合成新樣本的安全級別更接近安全級別的最大值,從而達到合成新樣本的目的;文獻[16]通過在7 個數據集上分別使用SMOTE、Borderline-SMOTE 和ADASYN 過采樣方法,發現Borderline-SMOTE 方法比其他方法具有更好的表現;文獻[17]認為在Borderline-SMOTE 方法中,非邊界少數類樣本無法得到充分考慮,因此提出了基于局部自適應距離的過采樣方法LADSMOTE (Locally Adaptive Distance-Synthetic Minority Oversampling Technique),該方法建立的模型比Borderline-SMOTE 方法建立的模型在F-measure 值上平均提升了2.17個百分點。本文參考上述結論,采用Borderline-SMOTE 算法,并對其提出改進,用以解決類不平衡問題。

2 開發過程特征的收集和選擇

首先,以軟件項目中的源代碼文件為單位,從軟件版本控制庫中開發人員提交的日志文件中收集源代碼文件的過程特征;然后,根據缺陷追蹤系統的缺陷數據,對有缺陷的源代碼文件進行缺陷標記;最后,在得到的原始數據集上,使用基于聚類分析的特征選擇算法,去除原始數據集中的非關鍵特征和冗余特征,得到有效訓練數據集。

2.1 收集軟件開發過程特征

數據來源是軟件資源庫、軟件版本控制庫等記錄軟件開發過程的數據庫。利用軟件項目開發的日志信息,獲取軟件開發的過程特征數據。根據相關文獻[3-8],軟件缺陷的產生與軟件代碼的修改、開發者數量、功能的增加、原缺陷數、代碼的復雜度、操作符的變化等因素相關,本文共收集了55 個與這些因素有關的過程特征(包含擴展過程特征),表1 列出了部分收集的開發過程特征。

表1 與軟件缺陷相關的部分軟件開發過程特征Tab.1 Some software development process features related to software defects

這些特征中,部分特征需要根據日志文件中的信息,通過編寫統計分析程序獲得,比如:平均添加行數(Average Lines of Code Added,ALCA)、先前版本bug 出現概率(Historical Bug Rate,HBR)等。式(1)和式(2)分別是ALCA、HBR 特征的計算公式:

擴展過程特征表示了某些靜態特征的變化情況,可通過Understand 工具獲取每個文件不同版本的靜態特征值,再通過式(3)計算獲得擴展過程特征,fs1和fs2分別為同一個文件相鄰版本前后的靜態特征值。

最后,再以軟件源代碼文件為單位,匹配日志中文件的缺陷信息和軟件缺陷跟蹤系統的歷史缺陷信息,確定文件是否含有缺陷,并對文件進行人工缺陷標記,得到原始數據集。

2.2 基于聚類分析的開發過程特征選擇

上述方式構建的原始數據集中過程特征總數(包含擴展過程特征)為55,數量較多,因此需要使用特征選擇算法去除其中存在的非關鍵特征和冗余特征。Hall[18]證明了:好的特征子集由與類標高度相關但特征之間不相關的特征組成。例如:操作符的數量和操作數的數量兩個特征都與類標高度相關,但二者成正比例關系,關聯度較高,存在一定的冗余,故二者組成的子集不是質量好的子集。本文采用基于聚類分析的特征選擇方法[11],主要分為2步:特征聚類和特征排序。

特征聚類 利用對稱不確定性(Symmetric Uncertainty,SU)計算特征之間的關聯度,對特征進行聚類,使類中特征的關聯度高,類間特征的關聯度低。在選取類的初始代表特征時,使用信息增益(Information Gain,IG)最高的前K個特征。

特征排序 使用信息增益IG 計算每個特征與類標相關度,并對結果排序,選取每類中相關度最高的幾個特征。圖1描述了其流程。

圖1 基于聚類分析的特征選擇算法流程Fig.1 Flowchart of feature selection algorithm based on clustering analysis

原始數據集經過基于聚類分析的特征選擇后,能去除其中的非關鍵特征和冗余特征,縮減數據規模,減少模型的訓練時間。

3 基于邊界樣本的類不平衡處理

在收集的數據集上,無缺陷的數據集一般都遠大于有缺陷的數據集,存在數據不平衡問題,會嚴重影響缺陷分類器的性能。目前在機器學習領域,調整類不平衡問題可以從數據層面和算法層面入手。從數據層面解決包含過采樣和欠采樣方法。在一些小型項目和版本數量較少的項目中,缺陷樣本數量很少,如果使用欠采樣方法,將導致最后的訓練樣本數據量較少,不能得到好的預測模型。經過作者實驗,在本文的數據集上使用過采樣方法比使用欠采樣方法建立的模型具有更好的性能表現,因此本文采用過采樣方法。Borderline-SMOTE 方法是一種常用的過采樣方法,其主要實現流程是:首先,確定位于少數類和多數類之間的邊界少數類樣本,其樣本數為dnum;然后,在每個邊界少數類樣本的knum 個近鄰少數類樣本中隨機選取snum(snum≤knum)個少數類樣本,以合成新的少數類樣本;最終,少數類的個數=原始少數類個數+dnum*snum,大部分情況下,不與多數類個數一致。

合成新樣本時,首先計算邊界缺陷樣本q 和它鄰近缺陷樣本之間的差dif,新樣本s 合成公式為:s=q+random(0,1)*dif,random(0,1)表示(0,1)的隨機數。假設樣本特征集是(修改頻率,開發人員經驗,…),其中一個有缺陷實例q1=(10,100,…),q1的近鄰有缺陷實例q2=(18,80,…),則dif=q1-q2=(-8,20,…),假設random(0,1)是0.5,則新的有缺陷實例s=q1+0.5*dif=(6,110,…)。在實際中,修改頻率越大,文件出現缺陷的可能性應該越大,但新合成的實例s 的修改頻率比q1和q2都小,更符合無缺陷情況。同時,s 的開發人員經驗比q1和q2都高,也更符合無缺陷情況。因此,該方法合成的樣本值不符合真實情況。

為解決上述問題,本文對Borderline-SMOTE 方法做出改進,根據每個特征的具體特點,做如下修改:首先,對dif 中所有元素取絕對值;然后,對于每個特征,如果該特征的值越小,樣本出現缺陷的概率越大,則該特征對應的dif中的元素值取負值,否則保持對應特征值為正值,如:開發人員經驗、類連續不含有缺陷的周期等特征對應的dif中的元素值應取負值,修改次數、類中方法個數變化等特征對應值應取正值。通過分析具體特征和缺陷出現的關系,修改dif以使其更加合理。改進的Borderline-SMOTE算法描述如算法1所示。

算法1 改進的Borderline-SMOTE算法。

輸入 缺陷樣本集P={p1,p2,…,ppnum},無缺陷樣本集N={n1,n2,…,nnnum},有缺陷邊界樣本DRANGER={},缺陷樣本的鄰近樣本個數mnum,DRANGER 中邊界缺陷樣本的鄰近缺陷樣本個數knum,每個邊界缺陷樣本合成新的樣本數snum(1 ≤snum ≤knum),判斷dif元素值取正/負的數組 A={a[1],a[2],…,a[m]}(m為特征個數,a[m]=0或1)。

輸出 新合成的缺陷類樣本OS。

使用改進的Borderline-SMOTE 算法對數據集進行處理,能增加更符合實際樣本特征的缺陷類樣本實例,解決類不平衡問題,提升數據集質量。

4 實驗驗證

本文采用隨機森林算法訓練分類模型,使用精確率(Precision)、召回率(Recall)等指標評價模型性能,并設計了4個實驗來驗證本文數據預處理方法的有效性。

4.1 實驗設計

4.1.1 分類模型

目前,軟件缺陷預測領域較常用的分類算法為:樸素貝葉斯分類、決策樹、隨機森林、邏輯回歸等[3,10,19]。通過作者的大量實驗,發現隨機森林分類算法在大多數數據集上有較好的表現。本文從bugzilla 等項目的日志信息中獲取原始數據集,進行數據預處理后,使用Weka 機器學習庫,選擇隨機森林分類算法,將預處理后的數據作為訓練樣本輸入訓練模型。

4.1.2 評價指標

數據的質量直接影響分類模型的性能。通過測評模型性能,可間接測評數據質量,若數據質量較好,則對應的模型性能表現也應更好。混淆矩陣是評價模型好壞的展示工具,對應缺陷預測主題,其內容見表2。

表2 混淆矩陣Tab.2 Confusion matrix

根據混淆矩陣衍生了各種評價指標,本文采用的評價指標 為Precision、Recall、F-measure 和ROC(Receiver Operating Characteristics)曲線下面積AUC(Area Under the Curve)。精確率表征預測模型識別的正類樣本中正確的比率,其定義見式(4)。召回率表征預測模型對正類樣本的識別程度,其定義見式(5)。F-measure是Precision和Recall的調和平均數,更能整體性地反映模型性能的好壞,其定義見式(6)。ROC曲線橫坐標為假陽性率FPR(False Positive Rate),縱坐標為Recall,假陽性率表征無缺陷實例被預測成有缺陷的概率,其定義見式(7),ROC 曲線越靠近左上方,面積AUC 值越大,模型的性能越好。

4.1.3 實驗內容

為了證明本文使用的數據預處理方法的有效性,本文設計了以下4 個實驗:1)基于聚類分析的特征選擇算法的有效性驗證;2)改進的Borderline-SMOTE 算法的有效性驗證;3)引入擴展過程特征有效性驗證;4)本文方案與文獻[19]方案的對比。

4.2 實驗結果及分析

4.2.1 基于聚類分析的特征選擇算法的有效性驗證

為了證明特征選擇算法的有效性,本實驗分別使用原始數據和特征選擇后的數據建立缺陷預測模型。使用的項目數據源是:bugzilla、columba、jdt、mozilla、platform、postgres。

在特征收集階段,本文共得到初始過程特征55 個,其中常用過程特征為29個,擴展過程特征為26個。經過多種m(m為最終選擇的特征子集個數)、K(K 為劃分的簇數)值組合實驗發現:當設置m=30、K=10 時,能夠保證使用選擇的特征訓練出的模型性能基本不變;當m<30 時,訓練出的預測模型的F-measure 值開始明顯降低。因此,使用特征選擇算法后,共篩選出30 個過程特征,其中常用過程特征為17 個,擴展過程特征為13個。篩選出的30個特征如表3所示。

表3 特征選擇算法篩選出的特征Tab.3 Features selected by feature selection algorithm

實驗結果顯示,在多數情況下特征選擇后建立的模型的F-measure值與選擇前模型的F-measure值相差不大,如表4所示。實驗結果說明了非關鍵特征和冗余特征的存在。

特征選擇降低了訓練模型時間,特征選擇前,使用隨機森林算法在多個項目上訓練模型的平均時間為79.63 s,而特征選擇后,訓練平均時間僅為33.49 s,時間縮短效率為57.94%。在保證模型F-measure 值的同時,極大地縮短了模型的訓練時間。

表4 特征選擇前后模型的F-measure值對比Tab.4 Comparison of F-measure values of models before and after feature selection

4.2.2 改進的Borderline-SMOTE算法的有效性驗證

為了證明本文提出的改進的Borderline-SMOTE 算法的有效性,本實驗分別使用原始和改進的Borderline-SMOTE 方法進行數據不平衡處理,實驗使用的項目分別是:bugzilla、columba、jdt,mozilla、platform、postgres,處理前后的樣本數量見表5。改進的Borderline-SMOTE方法與原始方法相比,只會更改新合成樣本的特征值,使特征值更符合真實情況,并不會改變新合成樣本的數量,因此使用兩種方法處理后的缺陷樣本數量一致。

表5 數據不平衡處理前后樣本數量Tab.5 Samples before and after data imbalance processing

圖2 比較了在采用隨機森林分類算法時,不同項目在不平衡處理前后對應模型的精確率、召回率、F-measure 和AUC。從圖2 可以看出使用原Borderline-SMOTE 方法和改進后的Borderline-SMOTE 方法處理不平衡樣本,都能明顯提升各項模型評價指標,但改進后的Borderline-SMOTE 方法在各項指標上的表現都優于原始方法。相比原始Borderline-SMOTE 方法,使用改進后的Borderline-SMOTE 方法進行數據不平衡處理后,所建立的模型在Precision、Recall、F-measure、AUC 上都有所提升,平均分別提高了2.36、1.8、2.13、2.36 個百分點,證明了改進的Borderline-SMOTE 算法處理數據不平衡問題的有效性。

圖2 樣本不平衡處理前后預測效果對比Fig.2 Comparison of prediction effects before and after sample imbalance processing

4.2.3 引入擴展過程特征有效性驗證

為了驗證本文提出的擴展過程特征的有效性,本實驗在完成了特征選擇和不平衡處理的6 個數據集上,對比了在特征集中是否引入擴展過程特征所建立的模型的F-measure值,表6是對比結果。

表6 引入擴展過程特征前后模型的F-measure值對比Tab.6 Comparison of F-measure values of models before and after the introduction of extended process features

由表6 可以看出:在所有項目中,引入了擴展過程特征后所建立的模型都比未引入擴展過程特征所建立的模型性能表現更好,F-measure 值平均提高了3.79%。其中,bugzilla 和columba兩個項目的提升效果最為明顯,提升率分別為6.19%和6.93%,證明了本文提出的擴展過程特征的有效性。

4.2.4 本文方案與文獻[19]方案的對比

為了證明本文方案的有效性,將本文提出方案與文獻[19]提出方案進行對比。文獻[19]方案為:使用混合特征,即靜態特征和動態特征,不對原始特征集進行降維處理,使用隨機欠采樣方法進行類不平衡處理。實驗采用文獻[19]中的項目:Android Universal I.L、ANTLR v4、Elasticsearch、jUnit 等。文獻[19]比較了不同的分類算法構建的模型,其中隨機森林算法構建的模型在F-measure指標上表現最好,因此本實驗只與其隨機森林算法建立模型結果進行比較。文獻[19]給出了預測模型結果的F-measure 值和bug 覆蓋率,在bug 覆蓋率指標上,文獻[19]方案和本文方案都取得了較好的結果,因此本文僅展示兩種方案模型的F-measure值對比結果,見圖3。

可以看到:所有項目中,本文方案的模型具有更高的F-measure 值,平均提高率為15.79%,其中jUnit 項目提升最大,本文模型的F-measure 值為0.890 9,而文獻[19]模型的F-measure 值為0.659 1,提高了35.17%。在MapDB 項目上,兩者F-measure 值相差不大,本文模型僅提高了0.88%。查看樣本數據發現jUnit 項目的有缺陷樣本和無缺陷樣本數量相差較大,而MapDB 項目的有缺陷樣本和無缺陷樣本數量之差比其他項目更小,本文數據不平衡處理方案在類不平衡明顯的樣本上表現較好。對于原始數據基本平衡情況,經過本文不平衡處理方法后,對應的預測模型性能可能僅微小提高,此時可以不再使用不平衡處理方法。

圖3 文獻[19]方案和本文方案建立模型的F-measure對比Fig.3 Comparison of F-measure of the models established by the solution in literature[19]and the solution in this paper

5 結語

本文使用過程特征作為缺陷預測模型的訓練特征,分別對特征選擇和類不平衡處理方法進行了研究。通過軟件資源庫獲取開發常用過程特征和擴展過程特征,構建原始數據集,采用基于聚類分析的特征選擇方法刪除非關鍵特征和冗余特征,使用改進的Borderline-SMOTE 過采樣方法合成新的缺陷樣本,以解決數據分類不平衡問題。實驗采用隨機森林分類算法構建缺陷預測模型。通過實驗,證明了本文數據預處理方法的有效性。

本文旨在解決軟件缺陷預測中數據質量問題,但還存在諸多不足之處。比如:本文采用的數據集擁有大量與缺陷有關的歷史數據,對于某些新的項目或者歷史信息很少的項目,本文方法并不適用,未來可考慮將本文方法與跨項目缺陷預測進行結合。另外,研究收集的缺陷樣本中可能會存在噪聲數據,比如開發人員忘記聲明修復bugid,將會導致該樣本被標記為無缺陷。如何有效地發現并去除噪聲數據也是未來的研究工作之一。

猜你喜歡
特征方法模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
抓住特征巧觀察
3D打印中的模型分割與打包
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
主站蜘蛛池模板: 国产色爱av资源综合区| 婷婷午夜影院| 国产资源站| 亚洲精品国产日韩无码AV永久免费网| 国产精品区视频中文字幕 | 高潮爽到爆的喷水女主播视频 | 国产精品免费p区| 国产成人三级| 久久中文字幕av不卡一区二区| 免费人成黄页在线观看国产| 在线观看免费国产| 国产欧美日韩va| 中文无码日韩精品| 亚洲国产成人自拍| 大乳丰满人妻中文字幕日本| 亚洲日本在线免费观看| 久久亚洲黄色视频| 色亚洲激情综合精品无码视频| 久久性妇女精品免费| 国产精品v欧美| 四虎精品黑人视频| 久久99精品久久久久纯品| 99re这里只有国产中文精品国产精品| 午夜天堂视频| 亚洲性日韩精品一区二区| 激情网址在线观看| 亚洲天堂网2014| 亚洲综合狠狠| 任我操在线视频| 狠狠做深爱婷婷久久一区| 67194亚洲无码| 国产av无码日韩av无码网站| 国禁国产you女视频网站| 亚洲高清中文字幕在线看不卡| 国产三级国产精品国产普男人| 99热这里只有精品2| 91毛片网| 午夜毛片免费观看视频 | 国产爽妇精品| 久久香蕉国产线看观看式| 国内精品视频| 2019年国产精品自拍不卡| 日韩精品专区免费无码aⅴ| 在线观看的黄网| 国产成人久久777777| 国产在线高清一级毛片| 日本精品αv中文字幕| 国产免费网址| 欧美精品H在线播放| 亚洲动漫h| 激情国产精品一区| 亚洲欧美人成人让影院| 国产91特黄特色A级毛片| 日韩小视频网站hq| 久久这里只有精品国产99| 99视频在线免费看| 国产91精品最新在线播放| 18禁影院亚洲专区| 国产91视频观看| 在线视频亚洲欧美| 国产女人18水真多毛片18精品| 国产女人水多毛片18| jizz国产在线| 在线国产91| 四虎永久在线精品影院| 狠狠做深爱婷婷久久一区| 国产区成人精品视频| 夜色爽爽影院18禁妓女影院| 色综合狠狠操| 美臀人妻中出中文字幕在线| 欧美亚洲欧美| 青青青伊人色综合久久| julia中文字幕久久亚洲| 米奇精品一区二区三区| 免费播放毛片| 2018日日摸夜夜添狠狠躁| 亚洲三级网站| 免费一级大毛片a一观看不卡| 无码专区第一页| 不卡无码网| 久久久91人妻无码精品蜜桃HD| 性欧美在线|