張洋洋,荊曉遠(yuǎn),吳 飛
(南京郵電大學(xué) 自動(dòng)化學(xué)院,江蘇 南京 210003)
跨公司軟件缺陷預(yù)測(cè)問(wèn)題不同于傳統(tǒng)的機(jī)器學(xué)習(xí)問(wèn)題,它的訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)屬于不同的分布。為了解決這個(gè)問(wèn)題,目前有許多不同的方法,Turhan等[1]使用一種最近鄰濾波器從源數(shù)據(jù)中選擇與測(cè)試數(shù)據(jù)相似的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)。Zimmermann等[2]使用決策樹(shù)幫助項(xiàng)目管理者進(jìn)行跨工程預(yù)測(cè)前對(duì)精確度、召回率和準(zhǔn)確度進(jìn)行估計(jì)。
Jiang等[3]認(rèn)為,與樣本類別高度相關(guān)的那些特征應(yīng)該在訓(xùn)練得到的模型中被賦予更高的權(quán)重,因而提出了一種兩階段的特征選擇框架。Dai等[4]提出了一種基于聯(lián)合聚類的預(yù)測(cè)領(lǐng)域外文檔的分類方法CoCC,該方法通過(guò)對(duì)類別和特征進(jìn)行同步聚類,實(shí)現(xiàn)知識(shí)與類別的遷移。還有一種方法[5]通過(guò)最小化源數(shù)據(jù)樣本和目標(biāo)數(shù)據(jù)樣本在隱性語(yǔ)義的差距,從而求解降維后的特征空間,在該隱性空間上,不同的領(lǐng)域具有有限相同或者非常接近的均勻分布,因此就可以直接利用監(jiān)督學(xué)習(xí)算法訓(xùn)練模型對(duì)目標(biāo)領(lǐng)域數(shù)據(jù)進(jìn)行預(yù)測(cè)。Jing等[6]提出一種基于字典學(xué)習(xí)的軟件缺陷預(yù)測(cè)方法,能夠高效地預(yù)測(cè)項(xiàng)目?jī)?nèi)缺陷分布。
軟件缺陷預(yù)測(cè)主要根據(jù)軟件的基本屬性(如程序代碼行數(shù),體積,軟件復(fù)雜度等各種信息數(shù)據(jù))和已經(jīng)發(fā)現(xiàn)的缺陷等數(shù)據(jù)借助于機(jī)器學(xué)習(xí)、統(tǒng)計(jì)學(xué)習(xí)等技術(shù)進(jìn)行挖掘和分析,進(jìn)而預(yù)測(cè)出軟件系統(tǒng)中可能遺留而且尚未被發(fā)現(xiàn)的情況[7-9]。
與普通軟件缺陷預(yù)測(cè)算法不同,跨項(xiàng)目軟件缺陷預(yù)測(cè)中的訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)屬于不同的分布。為了解決這個(gè)問(wèn)題,Turhan等提出了一種最近鄰濾波器算法從源數(shù)據(jù)中選擇相似的樣本用于訓(xùn)練。Zimmermann等考察了使用決策樹(shù)時(shí)不同特征對(duì)缺陷預(yù)測(cè)質(zhì)量的影響。Liu等[10]提出在多個(gè)數(shù)據(jù)庫(kù)上基于搜索方法進(jìn)行軟件缺陷預(yù)測(cè)。與基于非搜索的模型比較,他們的方法具有較低的錯(cuò)誤分類代價(jià)。Ma等[11]基于目標(biāo)數(shù)據(jù)樣本的特征信息對(duì)源數(shù)據(jù)特征設(shè)置權(quán)重,提出了一種基于樸素貝葉斯的跨公司軟件缺陷預(yù)測(cè)模型。
文中提出一種聯(lián)合適配分布算法,通過(guò)一個(gè)特征映射T使特征x和標(biāo)簽y的期望在訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)之間相匹配:
‖EPx(x)[T(x)]-EPt(t)[T(t)]‖2+
‖EQx(y|x)[y|T(x)]-EQt(y|t)[y|T(t)]‖2
(1)
因?yàn)闆](méi)有帶有標(biāo)簽的測(cè)試,所以條件概率Qt(y|t)不能明確地計(jì)算出來(lái)。最佳的估計(jì)就是假設(shè)Qt(y|t)≈Qx(y|t),這樣就可以通過(guò)使用一個(gè)分類器在有標(biāo)簽的訓(xùn)練集上訓(xùn)練出分類器f作用在無(wú)標(biāo)簽的測(cè)試集上。
(2)
其中,tr()表示矩陣的跡。并且這個(gè)優(yōu)化問(wèn)題可以很好地使用特征分解:XHXTA=AΦ,Φ=diag(φ1,φ2,…,φk)∈Rk×k是前k個(gè)最大的特征值。然后得到最優(yōu)的k維的特征表示:Z=[z1,z2,…,za]=ATX。
然而,通過(guò)PCA方法將數(shù)據(jù)降維后,訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)之間分布的差異依然很大。因此主要的問(wèn)題是通過(guò)一定的度量方式來(lái)降低兩個(gè)分布Px(x)和Pt(t)之間的距離。采用文獻(xiàn)[12]提出的Maximum Mean作為距離度量方法,計(jì)算訓(xùn)練數(shù)據(jù)樣本和測(cè)試數(shù)據(jù)樣本之間的均值之差:
(3)
其中,M0是MMD矩陣,可以通過(guò)式4計(jì)算:
(4)
通過(guò)最小化式3即是最大化式2,然后訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)經(jīng)過(guò)Z=ATX的轉(zhuǎn)換后,兩種分布之間的距離變近了。這個(gè)方法其實(shí)就是TCA[13]。
更進(jìn)一步,參照文獻(xiàn)[14],最小化條件分布Qx(y|x)和Qt(y|t)也是一個(gè)很重要的方面。遺憾的是,由于在測(cè)試數(shù)據(jù)集中沒(méi)有標(biāo)簽,所以就無(wú)法對(duì)Qt(y|t)進(jìn)行直接建模。由于先驗(yàn)概率Qx(y|x)和Qt(y|t)之間聯(lián)系緊密,轉(zhuǎn)而去探索用類條件概率分布Qx(x|y)和Qt(t|y)來(lái)代替。現(xiàn)在由于具備了真實(shí)的訓(xùn)練數(shù)據(jù)標(biāo)簽和偽測(cè)試數(shù)據(jù)標(biāo)簽,可以匹配類條件概率分布Qx(x|y=c)和Qt(t|y=c),其中c屬于類標(biāo)簽的集合。通過(guò)修改MMD來(lái)度量?jī)煞N條件分布之間的距離:
(5)
其中,L(c)={xi:xi∈L∧y(xi)=c}表示在訓(xùn)練數(shù)據(jù)中屬于類別c的樣本點(diǎn),y(xi)是它對(duì)應(yīng)的標(biāo)簽。
測(cè)試數(shù)據(jù)中使用的偽標(biāo)簽不是正確的,我們?nèi)匀豢梢越栌盟鼈儊?lái)匹配條件概率分布。理論參考是使用充分統(tǒng)計(jì)量代替密度估計(jì)。
整合前面兩個(gè)優(yōu)化的問(wèn)題,可以得到最終的目標(biāo)函數(shù):
(6)
其中,λ是一個(gè)正則化參數(shù)。
對(duì)于非線性問(wèn)題,考慮核映射ψ:x→ψ(x)與核矩陣K=ψ(x)Tψ(x)∈Ra×a。
上述優(yōu)化問(wèn)題轉(zhuǎn)化為:
(7)
通過(guò)約束優(yōu)化理論,使用Φ=diag(φ1,φ2,…,φk)∈Rk×k代表拉格朗日乘子,然后推導(dǎo)出問(wèn)題7的拉格朗日函數(shù)為:
ATXHXTA)Φ]
(8)
(9)
最終,求解最優(yōu)適配矩陣A的問(wèn)題轉(zhuǎn)化為求等式9的最小k個(gè)特征向量。
整個(gè)算法的學(xué)習(xí)過(guò)程總結(jié)如下:
(1)通過(guò)式4構(gòu)造MMD矩陣。
(2)重復(fù):求解式9所描述的特征分解問(wèn)題,然后選擇前k個(gè)最小的特征向量來(lái)構(gòu)造適配矩陣A,在新的特征表示上訓(xùn)練出一個(gè)標(biāo)準(zhǔn)的分類器f來(lái)更新偽測(cè)試數(shù)據(jù)標(biāo)簽。根據(jù)式6的構(gòu)造MMD矩陣M。直到收斂。
(3)返回在新的特征表示上訓(xùn)練得到的分類器f。
將提出的JDBFM算法與文獻(xiàn)[11]提出的TNB算法、文獻(xiàn)[1]提出的NN-filter算法進(jìn)行對(duì)比,依據(jù)軟件缺陷預(yù)測(cè)常用的性能指標(biāo)召回率(recall)、精確度(precision)、假陽(yáng)率(pf)以及F-measure對(duì)算法進(jìn)行評(píng)價(jià)。
文中采用召回率、精確度和F-measure值評(píng)估模型的預(yù)測(cè)效果。由于高的召回率往往要以低精確度為代價(jià),反之亦然。因此,可以使用F-measure將召回率和精確度綜合起來(lái)進(jìn)行評(píng)價(jià)。F-measure為召回率和查準(zhǔn)率的調(diào)和平均數(shù),值越高性能越好,其計(jì)算公式如下:
(10)
對(duì)于NN-filter算法,每個(gè)測(cè)試數(shù)據(jù)都要從訓(xùn)練數(shù)據(jù)中選擇k個(gè)最近鄰的樣本構(gòu)成訓(xùn)練數(shù)據(jù)集來(lái)訓(xùn)練軟件缺陷預(yù)測(cè)模型,與文獻(xiàn)[11]保持一致,文中也選取k=10。
文中提出的算法JDBFM中有兩個(gè)參數(shù)需要設(shè)置:子空間基數(shù)k和正則項(xiàng)系數(shù)λ(λ=2.0),在下列的數(shù)據(jù)集上的實(shí)驗(yàn)中證實(shí)了在一個(gè)很大的參數(shù)的范圍內(nèi)可以得到一個(gè)相對(duì)穩(wěn)定的結(jié)果。實(shí)驗(yàn)結(jié)果如圖1和圖2所示。
Train→testNN-filterTNBJDBFMZXing→Safe0.466 60.526 30.456 5ZXing→Apache0.511 10.544 90.475 6Safe→ZXing0.328 50.297 20.526 3Safe→Apache0.477 10.557 50.652 2Apache→ZXing0.360 10.409 00.573 0Apache→Safe0.669 20.692 30.718 8Average0.468 70.504 50.600 1
圖1 ReLink數(shù)據(jù)庫(kù)實(shí)驗(yàn)結(jié)果
圖2 AEEEM數(shù)據(jù)庫(kù)實(shí)驗(yàn)結(jié)果
通過(guò)以上實(shí)驗(yàn)結(jié)果可以看出,NN-filter算法所獲得的實(shí)驗(yàn)結(jié)果F-measure值較TNB和JDBFM算法都要低一些。而提出的JDBFM算法考慮了目標(biāo)數(shù)據(jù)和源數(shù)據(jù)之間的分布和條件分布,效果要比以上兩種算法好。實(shí)驗(yàn)結(jié)果也證明了JDBFM算法的優(yōu)越性。
在缺陷預(yù)測(cè)模型中,訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)分別來(lái)源于不同的工程,訓(xùn)練數(shù)據(jù)是有標(biāo)簽的,而測(cè)試數(shù)據(jù)是沒(méi)有標(biāo)簽的,并且源數(shù)據(jù)和測(cè)試數(shù)據(jù)來(lái)源于不同的分布。提出的算法JDBFM能夠很大限度地利用跨項(xiàng)目數(shù)據(jù)信息。通過(guò)在現(xiàn)有兩份數(shù)據(jù)庫(kù)上的實(shí)驗(yàn),證明了該算法能顯著提高跨項(xiàng)目軟件缺陷預(yù)測(cè)的性能。