李莉,石可欣,任振康
(東北林業大學 信息與計算機工程學院,哈爾濱 150040)(?通信作者電子郵箱lli@nefu.edu.cn)
基于特征選擇和TrAdaBoost的跨項目缺陷預測方法
李莉*,石可欣,任振康
(東北林業大學 信息與計算機工程學院,哈爾濱 150040)(?通信作者電子郵箱lli@nefu.edu.cn)
跨項目軟件缺陷預測可以解決預測項目中訓練數據較少的問題,然而源項目和目標項目通常會有較大的數據分布差異,這降低了預測性能。針對該問題,提出了一種基于特征選擇和TrAdaBoost的跨項目缺陷預測方法(CPDP-FSTr)。首先,在特征選擇階段,采用核主成分分析法(KPCA)刪除源項目中的冗余數據;然后,根據源項目和目標項目的屬性特征分布,按距離選出與目標項目分布最接近的候選源項目數據;最后,在實例遷移階段,通過采用評估因子改進的TrAdaBoost方法,在源項目中找出與目標項目中少量有標簽實例分布相近的實例,并建立缺陷預測模型。以F1作為評價指標,與基于特征聚類和TrAdaBoost的跨項目軟件缺陷預測(FeCTrA)方法以及基于多核集成學習的跨項目軟件缺陷預測(CMKEL)方法相比,CPDP-FSTr的預測性能在AEEEM數據集上分別提高了5.84%、105.42%,在NASA數據集上分別提高了5.25%、85.97%,且其兩過程特征選擇優于單一特征選擇過程。實驗結果表明,當源項目特征選擇比例和目標項目有類標實例比例分別為60%、20%時,所提CPDP-FSTr能取得較好的預測性能。
跨項目缺陷預測;特征選擇;核主成分分析;實例遷移;TrAdaBoost
由于軟件開發人員開發經驗的匱乏、對需求的誤解或軟件開發過程的不規范等一系列問題,導致了軟件缺陷的產生。軟件缺陷如果不立即修正,可能會導致巨大的人力、物力以及經濟損失。在整個軟件項目開發周期內,只有盡早發現軟件缺陷,因軟件缺陷帶來的風險和修復風險的代價才能越小。軟件缺陷預測(Software Defect Prediction, SDP)[1-2]可以幫助軟件開發人員盡早發現項目中存在的缺陷。目前,大部分研究工作聚焦于項目內軟件缺陷預測(Within-Project Defect Prediction, WPDP)[3],就是采用項目內的歷史數據作為訓練數據,對新版本進行建模預測。但是,對于新啟動的項目來說,沒有足夠多的歷史數據來構建模型進行預測??珥椖咳毕蓊A測(Cross-Project Defect Prediction, CPDP)[4]因此產生,即利用其他項目(即源項目)中的數據構建軟件缺陷預測模型,對當前項目(即目標項目)進行缺陷預測。然而,源項目和目標項目間通常有較大的數據分布差異,這會導致預測模型很難得到較好的預測性能。因此,CPDP中的關鍵問題也就是如何縮小源項目和目標項目之間的數據分布差異。
針對該問題,本文提出了一種兩階段的基于特征選擇和TrAdaBoost的跨項目缺陷預測方法(Cross-Project Defect Prediction method based on Feature Selection and TrAdaboost, CPDP-FSTr)。該方法包括兩階段:在特征選擇階段,通過核主成分分析(Kernel Principal Component Analysis, KPCA)方法刪除源項目中冗余和無關特征,再根據篩選后的源項目屬性特征分布選擇與目標項目屬性特征分布最接近的特征;在實例遷移階段,采用TrAdaBoost方法,從特征選擇后的源項目中選擇與少量有標簽目標項目實例相似的實例,構建軟件缺陷預測模型。
跨項目缺陷預測基于其他項目(源項目)中的標記數據來預測當前項目(目標項目)是否存在軟件缺陷。源項目和目標項目之間的數據差異性,會導致構建模型無法取得較好的預測性能[5],因此,設計合理的縮小源項目和目標項目間的數據差異的方式仍然是跨項目缺陷預測中亟待解決的問題。針對該問題,大部分研究人員將機器學習應用于CPDP領域[6],其中通過特征選擇(feature selection)方法[7]和遷移學習(transfer learning)方法[8]來設計解決方案被廣泛應用。Zimmermann等[9]從項目的上下文角度出發,共提出了40種不同的項目上下文因素來計算項目間的相似性,以此選擇候選源項目,主要是通過實證研究中考慮的622對CPDP結果與其相應項目間的相似性來構建決策樹,完成候選源項目的選擇。He等[10]通過度量元的數據分布特征選擇與目標項目相匹配的源項目,考慮了16種不同的分布特征,其中眾數、中位數、均值和調和均值等特征可以描述屬性取值的集中趨勢,異眾比率、四分位差、方差和標準差等可以體現屬性取值的離散程度,而偏態和峰度可以描述屬性取值的分布形狀。Turhan等[11]從目標項目出發,提出了Burak過濾法,首先計算目標項目與源項目中實例的歐氏距離,再對歐氏距離進行排序,選擇與目標項目中每個實例最近的個源項目實例添加到候選訓練集中。而Peters等[12]認為源項目中有助于CPDP的數據更多,因此提出了Peters過濾法,首先從源項目實例中選出與其距離最近的一個目標項目實例,對于選中的目標項目實例,再從源數據集中選出與其距離最近的一個實例。一些研究人員[13-14]將源項目和目標項目數據同時進行數據標準化,比如min-max標準化方法和z-score標準化方法。這些方法可以使不同項目的特征取值處于同一個取值區間,同時與原取值分布特征一致。黃琳等[15]通過將不同特性的核函數進行組合,使數據在新的特征空間得到更好的表達,再結合集成學習,提出了基于多核集成學習的跨項目軟件缺陷預測(Cross-project software defect prediction based on Multiple Kernel Ensemble Learning, CMKEL)方法,進一步提升了軟件缺陷預測的精度。然而,CMKEL方法中代價敏感系數的引入對實驗結果有很大的影響,且整體的預測性能不佳。
特征選擇在軟件缺陷預測領域有著重要的應用,是從原始特征集合中選擇最有價值信息從而降低特征空間維度的過程,其目的在于去除原始數據中的冗余數據和無關數據,生成價值較高的特征子集。
特征選擇方法主要包括過濾式、嵌入式和包裹式。過濾式按照發散性或相關性等指標對特征進行評分;嵌入式通過機器學習算法和模型進行訓練確定特征優劣;包裹式則根據目標函數完成特征的選擇。以上三種方法都只選擇原始特征的一個子集,但這些子集可能無法準確表示原始數據本質的特征結構。特征轉換技術的出現解決了這個問題,可以在一定程度上抽取出更具代表性的特征,其中具有代表性的方法有主成分分析法(Principal Component Analysis, PCA)和線性判別法(Linear Discriminant Analysis, LDA)。劉芳等[16]提出了基于主成分分析和優化支持向量機(Principal Component Analysis and Improved Support Vector Machine, PCA-ISVM)的軟件缺陷預測方法,利用主成分分析消除數據冗余信息,結合粒子群算法完成軟件缺陷預測,一定程度上提高了軟件缺陷預測的效率。
遷移學習已被廣泛應用于各個行業,其核心是找到源領域和目標領域之間的相似性,實現知識的跨領域遷移。遷移學習解決了機器學習在實際場景中模型訓練數據和測試數據處于不同特征空間且具有分布不同的問題。因此,遷移學習常用于跨領域之間的知識傳遞,跨項目軟件缺陷預測正是其中一個重要應用。
遷移學習根據學習方法可以劃分為基于實例的遷移學習、基于特征的遷移學習和基于參數的遷移學習。根據特征空間是否一致可劃分為同構遷移學習和異構遷移學習。
目前研究人員主要關注基于實例的遷移學習和基于特征的遷移學習。邱少?。?7]提出了基于核均值匹配和多簇權重分析(Kernel Mean Matching and Multiple-Cluster Weights, KMM-MCW)的跨項目軟件缺陷預測方法,將源項目劃分為多個簇,通過核均值匹配(Kernel Mean Matching, KMM)算法調整簇中實例權重,繼而完成實例的遷移。倪超等[18]借助聚類分析和實例遷移方法,提出了基于特征聚類和TrAdaBoost的跨項目軟件缺陷預測(cross-project software defect prediction using Feature Clustering and TrAdaBoost, FeCTrA)方法,該方法可以在一定程度上縮小源項目和目標項目間的數據差異,提升缺陷預測的性能,但在聚類分析過程中,若初始簇中心挑選不理想,則軟件缺陷預測的性能就會相應地下降。
本文提出了基于特征選擇和TrAdaBoost的跨項目缺陷預測方法(CPDP-FSTr)。該方法通過特征選擇和實例遷移兩階段,利用核主成分分析法和基于距離的屬性特征分布的特征選擇(feature selection based on Distance Attribute Feature Distribution, DAFD)技術,對源數據進行篩選,并增加評估因子,提升TrAdaBoost方法對錯分的有缺陷樣本的關注度。然后將篩選后的源項目實例和部分有標簽目標實例注入改進后的TrAdaBoost方法,最終構建軟件缺陷預測模型。
假設源項目和目標項目具有相同的特征集合,基于該假設本文提出了一種基于特征選擇和TrAdaBoost的跨項目缺陷預測方法(CPDP-FSTr),將其與只考慮DAFD特征選擇過程的FSTr-D方法和只考慮KPCA特征選擇過程的FSTr-KP方法分別進行預測性能的對比。
跨項目缺陷預測主要通過源項目中的有標簽實例構建訓練模型,以解決目標項目有標簽實例少、不足以支撐缺陷預測的問題。源項目和目標項目具有數據分布差異,通過改進的TrAdaBoost方法,從實例角度在源項目中找到與目標項目相似的實例來訓練數據集,解決訓練數據集不足的問題。除此之外,在實際的源項目數據中,存在著部分冗余數據和無用數據,同時數據通常不是線性的,因此需要選擇有效的特征選擇方法,實現對源項目特征的篩選。從源項目角度考慮,選擇能夠反映缺陷數據內在結構的最優特征,并采用KPCA方法進行特征選擇。根據如圖1所示的實驗結果可知,只考慮KPCA方法特征選擇過程的FSTr-KP得到的預測性能不佳,主要是由于跨項目缺陷預測存在數據分布差異。

圖1 特征選擇過程的實驗結果(KPCA)Fig. 1 Experimental results of feature selection process (KPCA)
從目標項目角度來說,源項目和目標項目之間存在分布差異,因此選擇與目標項目更為相似的源項目特征,從而輔助目標項目構建有效的缺陷預測模型。因此,提出了基于距離的屬性特征分布的特征選擇(DAFD)技術。根據如圖2所示的實驗結果可知,只考慮DAFD特征選擇過程的FSTr-D方法在部分項目中性能優于只考慮KPCA特征選擇過程的FSTr-KP方法,但整體預測性能仍欠佳,主要原因是源項目中存在冗余數據影響預測性能。
基于以上分析,擬考慮結合源項目和目標項目兩個角度,采用KPCA和DAFD結合的兩過程特征選擇方法CPDP-FSTr,既避免源項目冗余數據對預測性能的負面影響,同時一定程度上縮小了數據間的分布差異。根據如圖3所示的實驗結果可知,兩過程特征選擇方法提高了預測性能,且表現良好。

圖2 特征選擇過程的實驗結果(DAFD)Fig. 2 Experimental results of feature selection process (DAFD)

圖3 特征選擇過程的實驗結果(兩過程)Fig. 3 Experimental results of feature selection process (two-process)
根據以上分析及過程性實驗可知,由于跨項目軟件缺陷預測存在的數據分布差異以及源項目中冗余數據所帶來的負面影響,單一階段特征選擇方法的預測性能不佳,而采用KPCA和DAFD兩過程結合的特征選擇方法一定程度上解決了以上問題,因此采用KPCA和DAFD兩過程結合作為特征選擇階段的特征選擇方法。
CPDP-FSTr方法的流程如圖4所示。該方法包括特征選擇和實例遷移兩個階段,具體的流程如下:
1)在特征選擇階段,包括兩個過程。首先,CPDP-FSTr通過核主成分分析法刪除源項目數據中的無用數據和冗余數據。其次,從篩選后的源數據屬性分布特征集合中選擇與目標項目相近的特征形成候選訓練數據集。
2)在實例遷移階段,將目標項目中少量有標簽的實例加入候選訓練數據集內,采用經評估因子改進后的TrAdaBoost方法,通過不斷迭代,得到若干個基分類器,然后集成得到強分類器,最終得到跨項目缺陷預測模型。本文源項目特征選擇比例和目標項目中有標簽的實例比例分別為60%、20%。
源項目中通常會存在部分無關數據和冗余數據,這些數據都會一定程度上影響缺陷預測模型的預測性能;同時,由于源項目和目標項目數據分布不一致,源項目中與目標項目相關性較低的特征也會影響到缺陷預測模型的性能。因此,特征選擇階段包括兩部分:第一部分,移除源項目中的類標簽,對其余特征采用基于KPCA的特征選擇技術,篩選出無用特征和冗余特征;第二部分,提取源項目和目標項目的屬性分布特征,選擇與目標項目最相近的源項目特征。

圖4 CPDP-FSTr流程Fig. 4 Flow chart of CPDP-FSTr
2.3.1 基于核主成分分析的特征選擇技術KPCA
PCA技術是最經典的線性特征轉換技術,當數據是線性可分且服從高斯分布時,PCA的特征選擇效果較好。但在跨項目軟件缺陷預測領域,由于缺陷數據在線性子空間中不能進行劃分,因此PCA提取的特征代表性欠佳,導致預測結果不理想。KPCA技術是對PCA技術的改進[19],可以更好地處理非線性數據,選擇有代表性的特征,同時刪除數據中的無關特征和冗余特征。KPCA技術使用一個非線性映射函數將低維特征空間中的數據映射到高維特征空間中,再找到其線性子空間進行降維,從而達到特征選擇的目的。現有研究表明,KPCA的性能優于PCA。
將KPCA方法應用于跨項目缺陷預測領域,通常考慮Linear線性核函數或徑向基高斯核函數(Radial Basis Function, RBF)。由于本文研究涉及數據集特征數較小,樣本數正常,故采用RBF徑向基高斯核函數進行特征選擇。
協方差矩陣的特征方程可以表示為:
協方差的特征方程可以表示為:
2.3.2 基于距離的屬性特征分布的特征選擇技術DAFD
基于選擇分布特征與目標數據最相似的候選數據的基本原理,使用特征向量的歐氏距離來確定這些最相似的候選向量。對歐氏距離進行升序排序,選擇前r項作為候選訓練數據集。
本文采用的屬性分布特征是均值(mean)、標準差(std)、偏度(skew)和峰度(kurt)這四個。均值可以體現數據分布集中趨勢,標準差體現數據的離散程度,偏度和峰度可以體現數據的分布形態。在選取相似的源項目特征之前先對源項目和目標項目數據的所有屬性取值進行數據預處理,采用最大最?。╩in_max)標準化進行數據歸一化,使所有分布特征的特征值歸一化到區間[0,1]。這樣既可以消除不同度量大小對DAFD方法的不良影響,同時也可以使屬性的取值分布接近正態分布。首先,使用歐氏距離公式計算源項目和目標項目之間所有屬性分布特征向量的距離,來判斷兩個項目間的數據分布的相似性。然后對計算得出的距離進行升序排序,選擇距離最小的前r個特征。
算法1中給出了特征選擇階段的詳細描述。
算法1 特征選擇。
6) 計算降維后的矩陣:
CPDP-FSTr方法選擇TrAdaBoost方法來進行實例遷移。TrAdaBoost是對集成學習算法AdaBoost的改進,采用了兩套權重調整機制,對源項目和目標項目的權重調整機制相反。源項目采取的權重調整機制是增加與目標項目相關的樣本權重,減小與目標項目無關的樣本權重,從而篩選出與目標項目更相關的樣本。而目標項目則是增加錯誤分類的樣本權重,減小正確分類的樣本權重,以此找到更難分類的樣本。以上權重調整機制不斷迭代,最后用加權投票的方式將每一輪迭代產生的基分類器加權求和形成一個強分類器。
然而由于數據存在類不平衡問題,當類不平衡問題極其嚴重時,有缺陷樣本被錯分對整體的錯誤率影響較小,而預測結果則會偏向于多數類。設置評估因子EF改進TrAdaBoost方法,使得預測結果更加關注錯分的有缺陷樣本。評估因子EF以F?measure為基礎。
其中:EF由T和TN計算,T表示有缺陷的實例被預測為有缺陷,TN表示不含有缺陷的實例被預測為無缺陷。本文設置,更加關注有缺陷實例被錯分的情況;那么,設置目標實例權重調整因子為:
算法2給出了實例遷移階段的詳細描述。
算法2 實例遷移。
8) 更新實例權重:
9)迭代結束;
10)輸出假設:
在本文方法的實驗研究中,采用了公開的軟件缺陷數據集:AEEEM數據集和NASA數據集。表1~2分別給出了AEEEM數據集和NASA數據集中項目的統計信息。

表1 AEEEM數據集的統計信息Tab. 1 Statistical information of AEEEM dataset

表2 NASA數據集的統計信息Tab. 2 Statistical information of NASA dataset
軟件缺陷預測考慮的是目標項目中是否存在缺陷的一個二分類問題。對于目標項目的任一實例進行缺陷預測都涉及到四種實際情況:若有缺陷的實例被預測為有缺陷,則記為TP(True Positive);若無缺陷的實例被預測為有缺陷,則記為FP(False Positive);若無缺陷的實例被預測為無缺陷,則記為TN(True Negative);若有缺陷的實例被預測為無缺陷,則記為FN(False Negative)。根據以上四種實際情況,可以定義精確度()、召回率()以及F1度量(F1-measure)。
其中,精確度指在所有被預測為有缺陷的實例中,真正有缺陷的實例比例。
召回率指在所有真正有缺陷的實例中,被正確預測為有缺陷的實例比例。
F1度量可以綜合考慮精確度和召回率兩個指標,在類不平衡問題中能夠更好地對預測性能進行評價。故本文使用F1作為評價方法性能的評價指標。
為了驗證CPDP-FSTr方法的有效性和預測性能,兩過程特征選擇的有效性以及CPDP-FSTr方法的相關參數設定,本文主要關注以下四個問題。
問題1 CPDP-FSTr方法與現有的優秀的跨項目缺陷預測方法的預測性能對比。如今,在跨項目缺陷預測領域,研究人員已經提出了很多優秀算法,本文考慮基于特征遷移和實例遷移的跨項目缺陷預測方法FeCTrA,基于多核集成學習的跨項目軟件缺陷預測(CMKEL)方法,以及未改進TrAdaBoost的CPDP-FSTr方法CPDP-FSNTr。
問題2 CPDP-FSTr方法的特征選擇階段包括兩個特征選擇過程。不同的特征選擇過程可以選擇出不同的特征,對最終的預測性能也可能不同。本文根據源項目、目標項目以及跨項目缺陷預測特點進行特征選擇過程的過程性探究實驗。研究中只考慮KPCA和DFAD的單一選擇過程和包含兩者的兩過程特征選擇的性能表現,驗證了CPDP-FSTr方法中兩過程特征選擇的合理性和有效性。
問題3 目標項目中有類標的實例比例對CPDP-FSTr方法預測性能的影響。由于目標項目中的類標信息需要由專業人員標記得出,需要消耗大量的人力和物力,因此,CPDP問題需要少量的標注實例得出較好的預測結果。本文考慮20%以下的有標簽實例比例,分析其對CPDP-FSTr方法的影響。
問題4 在特征選擇階段,源項目中的特征選擇比例對CPDP-FSTr方法預測性能的影響。CPDP-FSTr方法基于屬性分布特征通過距離選出與目標特征相似的源項目特征。因此,本文考慮10%~100%、步長為10%的特征選擇比例,分析其對CPDP-FSTr方法產生的影響。
CPDP-FSTr方法主要包括特征選擇和實例遷移兩部分。在特征選擇階段,源項目的特征選擇比例設置為,其中表示為源項目的特征數。在實例遷移階段,選擇目標項目中20%的實例放入候選訓練數據集。
在實驗的過程中,選擇一個項目作為源項目,另一個項目作為目標項目,進行一對一的跨項目缺陷預測。所有結果采用10次跨項目5折交叉驗證的平均值??珥椖?折交叉驗證是指:使用源項目中所有的有標簽數據和目標項目中的1折(即20%)的有標簽數據作為最終的訓練集,對目標項目中未標記的4折(即80%)數據進行預測。
3.5.1 針對問題一的結果分析
本文選擇AEEEM和NASA數據集,對CPDP-FSTr方法的預測性能和有效性進行實驗研究,使用決策樹作為基分類器,特征選擇比例為60%,有標簽的目標項目實例選擇比例為20%,并將該方法與其他三種方法進行對比。采用F1作為評價指標,結果如表3~4所示。

表3 不同算法預測性能的結果對比(AEEEM數據集)Tab. 3 Result comparison of prediction performance of different algorithms (AEEEM dataset)

表4 不同算法的預測性能結果對比(NASA數據集)Tab. 4 Result comparison of prediction performance of different algorithms (NASA dataset)
在表3~4中,第一列表示跨項目缺陷預測各方法的應用場景,如:PDE→EQ表示源項目為PDE,目標項目為EQ。其余各列表示在不同場景下不同算法的F1指標,即其預測性能。AVG表示每一種方法的整體平均預測性能,每一行的最大值進行了加粗表示。
根據表3~4的實驗結果可以看出,CPDP-FSTr方法的預測性能明顯優于其他三種對比方法,其大部分場景下的預測性能都表現較好,可以取得更好的效果。在AEEEM數據集中,從平均預測性能來看,CPDP-FSTr與CPDP-FSNTr、FeCTrA和CMKEL相比分別提高了3.34%、5.84%和105.42%。例如PDE→ML,CPDP-FSTr方法的F1值為0.868,相較于CPDP-FSNTr(0.835)、FeCTrA(0.803)以及CMKEL(0.472),其預測性能分別提高了3.95%、3.99%和76.9%。從表3可以看出,CPDP-FSTr在目標項目為EQ時,F1取得最大值的情況較少,其原因可能是EQ的缺陷樣本比例較高,且EQ的樣本數較少,導致可以放入訓練集的有類標的目標項目數據較少。NASA數據集中目標項目為CM1時,情況與EQ相似,且NASA數據集中,從平均預測性能來看,CPDP-FSTr與CPDP-FSNTr、FeCTrA和CMKEL相比分別提高了1.36%、5.25%和85.97%。
另外在整個CDPD-FSTr方法中,隨著對TrAdaBoost方法的改進,平均預測性能得到了提升。在AEEEM數據集中,其平均預測性能由0.807提升到了0.834。而在NASA數據集中,其平均預測性能由0.811提升到了0.822。
因此,在跨項目缺陷預測中,相較于其他三種方法,本文提出的CPDP-FSTr方法的預測性能表現更好。
3.5.2 針對問題2的結果分析
本階段實驗選擇特征選擇比例為60%,有標簽的目標項目實例選擇比例為20%。同時將兩過程特征選擇的CPDP-FSTr方法與只考慮KPCA方法特征選擇過程的FSTr-KP、只考慮DAFD特征選擇過程的FSTr-D方法所得到的預測性能分別進行對比。不同特征選擇過程的實驗結果如表5~6所示。

表5 特征選擇過程的實驗結果(AEEEM數據集)Tab. 5 Experimental results of feature selection process (AEEEM dataset)

表6 特征選擇過程的實驗結果(NASA數據集)Tab. 6 Experimental results of feature selection process (NASA dataset)
在表5~6中,第一列表示跨項目缺陷預測中的目標項目,AVG表示每一種特征選擇過程的整體平均性能,每一行的最大值進行了加粗表示。
表5~6的實驗結果可以驗證2.1節采用兩過程特征選擇方法的合理性,在實驗涉及的所有項目中,含兩過程特征選擇的CPDP-FSTr的平均性能均優于單一特征選擇過程的FSTr-KP和FSTr-D方法。在AEEEM數據集中,CPDP-FSTr相較FSTr-KP和FSTr-D在平均預測性能上分別提高了12%和3.7%。在NASA數據集中,CPDP-FSTr相較FSTr-KP和FSTr-D在平均預測性能上分別提高了3.8%和2.5%。綜上,實驗結果表明,CPDP-FDTr方法考慮到了源項目角度的特征選擇問題以及目標項目角度的數據分布差異問題,上述兩個問題一定程度上的解決使得特征選擇的有效性得到了提升。
綜上,實驗驗證了CPDP-FSTr方法中兩過程特征選擇的性能優于單一特征選擇過程,具有其合理性和有效性。
3.5.3 針對問題3的結果分析
本文設置5%、10%以及20%三種有類標實例比例進行實驗研究,以此分析目標項目中有類標實例比例對于CPDP-FSTr方法性能的影響。由于標注實例需要耗費人力和物力,所以把比例控制在20%以下有助于減少開銷,且同時更有效地幫助模型進行更加準確的預測。此外,對于5%、10%以及20%的比例,分別采用跨項目的20折、10折和5折交叉驗證。有類標實例比例對于CPDP-FSTr方法性能的影響如圖5~6所示。

圖5 目標項目有類標實例比例對性能的影響(AEEEM數據集)Fig. 5 Influence of target project labeled instance proportion on performance (AEEEM dataset)

圖6 目標項目有類標實例比例對性能的影響(NASA數據集)Fig. 6 Influence of target project labeled instance proportion on performance (NASA dataset)
在圖5~6中,橫軸代表不同的目標項目,縱軸代表對應的F1值。可以看出,在LC、ML和PDE這三個項目中,隨著目標項目有類標實例比例的增加,CPDP-FSTr方法的預測性能也隨之提升,主要是由于這三個項目中包含的樣本數較多,分別為691、1 842、1 497,隨著目標項目中有標簽實例比例的增加,可用的實例信息越多,得到的預測結果就越好。對于項目JDT來說,當有類標實例比例為10%時,F1值最大,當比例增加到20%時,預測性能反而下降,其可能的原因是JDT的缺陷樣本比例較高,或數據質量不好。對于項目EQ來說,當比例從5%上升到20%時,F1處于不穩定的狀態,其可能的原因是EQ項目中的樣本太少,只有324個,隨著比例的增加,可用的信息增加得很少,因此有類標實例比例對其性能的影響不大。
由圖6可以看出,整體而言,CPDP-FSTr的預測性能隨著目標項目有類標實例比例的增大而不斷提升。在CM1項目上,目標項目有類標實例比例從10%增加到20%,其性能變化幅度較小,可能是由于CM1項目中僅包含327個實例,比例的變化不會增加太多可用信息。在JM1、KC1、PC1和PC3上,CPDP-FSTr的預測性能均隨著有類別實例比例增加而提高,主要是由于這四個項目中包含的實例數較多,隨著有類標實例比例的增加,增加的可用信息也更多,預測性能也就越來越好。
因此,在CPDP-FSTr方法中的特征選擇階段,有類標的實例比例選定為20%比較合理。特征選擇階段采用的方法更適用于實例個數較多的數據集,預測性能更優。
3.5.4 針對問題4的結果分析
為了研究CPDP-FSTr方法中的特征選擇階段,源項目中的特征選擇比例對于該方法性能的影響,本文將特征選擇比例設定為10%~100%、步長為10%。特征選擇比例對CPDP-FSTr方法性能的影響如圖7~8所示。

圖7 特征選擇比例對性能的影響(AEEEM數據集)Fig. 7 Influence of feature selection proportion on performance (AEEEM dataset)

圖8 特征選擇比例對性能的影響(NASA數據集)Fig. 8 Influence of feature selection proportion on performance (NASA dataset)
在圖7~8中,橫坐標代表不同的特征遷移比例,縱坐標代表對應的F1值。由圖7可以發現,當特征遷移比例從10%上升到100%的過程中,EQ、LC和PDE整體處于較為穩定的狀態,隨著特征遷移比例的增加,F1分別在0.74、0.89和0.86上下浮動。在EQ項目和LC項目中,當遷移的特征比例為60%時,CPDP-FSTr方法取得的預測性能最高。在JDT項目中,當遷移比例為10%~60%時,預測性能較為平穩,遷移比例為70%時預測性能最差,遷移比例為80%時到達峰值,之后性能不斷下降。在ML項目中,當遷移比例為60%時,取得最優效果,隨著遷移比例繼續提高,預測性能大幅下降,到80%時開始回升。
由圖8可以看出,隨著特征遷移比例從10%上升到100%,CM1、JM1、KC1、PC1和PC3這五個項目均處于較為平穩的狀態。其中,CM1、JM1在特征遷移比例為60%時,預測性能最佳;KC1、PC1和PC3這三個項目在特征遷移比例為60%和70%時,均取得最優預測性能。當特征遷移比例繼續提升時,性能均有小幅度下降。
因此,在CPDP-FSTr方法的特征選擇階段,源項目中的特征選擇比例設置為60%時,能取得較好的預測結果。
本文提出了一種基于特征選擇和TrAdaBoost的跨項目缺陷預測方法,一定程度上縮小了跨項目缺陷預測中源項目和目標項目間的數據分布差異,且通過采用KPCA方法和基于距離的屬性特征分布,找出了與目標項目最相近的源項目特征,同時增加了評估因子改進TrAdaBoost技術,以保證更關注錯分的有缺陷樣本,繼而進行實例遷移,構建跨項目缺陷預測模型。實驗結果表明,該方法可以有效應用于跨項目缺陷預測中,且預測性能明顯優于基準實驗,提高了軟件缺陷預測的性能。
在接下來的研究工作中,將進一步探討:1)不同基分類器對于CPDP-FSTr方法預測性能的影響,如支持向量機、邏輯回歸、樸素貝葉斯等;2)優化特征選擇策略,進一步提高CPDP-FSTr方法的有效性和預測性能。本文方法對于數據量較少的數據(如EQ項目樣本數為324)的預測性能可進一步提高,因此需要對特征選擇策略進一步優化。在下一階段研究中,可以選擇中位數、離散系數等構建屬性分布特征向量,選擇適用于不同數據量數據集的屬性分布特征組合。同時,也可以考慮通過信息熵、基尼指數來判斷源項目和目標項目之間的分布相似性,進一步提高本文方法的特征選擇的有效性。
[1] 宮麗娜,姜淑娟,姜麗.軟件缺陷預測技術研究進展[J].軟件學報,2019,30(10):3090-3114.(GONG L N, JIANG S J,JIANG L. Research progress of software defect prediction [J]. Journal of Software, 2019, 30(10): 3090-3114.)
[2] HALL T, BEECHAM S, BOWES D, et al. A systematic literature review on fault prediction performance in software engineering [J]. IEEE Transactions on Software Engineering, 2012, 38(6): 1276-1304.
[3] GONG L N, JIANG S J, BO L L, et al. A novel class-imbalance learning approach for both within-project and cross-project defect prediction [J]. IEEE Transactions on Reliability, 2020, 69(1): 40-54.
[4] 陳翔,王莉萍,顧慶,等.跨項目軟件缺陷預測方法研究綜述[J].計算機學報,2018,41(1):254-274.(CHEN X, WANG L P, GU Q, et al. A survey on cross-project software defect prediction methods [J]. Chinese Journal of Computers, 2018, 41(1): 254-274.)
[5] YUAN Z D, CHEN X, CUI Z Q, et al. ALTRA: cross-project software defect prediction via active learning and TrAdaBoost [J]. IEEE Access, 2020, 8:30037-30049.
[6] PRABHA C L, SHIVAKUMAR N. Software defect prediction using machine learning techniques [C]// Proceedings of the 2020 4th International Conference on Trends in Electronics and Informatics. Piscataway: IEEE, 2020:728-733.
[7] SAIFUDIN A, TRISETYARSO A, SUPARTA W, et al. Feature selection in cross-project software defect prediction [J]. Journal of Physics: Conference Series, 2019, 1569(2): Article No.022001.
[8] 吳琦.基于遷移學習的跨項目軟件缺陷預測[D].長春:吉林大學,2018:12-13.(WU Q. Cross-project defect prediction based on transfer learning [D]. Changchun: Jilin University,2018: 12-13.)
[9] ZIMMERMANN R, NAGAPPAN N, GALL H, et al. Cross-project defect prediction: a large scale experiment on data vs. domain vs. process [C]// Proceeding of the 2009 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. New York: ACM, 2009: 91-100.
[10] HE Z M, SHU F D, YANG Y, et al. An investigation on the feasibility of cross-project defect prediction [J]. Automated Software Engineering, 2012, 19(2): 167-199.
[11] TURHAN B. On the dataset shift problem in software engineering prediction models [J]. Empirical Software Engineering, 2012, 17(1/2): 62-74.
[12] PETERS F, MENZIES T, MARCUS A. Better cross company defect prediction [C]// Proceedings of the 2013 10th Working Conference on Mining Software Repositories. Piscataway:IEEE, 2013: 409-418.
[13] NAM J, PAM S J, KIM S. Transfer defect learning [C]// Proceedings of the 2013 35th International Conference on Software Engineering, Piscataway: IEEE, 2013: 382-391.
[14] PANICHELLA A, OLIVETO R, DE LUCIA A. Cross-project defect prediction models: L’Union fait la force [C]// Proceedings of the 2014 Software Evolution Week — IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering. Piscataway: IEEE, 2014: 164-173.
[15] 黃琳,荊曉遠,董西偉.基于多核集成學習的跨項目軟件缺陷預測[J].計算機技術與發展,2019,29(6):27-31.(HUANG L, JING X Y,DONG X W, Cross-project software defect prediction based on multiple kernel ensemble learning [J]. Computer Technology and Development, 2019, 29(6): 27-31.)
[16] 劉芳,高興,周冰,等.基于PCA-ISVM的軟件缺陷預測模型[J].計算機仿真,2014,31(3):397-401.(LIU F, GAO X, ZHOU B, et al. Software defect prediction model based on PCA-ISVM [J]. Computer Simulation, 2014, 31(3): 397-401.)
[17] 邱少健.基于遷移學習的跨項目軟件缺陷預測關鍵技術研究[D].廣州:華南理工大學,2019:40-60.(QIU S J. Research on cross-project software defect prediction by transfer learning [D]. Guangzhou: South China University of Technology, 2019: 40-60.)
[18] 倪超,陳翔,劉望舒,等.基于特征遷移和實例遷移的跨項目缺陷預測方法[J].軟件學報,2019,30(5):1308-1329.(NI C, CHEN X, LIU W S, et al. Cross-project defect prediction method based on feature transfer and instance transfer [J]. Journal of Software, 2019, 30(5): 1308-1329.)
[19] SCH?LKOPF B, SMOLA A, MüLLER K R. Kernel principal component analysis [C]// Proceedings of the 1997 International Conference on Artificial Neural Networks, LNCS 1327. Berlin: Springer, 1997: 583-588.
Cross-project defect prediction method based on feature selection and TrAdaBoost
LI Li*, SHI Kexin,REN Zhenkang
(College of Information and Computer Engineering,Northeast Forestry University,Harbin Heilongjiang150040,China)
Cross-project software defect prediction can solve the problem of few training data in prediction projects. However, the source project and the target project usually have the large distribution difference, which reduces the prediction performance. In order to solve the problem,a new Cross-Project Defect Prediction method based on Feature Selection and TrAdaBoost (CPDP-FSTr) was proposed. Firstly, in the feature selection stage, Kernel Principal Component Analysis (KPCA) was used to delete redundant data in the source project. Then, according to the attribute feature distribution of the source project and the target project, the candidate source project data closest to the target project distribution were selected according to the distance. Finally, in the instance transfer stage, the TrAdaBoost method improved by the evaluation factor was used to find out the instances in the source project which were similar to the distribution of a few labeled instances in the target project, and establish a defect prediction model. Using F1 as the evaluation index, compared with the methods such as cross-project software defect prediction using Feature Clustering and TrAdaBoost (FeCTrA), Cross-project software defect prediction based on Multiple Kernel Ensemble Learning (CMKEL), the proposed CPDP-FSTr had the prediction performance improved by 5.84% and 105.42% respectively on AEEEM dataset,enhanced by 5.25% and 85.97% respectively on NASA dataset, and its two-process feature selection is better than the single feature selection process. Experimental results show that the proposed CPDP-FSTr can achieve better prediction performance when the source project feature selection proportion and the target project labeled instance proportion are 60% and 20% respectively.
cross-project defect prediction; feature selection; Kernel Principal Component Analysis (KPCA); instance transfer; TrAdaBoost
TP311.5
A
1001-9081(2022)05-1554-09
10.11772/j.issn.1001-9081.2021050867
2021?05?25;
2022?01?24;
2022?02?18。
李莉(1977—),女,河南孟州人,副教授,博士,CCF會員,主要研究方向:先進軟件工程、區塊鏈、群智能優化、大型分布式計算; 石可欣(1997—),女,山東聊城人,碩士研究生,主要研究方向:軟件缺陷預測; 任振康(1996—),男,山東青島人,碩士研究生,主要研究方向:軟件缺陷預測。
LI Li, born in 1977, Ph. D., associate professor. Her research interests include advanced software engineering, blockchain, swarm intelligence optimization, large-scale distributed computing.
SHI Kexin,born in 1997, M. S. candidate. Her research interests include software defect prediction.
REN Zhenkang, born in 1996, M. S. candidate. His research interests include software defect prediction.