黃 燕,徐 賢,虞慧群,楊星光
(華東理工大學(xué) 信息科學(xué)與工程系,上海 200237)
隨著軟件規(guī)模和軟件復(fù)雜性的增加,發(fā)布高質(zhì)量的軟件系統(tǒng)是一個巨大的挑戰(zhàn).軟件質(zhì)量保證活動(例如軟件測試,代碼審查)是提高軟件質(zhì)量的有效方法.然而,在測試資源和軟件發(fā)布時間的限制下,對所有程序模塊進行質(zhì)量保證活動通常是不現(xiàn)實的[1].
為此,研究人員提出了軟件缺陷預(yù)測方法[2,3].軟件缺陷預(yù)測通過挖掘軟件的歷史倉庫,設(shè)計出與缺陷相關(guān)的內(nèi)在度量元,然后借助機器學(xué)習(xí)等方法提前發(fā)現(xiàn)并鎖定缺陷模塊,從而能夠合理地分配有限的資源[2].傳統(tǒng)的軟件缺陷預(yù)測是在項目內(nèi)執(zhí)行的,稱為同項目缺陷預(yù)測(Within-Project Defect Prediction,WPDP)[2].然而,目標(biāo)項目可能是新啟動的軟件系統(tǒng),因此缺少足夠訓(xùn)練數(shù)據(jù).跨項目缺陷預(yù)測(Cross-Project Defect Project,CPDP)方法[4]是解決該問題的有效方法.它采用其他項目(源項目)的缺陷數(shù)據(jù)集來構(gòu)建預(yù)測模型,并對目標(biāo)項目進行缺陷預(yù)測.在CPDP中,需要源項目與目標(biāo)項目有相同的特征集.然而,在實際情況中,由于不同項目使用的編程語言、適用的領(lǐng)域、開發(fā)人員的經(jīng)驗等差異[5],源項目和目標(biāo)項目之間的度量元可能存在較大差異,此時若直接使用傳統(tǒng)的CPDP方法,不能取得較好的預(yù)測性能.為此,研究者們提出了異質(zhì)缺陷預(yù)測(Heterogeneous Defect Prediction,HDP)[6,7]方法.
當(dāng)前,為了提高HDP性能,研究人員提出了多種方法,如HDP[6,8]、FMT[9]等.這些方法都是從特征匹配的角度出發(fā)解決異質(zhì)問題,然而并沒有考慮數(shù)據(jù)本身存在的分布差異對于模型性能的影響.為此,本文提出了一種基于特征轉(zhuǎn)移和域自適應(yīng)(Feature Transfer and Domain Adaptation,F(xiàn)TDA)的方法.該方法在進行特征遷移的同時,使用域自適應(yīng)方法解決項目間數(shù)據(jù)分布的差異性問題,并采用綜合采樣方式處理不平衡數(shù)據(jù).FTDA結(jié)構(gòu)的詳細信息將在第3部分中進行描述.
本文的主要貢獻可歸納如下:
1)本文為解決異質(zhì)缺陷預(yù)測提出了一個新的FTDA方法.與以前的工作相比,本文設(shè)計了一個新的特征匹配算法,用于將不同項目間的異質(zhì)特征匹配起來,并為每個目標(biāo)項目挑選最合適的源項目.除此之外,本文還應(yīng)用了域自適應(yīng)算法和類不平衡算法分別解決數(shù)據(jù)分布不同和數(shù)據(jù)類別失衡的問題.
2)本文在來自AEEEM、PROMISE、NASA和Relink的24個數(shù)據(jù)集上進行實證研究,并使用AUC作為指標(biāo)來評估方法的性能.本文將FTDA方法與FMT和WPDP進行了比較,實驗結(jié)果表明,F(xiàn)TDA比以前的工作更有效,且能有效解決異質(zhì)缺陷預(yù)測問題.
跨項目缺陷預(yù)測旨在將其他成熟項目的標(biāo)記數(shù)據(jù)用作訓(xùn)練集,以建立缺陷預(yù)測模型,并用該模型來預(yù)測新建立的項目的缺陷傾向性.Hosseini[4]、陳翔[5]、Zhou[10]等對于近年來的跨項目缺陷預(yù)測進行一定的歸納總結(jié).
近年來,研究人員提出了許多跨項目缺陷預(yù)測方法.Tsang等[11]提出了一種遷移成分分析(Transfer Component Analysis,TCA)方法,這是一種基于特征遷移的學(xué)習(xí)方法.具體來說,源項目和目標(biāo)項目被映射到一個潛在的公共空間,使得兩者的數(shù)據(jù)分布趨于一致.然后使用傳統(tǒng)的機器學(xué)習(xí)方法進行分類.經(jīng)過進一步的實驗研究,Nam等發(fā)現(xiàn)數(shù)據(jù)歸一化對實驗結(jié)果的影響很大,因此他們進一步提出了TCA+[12].Ryu等[13]提出了一種基于實例遷移和代價敏感的方法TCSBoost(Transfer Cost-Sensitive Boosting),它通過調(diào)整正確和錯誤分類的實例的權(quán)重來不斷修改模型.
與上述嘗試通過設(shè)計有效的機器學(xué)習(xí)算法來構(gòu)建預(yù)測模型的方法不同,有些CPDP方法專注于為目標(biāo)數(shù)據(jù)找到合適的訓(xùn)練數(shù)據(jù).Hosseini等[14]提出了遺傳實例選擇GIS(Genetic Instance Select)方法,這是一種旨在優(yōu)化F-Measure和GMean的組合度量的訓(xùn)練數(shù)據(jù)選擇方法.Liu等[15]提出了CPDP的兩階段遷移模型:在第1階段,為目標(biāo)項目選擇兩個相似度最高的源項目;在第2階段,使用TCA +用于為兩個選定的源項目分別構(gòu)建兩個預(yù)測模型.
除此之外,還有一些CPDP方法專注于不同的應(yīng)用場景,例如跨項目缺陷預(yù)測中的隱私保護問題[16,17],基于不同粒度的缺陷預(yù)測[18-21]等.
為了解決項目之間度量元不同的問題,研究人員提出了異構(gòu)缺陷預(yù)測[6],他們提出了許多從不同角度解決HDP的解決方案.陳翔、Chen等人[22,23]系統(tǒng)地概述了HDP的最新工作,并進行了一些比較.
Jing等[7]提出了一種基于統(tǒng)一度量表示UMR(Unified Metric Representation)和典型相關(guān)分析CCA(Canonical Correlation Analysis)的HDP遷移學(xué)習(xí)方法.首先,該方法分別為源數(shù)據(jù)和目標(biāo)數(shù)據(jù)構(gòu)造UMR,然后使用CCA使源項目和目標(biāo)項目的數(shù)據(jù)分布相似.Cheng等[24]提出了CCT-SVM,這是CCA和支持向量機SVM(Support Vector Machine)的結(jié)合,他們使用CCA構(gòu)造出了異構(gòu)數(shù)據(jù)的聯(lián)合特征空間,SVM則被用作分類器.同時,他們采取了不同的錯誤分類成本來減輕數(shù)據(jù)不平衡所帶來的影響.
Yu等[9]提出了一種基于特征匹配與特征遷移的方法FMT(Feature Matching and Transfer).該方法首先使用基于相關(guān)性的特征選擇方法CFS(Correlation-based Feature Selection)進行特征篩選,然后通過計算特征值分布曲線的距離,將源項目與目標(biāo)項目的特征進行匹配,從而將異質(zhì)特征轉(zhuǎn)化為匹配特征.Nam等[8]設(shè)計了一種HDP(Heterogeneous Defect Prediction)方法,他們嘗試了增益比等4種方法進行特征選擇,百分位數(shù)、KS檢驗等3種方式評估特征對之間的相似度,最后使用最大加權(quán)二分匹配進行源項目和目標(biāo)項目之間的特征匹配.
Li等[25]在解決HDP時考慮了多源和隱私保護問題,他們?yōu)榱擞行У乩枚嘣磾?shù)據(jù),提出了一種基于多源選擇的流形判別比對MSDA方法.同時為了在數(shù)據(jù)共享過程的隱私保護,他們設(shè)計了一種基于稀疏表示的雙重模糊算法.
當(dāng)前,大多數(shù)用于異構(gòu)缺陷預(yù)測的工作旨在解決度量標(biāo)準(zhǔn)集的不一致問題.他們嘗試了特征表示[7],特征選擇和匹配[6,8,9],以使源和目標(biāo)的度量標(biāo)準(zhǔn)集融合.但是他們沒有考慮項目之間數(shù)據(jù)分布的區(qū)別.此外,在大多數(shù)工作中,過采樣方法用于類不平衡.本文也是主要從解決異構(gòu)特征出發(fā),較之以前的工作,本文提出的方法設(shè)計了新的特征匹配方法,不僅將異構(gòu)特征匹配起來,同時進行了源項目的選擇;除此之外,還考慮了數(shù)據(jù)分布與類不平衡問題.本文將在第3節(jié)中詳細介紹FTDA的框架結(jié)構(gòu)和實驗步驟.
本文為解決異質(zhì)缺陷預(yù)測問題,提出了一種基于特征遷移和域自適應(yīng)的方法FTDA.本文為特征匹配和項目選擇設(shè)計了一個新的算法,此外,本文還將域自適應(yīng)算法TCA應(yīng)用于HDP中;在解決類不平衡問題時,本文采用了SMOTETomek,即將Tomeklinks加入SMOTE中,用于在生成少數(shù)類樣本的同時,減少邊緣樣本對于分類的影響.本文將在這一部分詳細介紹FTDA,F(xiàn)TDA的整體框架如圖1所示.
首先,對每個項目(即Project1,Project2,…,ProjectN)進行特征篩選,便可以得到擁有最優(yōu)子集的新項目Projcet1*,Project2*,…,ProjectN*.根據(jù)歐氏距離,將Target中的 特征與每個Project*中的特征進行匹配,并根據(jù)項目間的距離為Target*挑選一個最合適的項目作為Source.接著,應(yīng)用域自適應(yīng)算法,此時Source和Target*不僅擁有匹配的特征集,并且他們的數(shù)據(jù)分布是一致的.然后,將目標(biāo)數(shù)據(jù)中的有標(biāo)簽數(shù)據(jù)作為訓(xùn)練集加入到源數(shù)據(jù)中,并應(yīng)用SMOTETomek解決類不平衡問題.最終將平衡的數(shù)據(jù)進行模型訓(xùn)練,用于判斷目標(biāo)數(shù)據(jù)中未標(biāo)注模塊的缺陷性.
圖1 FTDA整體框架Fig.1 Overall framework of FTDA
軟件缺陷數(shù)據(jù)是由專家和學(xué)者從軟件倉庫中收集而來的.例如,AEEEM存儲庫由D′Ambros等收集[26,27],AEEEM有61個指標(biāo),包含源代碼指標(biāo)、之前預(yù)測的指標(biāo)、變更熵指標(biāo)、源代碼熵指標(biāo)和源代碼流失指標(biāo)5類.這些度量指標(biāo)可以在一定程度上反映軟件模塊的特征,但是它們不一定與類別具有很強的相關(guān)性.因此,為了更好地構(gòu)造模型,特征選擇是必不可少的一步.特征篩選有很多方法[28-30],而本文中選擇的是基于相關(guān)性的特征選擇算法CFS[31].該算法的核心是以啟發(fā)式的方式評估特征子集的值,也就是說,好的特征子集應(yīng)包含與類高度相關(guān)但特征之間彼此不相關(guān)的特征.在先前的工作中,CFS被證明對CPDP有效[32].
在HDP中,源項目和目標(biāo)項目中的特征集并不完全相同,不同之處在于特征的含義以及特征的數(shù)量.在本小節(jié)中,特征匹配的目標(biāo)有兩點:1)是過濾目標(biāo)項目的特征,使之與源項目中的特征一一匹配;2)是為每個目標(biāo)項目挑選最合適的一個源項目.本文采用歐氏距離來表達特征之間的相似性,計算公式如下:
(1)
FTDA的特征匹配算法有如下的步驟,算法的細節(jié)描述如算法1所示.
算法1.特征匹配
輸入:SS*=S1,S2,…,SN:特征篩選后的源項目集
T:目標(biāo)項目
輸出:S:被挑選的且擁有匹配的特征的源項目
T*:擁有匹配的特征的目標(biāo)項目
1.N:源項目集中的項目數(shù)量;
2.F:目標(biāo)項目T的特征數(shù)量;
3.獲取T中的所有特征,記做FTi={FT1,F(xiàn)T2,…,F(xiàn)TF},1≤i≤F;
4.foreachSiinSS*(1≤i≤N):
5.fk:Si的特征數(shù)量;
6. 獲取Si中的所有特征,記做FSj={FS1,F(xiàn)T2,…,F(xiàn)Tfk},1≤j≤fk;
7.foreachFTiandFSj:
8. 從FTi和FSj中隨機選取g個實例,將它們分別按照值的大小升序排列,并進行標(biāo)準(zhǔn)化;
9. 基于公式(1)計算特征對之間的距離,記做dij;
10.endfor
11. 每次從距離矩陣中取最小的值,直至目標(biāo)項目中的每個特征都被匹配,此時獲得新的目標(biāo)項目Ti*;
12. 計算Si與Ti*配對的特征之間的距離和,記做DSi;
13.endfor
14.選擇距離和最小的項目S作為目標(biāo)項目T*的源項目;
15.returnS,T*;
1)對于每一個目標(biāo)項目,與該項目不屬于同一組的其他項目都是源項目的備選項目(line 1和line 2),并獲取目標(biāo)項目的特征(line 3);
2)每次從備選項目中選擇一個項目,獲取它的特征集(line 5和line 6).通過計算特征之間的歐幾里得距離,可以得到一個距離矩陣(line 8和line 9),每次從該矩陣中獲取最小值,該最小值對應(yīng)的行和列分別為備選項目的特征和目標(biāo)項目的特征,記錄下該值以及對應(yīng)的特征,并將它從矩陣中刪除,重復(fù)上述步驟,直至將目標(biāo)項目的特征與該項目的特征進行一一匹配(line 11).
3)記錄每對項目匹配的特征的距離和,其中距離和最小的項目被挑選作為目標(biāo)項目的源項目(line 12和line 14).
域自適應(yīng)(Domain Adaptation,DA)是一種旨在于克服項目之間數(shù)據(jù)分布的差異性的遷移學(xué)習(xí).遷移成分分析(Transfer Component Analysis,TCA)[33]是一種經(jīng)典的邊緣分布自適應(yīng)算法,它的主要目的是找到一個潛在的特征空間,在這個空間中項目之間的數(shù)據(jù)分布差異很小,并且同時保留了其原始數(shù)據(jù)特征.經(jīng)過調(diào)研,TCA在先前的工作中,主要用于跨項目缺陷預(yù)測中,并取得較好結(jié)果[12].本文認為,即使源項目和目標(biāo)項目的特征匹配成功,它們之間仍然存在數(shù)據(jù)分布不同的問題,解決這個問題可以一定程度上提升HDP的性能.
接下來是對TCA基本思想的簡單介紹.由于源域和目標(biāo)域的邊源分布不相同,即P(Xs)≠P(Xt),那么直接減小兩者之間的距離是不可行的.TCA假定存在一個特征映射φ,使得經(jīng)過映射之后的數(shù)據(jù)分布P(φ(Xs))≈P(φ(Xt)),所以主要目的是找到一個合適的φ.TCA采用最大均值差異MMD(Maximum Mean Discrepancy)來計算映射后的源域和目標(biāo)域的平均值之差.假設(shè)已知φ,n1和n2分別表示源域和目標(biāo)域中的樣本數(shù),然后計算MMD,如公式(2)所示.D(Xs,Xt)表示兩個分布P(φ(Xs))和P(φ(Xt))之間的距離,可以由兩個域Xs和Xt映射之后的均值之差計算得來.
(2)
類不平衡問題廣泛存在于缺陷數(shù)據(jù)中,在缺陷數(shù)據(jù)中,無缺陷的模塊占據(jù)大多數(shù).而在學(xué)習(xí)過程中,分類器將趨向于無缺陷實例,從而導(dǎo)致有缺陷實例的分類不佳[34].類不平衡的調(diào)整方法大體可以分為數(shù)據(jù)層面和算法層面兩類[2].數(shù)據(jù)層面主要從數(shù)據(jù)出發(fā),對不平衡的數(shù)據(jù)進行調(diào)整以達到平衡.算法層面是指設(shè)計出適用于類不平衡問題的缺陷預(yù)測分類算法,如代價敏感學(xué)習(xí)方法[13]、集成學(xué)習(xí)方法[35]等.本文采用的是數(shù)據(jù)調(diào)整方法中的采樣方法,大多數(shù)情況下,樣本量越大,預(yù)測的性能越好,因此目前大多數(shù)工作都采用的是過采樣技術(shù).然而過采樣也可能帶來一些問題,因此,本文嘗試采用過采樣方法和欠采樣方法的組合來解決類不平衡問題.
人工少數(shù)類過采樣法SMOTE(Synthetic Minority Oversampling Technique)[36]是一種廣泛使用的過采樣方法.它的基本思想是分析少數(shù)樣本并基于它們?nèi)斯ず铣尚碌纳贁?shù)類樣本,以期達到類平衡的效果.由于少數(shù)樣本的分布決定了其可選鄰居,因此,如果少數(shù)類樣本位于少數(shù)樣本集的分布邊緣,那么由這些樣本生成的“人工”樣本也將位于該邊緣.這就會導(dǎo)致少數(shù)類樣本和多數(shù)類樣本之間原本模糊的邊緣變得更加模糊,這將很不利于分類.本文考慮將Tomeklinks添加到SMOTE中,以解決邊界模糊的問題.假設(shè)樣本x和樣本y屬于不同類別,d(x,y)表示x與y之間的距離,并且如果沒有其他樣本z,使得d(x,z) 為了研究FTDA的有效性,本文對AEEEM[27],PROMISE[37],NASA[38,39],Relink[40]的24個數(shù)據(jù)集進行了實證研究.本文使用的是Weka 3.8[41]和python 3.7,所有的實驗都在處理器Intel(R) Core(TM) i5-7200U CPU 2.50GHz、內(nèi)存12GB的PC機上完成. 如表1所示,本文分別從AEEEM中選擇5個項目,從PROMISE中選擇8個項目,從NASA中選擇8個項目,從Relink中選擇3個項目. 表1涵蓋了每個數(shù)據(jù)集的基本信息,包括度量集數(shù)量、模塊總數(shù)、有缺陷的模塊數(shù)量、缺陷比率、預(yù)測粒度等.值得注意的是,NASA數(shù)據(jù)集中的特征并不完全相同.CM1、MW1、PC1、PC3和PC4數(shù)據(jù)集中有37個特征,PC2數(shù)據(jù)集中有36個特征,MC1和PC5數(shù)據(jù)集中有38個特征. 為了全面展示FTDA的有效性,本文設(shè)計了以下3個研究問題(Research Questions,RQ). 表1 缺陷數(shù)據(jù)集基本信息Table 1 Basic information of defect datasets ·RQ1:本文提出的的FTDA方法是否比FMT更好? FMT(Feature Matching and Transfer)[9]也是HDP的一種解決方案,該方法的主要思想是將目標(biāo)項目的特征與源項目特征根據(jù)一定的算法進行匹配.結(jié)果表明,它在PROMISE上是有效的,并且其性能優(yōu)于HDP[6].本文提出的方法FTDA同樣嘗試使用特征匹配來解決數(shù)據(jù)異構(gòu)的問題.但是除此之外,為了獲得更好的性能,本文還為每個目標(biāo)項目增加了源項目選擇步驟;為解決數(shù)據(jù)分布不同問題應(yīng)用了域自適應(yīng)算法,并從采樣角度對不平衡的數(shù)據(jù)進行了處理.這些部分是FTDA與FTM的不同之處,與FTM進行比較可以直觀地表明,本文提出的方法較之以前的工作的先進性,這就是本文選擇FMT作為基準(zhǔn)的原因.為了驗證有效性,本文在4個組上進行了實證研究,具體的實驗結(jié)果在5.1節(jié)中. ·RQ2:FTDA的性能是否比WPDP好? 在WPDP實驗中,對24個數(shù)據(jù)集分別進行預(yù)測.選取數(shù)據(jù)集的10%作為模型訓(xùn)練集,使用Logistic Regression作為分類器,采用10倍交叉驗證,重復(fù)實驗50次.FTDA與WPDP之間的實驗比較將在5.1節(jié)中詳細介紹. ·RQ3:FTDA采用的綜合采樣方法是否比單獨使用過采樣或欠采樣技術(shù)性能更好? 本文使用SMOTETomek作為采樣技術(shù),這是過采樣與欠采樣的綜合采樣方法,為了驗證該采樣方法在模型中的有效性,本文還分別單獨使用SMOTE和Tomeklinks作為采樣方法進行實證研究,比較結(jié)果如5.1節(jié)所示. 本文使用Logistic Regression(LR)[42]作為預(yù)測模型,該模型是在Weka中實現(xiàn)的,并使用Weka中對LR模型設(shè)定的默認參數(shù). 在軟件缺陷預(yù)測的實證研究中經(jīng)常使用的評估指標(biāo)有精確率、召回率、F值等,這些指標(biāo)是根據(jù)分類后的混淆矩陣計算得出的.機器學(xué)習(xí)中的許多算法首先是基于所有特征計算出一個“評分”,然后根據(jù)這個“評分”,依靠一定的閾值進行分類.因此,這些指標(biāo)與閾值的設(shè)置有關(guān),而閾值的設(shè)定都是人為的.然而,ROC本質(zhì)上是在不同閾值下的硬分類(即,直接給出分類結(jié)果的分類器)的集合.此外,Jiang等人[43]通過實證分析發(fā)現(xiàn),在這些指標(biāo)中,AUC的方差最低.因此本文選擇AUC[44]作為性能指標(biāo),它表示接收器工作特性曲線(Receiver Operating Characteristic,ROC)下的面積.AUC的值介于0和1之間,AUC的值越大,模型的性能越高,AUC被廣泛用于軟件缺陷預(yù)測中. 當(dāng)前的研究[45,46]表明,使用目標(biāo)項目中的少量標(biāo)記數(shù)據(jù)可以提高跨項目缺陷預(yù)測模型的性能.因此,本文將目標(biāo)項目中前10%的數(shù)據(jù)作為已標(biāo)記數(shù)據(jù),并將其添加到訓(xùn)練集中,用于模型的訓(xùn)練. 在本節(jié)中,本文將從上述3個RQ的角度詳細顯示實驗結(jié)果.此外,本文還將討論所提出方法面臨的有效性威脅. 5.1.1 FTDA和FMT的比較 根據(jù)FTDA的整體框架和第3節(jié)中的描述,首先,對表1中的每個數(shù)據(jù)集進行特征選擇.基于選定的特征,再進行特征匹配.從而可以為每個目標(biāo)項目篩選得到最合適的源項目,并且配對的項目間的特征也是一一匹配的.接著,使用TCA算法將源項目和目標(biāo)項目映射到潛在的公共空間,以解決數(shù)據(jù)分布上的差異.最后使用SMOTETomek進行采樣后,用Logistic Regression進行分類預(yù)測. 表2 FTDA VS.FMT實驗結(jié)果Table 2 FTDA VS.FMT experimental results 在FMT[9]中,PROMISE中的數(shù)據(jù)集被視為目標(biāo)項目,而NASA中的數(shù)據(jù)集被視為源項目.為了顯示FTDA的有效性,本文也將PROMISE中的每個數(shù)據(jù)集都看做目標(biāo)項目,但是源項目是其他組(即AEEEM,NASA,Relink)中的一個.實驗結(jié)果如表2所示.第1列是目標(biāo)項目,第2列列出了根據(jù)FTDA方法從候選數(shù)據(jù)集中選擇出的最合適的源項目,第3列顯示了FTDA的AUC值,第4列是FMT中AUC的最大值,而第5列展示了FMT中AUC的最小值. 從表2中,本文可以得出這兩個結(jié)論:1)除camel-1-6外,F(xiàn)TDA算法選擇的最合適的源項目并非來自NASA,在這8組實驗中,F(xiàn)TDA在6個數(shù)據(jù)集上表現(xiàn)出更好的性能.這意味著從更大的范圍為每個目標(biāo)項目選擇合適的源項目的有效性;2)在FMT中,當(dāng)源項目為camel-1-6且目標(biāo)項目為CM1時,AUC值為0.636,并且是使用NASA數(shù)據(jù)集對其進行預(yù)測的最優(yōu)結(jié)果.而當(dāng)使用本文提出的FTDA進行預(yù)測時,同樣選取的是“CM1→camel-1-6”,此時AUC值為0.721,這表明FTDA使用的域自適應(yīng)和類不平衡算法有效地提高了性能. 5.1.2 FTDA和WPDP的比較 本文還將FTDA與WPDP進行了比較,以驗證FTDA是否比直接使用同一項目中的數(shù)據(jù)進行預(yù)測性能更好.在WPDP中,本文將10%的數(shù)據(jù)設(shè)置為訓(xùn)練集,其余部分作為測試集,選用的分類器是邏輯回歸.本文在24個數(shù)據(jù)集中進行了實驗,結(jié)果顯示如表3所示.FTDA和WPDP的AUC分別列于第2列和第3列.通過表3,可以很直觀地發(fā)現(xiàn),在24組實驗中,F(xiàn)TDA可以在22個數(shù)據(jù)集中獲得更高的AUC值,且FTDA的AUC平均值為0.718,WPDP的AUC平均值為0.605.由此可以得出結(jié)論,在大多數(shù)數(shù)據(jù)集中,本文提出的FTDA方法確實具有更好的性能. 5.1.3 采樣方法的比較 上述兩組實驗分別比較了FTDA與FMT和WPDP,以證明FTDA結(jié)構(gòu)的有效性.而本RQ旨在探討不同的采樣方法是否會影響FTDA的性能.本文分別使用SMOTE和Tomeklinks作為采樣方法,對相同的數(shù)據(jù)集進行實驗.實驗結(jié)果展示于表3的第4列和第5列,實驗結(jié)果中的較大值以粗體表示.由表3可以發(fā)現(xiàn),F(xiàn)TDA在11個數(shù)據(jù)集上的表現(xiàn)要優(yōu)于其他兩種采樣方式.單獨使用SMOTE作為采樣方式和FTDA使用的綜合采樣方式在EQ、ivy-2.0、tomcat、xalan-2-4、PC1、PC2和safe的7個數(shù)據(jù)集上均獲得了一致的AUC值,僅將Tomeklinks用作采樣方法的性能較差. 本文提出的方法FTDA包括了4個階段,分別是特征選擇、特征匹配與源項目選擇、域自適應(yīng)和類不平衡的處理,時間開銷較大的是特征匹配與源項目選擇階段,且時間開銷與項目集中包含的項目的數(shù)量、項目包含的特征數(shù)有關(guān).例如,本文在預(yù)測ant-1-7項目的缺陷傾向性時,項目集是由AEEEM中的8個項目、NASA中的8個項目和Relink中的3個項目組成的.因此,當(dāng)備選的項目集的范圍更大時,會導(dǎo)致更大的時間開銷. 5.2.1 結(jié)構(gòu)有效性的分析 影響本文提出的方法的有效性的第一個威脅是目標(biāo)項目數(shù)據(jù)添加到訓(xùn)練數(shù)據(jù)集中的百分比.根據(jù)參考,本文從目標(biāo)項目中隨機選擇了10%的數(shù)據(jù).為了減輕隨機性,本文重復(fù)了50次實驗.但是,選擇不同比例的目標(biāo)數(shù)據(jù)可能會導(dǎo)致不同的性能.這不是本文的重點,而是未來工作的一個研究方向.此外,在本次實驗中,本文對源項目和目標(biāo)項目中包含的所有指標(biāo)都進行了實證研究,對于HDP中不同類型指標(biāo)的會產(chǎn)生的影響也是未來的一個研究方向. 表3 實驗結(jié)果Table 3 Experimental results 5.2.2 內(nèi)部有效性的分析 數(shù)據(jù)不平衡的解決方案可能是對內(nèi)部有效性的威脅.SMOTETomek用于人工生成少數(shù)樣本并刪除邊界樣本,以達到數(shù)據(jù)平衡且易于分類的效果.實驗結(jié)果表明,通過使用SMOTETomek,F(xiàn)TDA是有效的.為了更好地進行比較,本文還在SMOTE和TomekLinks上進行了實驗.在未來的工作中,作者將探索不同方法對數(shù)據(jù)集的不平衡數(shù)據(jù)的更有效解決方案. 5.2.3 外部有效性的分析 選擇更廣泛的數(shù)據(jù)集可能會更好地得出一個一般性結(jié)論.在本文的研究中,作者從4個組中選擇了24個數(shù)據(jù)集,并且源項目的選擇也在此范圍內(nèi),這意味著本文的實驗結(jié)果可能不會推廣到其他數(shù)據(jù)環(huán)境.但是,這些數(shù)據(jù)集已廣泛用于軟件缺陷預(yù)測的先前工作中.為了在一定程度上減輕這種可能的威脅,在將來的工作中,作者將對更多開源或來自商業(yè)軟件項目的缺陷數(shù)據(jù)集進行更多的實驗. 近年來,異質(zhì)缺陷預(yù)測得到了廣泛的研究與關(guān)注,為軟件缺陷預(yù)測提供了新角度和新思路.它解決了目標(biāo)項目訓(xùn)練數(shù)據(jù)稀疏的問題,同時突破了源和目標(biāo)的特征需要保持一致的局限.本文提出了一種基于特征匹配和域自適應(yīng)的方法,該方法利用歐式距離進行特征匹配與項目篩選,采用TCA算法解決不同的數(shù)據(jù)分布問題,最后使用SMOTETomek進行數(shù)據(jù)采樣.本文對來自4個小組(AEEEM,NASA,PROMISE,Relink)的24個公共項目進行了實驗,實驗結(jié)果表明,F(xiàn)TDA的性能優(yōu)于以前的工作. 在未來,作者將嘗試一些新的特征匹配方法和領(lǐng)域適應(yīng)方法.此外,還將嘗試其他一些方法來解決HDP問題,例如深度學(xué)習(xí).4 實驗與分析
4.1 實驗環(huán)境
4.2 實驗數(shù)據(jù)
4.3 實驗設(shè)計
5 實驗結(jié)果分析與討論
5.1 實驗結(jié)果
5.2 對有效性的分析
6 結(jié) 論