張金傳 張 震
1(扎蘭屯職業(yè)學(xué)院 內(nèi)蒙古 呼倫貝爾 162650) 2(中南大學(xué)計(jì)算機(jī)學(xué)院 湖南 長(zhǎng)沙 410000)
軟件缺陷預(yù)測(cè)技術(shù)利用機(jī)器學(xué)習(xí)方法分析軟件缺陷歷史數(shù)據(jù),標(biāo)記出容易出現(xiàn)缺陷的軟件模塊。開發(fā)人員可以根據(jù)軟件缺陷預(yù)測(cè)結(jié)果合理地調(diào)度資源,提高軟件驗(yàn)證效率,從而保障軟件質(zhì)量[1]。由于大部分軟件缺陷集中在少數(shù)模塊當(dāng)中,軟件缺陷數(shù)據(jù)的分布具有不平衡性[2-3]。此外,將無缺陷軟件模塊錯(cuò)誤標(biāo)記為有缺陷造成的代價(jià)遠(yuǎn)小于將有缺陷模塊錯(cuò)誤標(biāo)記為無缺陷造成的代價(jià)。前者會(huì)造成測(cè)試資源的浪費(fèi),而后者會(huì)嚴(yán)重影響軟件的可靠性[4]。傳統(tǒng)的機(jī)器學(xué)習(xí)方法以最大化模型準(zhǔn)確率為目標(biāo),假設(shè)數(shù)據(jù)分布平衡且不同類別的誤分類代價(jià)相等,在軟件缺陷預(yù)測(cè)中效果有限。針對(duì)這個(gè)問題,現(xiàn)有的研究通?;诖鷥r(jià)敏感學(xué)習(xí)方法構(gòu)建軟件缺陷預(yù)測(cè)模型,為少數(shù)類樣本與多數(shù)類樣本設(shè)置不同的誤分類代價(jià)。這些方法包括在數(shù)據(jù)層面上對(duì)有缺陷模塊的過采樣方法[5-7]、對(duì)無缺陷模塊的降采樣方法[8-10],以及在算法層面上擴(kuò)展樸素貝葉斯、神經(jīng)網(wǎng)絡(luò)等傳統(tǒng)機(jī)器學(xué)習(xí)方法得到的代價(jià)敏感學(xué)習(xí)方法[3,11-12]。
目前的軟件缺陷預(yù)測(cè)方法均依賴于主觀輸入的誤分類代價(jià),或者由訓(xùn)練數(shù)據(jù)的分布得到相對(duì)合理的誤分類代價(jià)。然而,訓(xùn)練數(shù)據(jù)往往只占整個(gè)數(shù)據(jù)集的小部分,訓(xùn)練數(shù)據(jù)的分布不能反映真實(shí)的數(shù)據(jù)類別分布,僅僅通過訓(xùn)練數(shù)據(jù)分布判斷模型參數(shù)具有很大的局限性。因此,本文在NB(Naive Bayes)和EM(Expectation Maximization)方法的基礎(chǔ)上展開,提出一種充分利用未標(biāo)記數(shù)據(jù)的代價(jià)敏感學(xué)習(xí)方法——CSNB-EM。CSNB-EM方法在軟件缺陷預(yù)測(cè)中的優(yōu)勢(shì)包括:(1) 方法為有缺陷軟件模塊與無缺陷軟件模塊設(shè)置合理的誤分類代價(jià),基于代價(jià)敏感學(xué)習(xí)提高對(duì)有缺陷軟件模塊的識(shí)別能力;(2) 方法利用未標(biāo)記數(shù)據(jù)迭代優(yōu)化誤分類代價(jià)等模型參數(shù),建立的軟件缺陷預(yù)測(cè)模型更加符合整個(gè)數(shù)據(jù)集的分布。在公開的MDP軟件缺陷數(shù)據(jù)集上進(jìn)行的對(duì)比實(shí)驗(yàn)表明,CSNB-EM方法在處理軟件缺陷數(shù)據(jù)時(shí),預(yù)測(cè)性能明顯優(yōu)于CS-NB、CS-NN等現(xiàn)有的代價(jià)敏感學(xué)習(xí)方法。
軟件缺陷數(shù)據(jù)是一種典型的不平衡數(shù)據(jù),有缺陷軟件模塊的數(shù)量遠(yuǎn)遠(yuǎn)小于無缺陷模塊。例如,美國航空航天局的MDP數(shù)據(jù)集[13]中,MC1項(xiàng)目的缺陷率為10.23%,PC1項(xiàng)目的缺陷率為8.04%。用追求高準(zhǔn)確率的傳統(tǒng)機(jī)器學(xué)習(xí)方法處理缺陷數(shù)據(jù)時(shí),很多有缺陷模塊會(huì)被判定為無缺陷。代價(jià)敏感軟件缺陷預(yù)測(cè)方法通過為不同類別設(shè)置不同的誤分類代價(jià)解決缺陷數(shù)據(jù)的不平衡問題,包括數(shù)據(jù)和算法兩個(gè)層面的方法。
數(shù)據(jù)層面的代價(jià)敏感方法大多采用重采樣技術(shù),包括增加少數(shù)類樣本的過采樣方法和減少多數(shù)類樣本的降采樣方法。針對(duì)少數(shù)類樣本的過采樣方法隨機(jī)生成一定數(shù)量的有缺陷樣本并添加到數(shù)據(jù)集中,使得數(shù)據(jù)集中有缺陷樣本與無缺陷樣本的數(shù)量達(dá)到平衡[5-7]。例如,文獻(xiàn)[6]結(jié)合過采樣與Boosting技術(shù)提出PCBoost方法,在每一輪訓(xùn)練開始時(shí)合成一定數(shù)量的少數(shù)類樣本,并把合成樣本加入到訓(xùn)練數(shù)據(jù)集當(dāng)中。為了防止部分不合理的合成樣本降低模型性能,方法在每一輪訓(xùn)練結(jié)束時(shí),刪除被誤分的少數(shù)類樣本。針對(duì)多數(shù)類樣本的降采樣方法通過減少無缺陷樣本的數(shù)量平衡數(shù)據(jù)集的類別[8-10]。文獻(xiàn)[9]提出了有效的降采樣方法:將多數(shù)類樣本分成多個(gè)子集,每個(gè)子集都和少數(shù)類一起訓(xùn)練一個(gè)分類器,最后集成這些分類器。
文獻(xiàn)[14]指出,與數(shù)據(jù)層面的代價(jià)敏感學(xué)習(xí)方法相比,算法層面的代價(jià)敏感學(xué)習(xí)方法在處理不平衡數(shù)據(jù)時(shí)通常具有更好的性能。算法層面的代價(jià)敏感學(xué)習(xí)方法不改變數(shù)據(jù)分布,而是讓算法對(duì)誤分類代價(jià)較高的類別產(chǎn)生偏置[3,11-12]。例如,文獻(xiàn)[12]用不同的誤分類代價(jià)拓展決策樹算法來提高對(duì)少數(shù)類的識(shí)別能力,基于不同的特征子集訓(xùn)練多個(gè)弱分類器并且集成弱分類器的預(yù)測(cè)結(jié)果。
代價(jià)敏感學(xué)習(xí)方法能有效提高模型對(duì)少數(shù)類的識(shí)別能力?;诖鷥r(jià)敏感學(xué)習(xí)方法構(gòu)建缺陷預(yù)測(cè)模型能顯著提高軟件缺陷預(yù)測(cè)的效果。然而,這些方法通常需要人為確定一組誤分類代價(jià)。在軟件缺陷預(yù)測(cè)的任務(wù)中,標(biāo)記軟件模塊的成本高昂,有標(biāo)記的訓(xùn)練樣本通常遠(yuǎn)少于無標(biāo)記樣本。在這種情況下,難以基于訓(xùn)練樣本得到適應(yīng)整個(gè)數(shù)據(jù)集的誤分類代價(jià)。本文提出的CSNB-EM方法充分利用無標(biāo)記樣本優(yōu)化誤分類代價(jià)及其他模型參數(shù),所建立的模型在軟件缺陷預(yù)測(cè)中具有明顯優(yōu)勢(shì)。
CSNB-EM方法首先在訓(xùn)練數(shù)據(jù)集上構(gòu)建樸素貝葉斯分類模型,應(yīng)用交叉驗(yàn)證搜索適合訓(xùn)練數(shù)據(jù)集與該分類模型的最優(yōu)誤分類代價(jià),并將搜索到的誤分類代價(jià)應(yīng)用在分類模型上,然后通過EM算法利用未標(biāo)記數(shù)據(jù)集修正模型參數(shù)。
樸素貝葉斯方法是一種建立軟件缺陷預(yù)測(cè)模型的常用方法[15-16]。令L={(x1,y1),(x2,y2),…,(xn,yn)}表示訓(xùn)練數(shù)據(jù)集合。對(duì)于任意0≤i≤n,yi表示樣本xi的類別。U={xn+1,xn+2,…,xn+m}表示一組未標(biāo)記數(shù)據(jù)。數(shù)據(jù)集中的樣本有k個(gè)屬性,用aj表示第j個(gè)屬性,用aij表示樣本xi的第j個(gè)屬性,則xi={xi1,xi2,…,xik}。給定一個(gè)類別c,P(c|xi)表示樣本xi的類別為c的概率,P(xi|c)表示類別c中,樣本xi出現(xiàn)的概率,P(c)表示類別c出現(xiàn)的概率。根據(jù)貝葉斯理論,P(c|xi)可以通過P(c)·P(xi|c)估計(jì)。
P(c|xi)∝P(c)·P(xi|c)
(1)
在軟件缺陷預(yù)測(cè)的任務(wù)中,通常可以基于樸素貝葉斯方法假設(shè)數(shù)據(jù)的每個(gè)屬性獨(dú)立分布。樸素貝葉斯方法在軟件缺陷預(yù)測(cè)中的應(yīng)用表明:該假設(shè)能顯著提高訓(xùn)練模型的效率,而不會(huì)明顯降低模型性能[15-16]?;谠摷僭O(shè),式(1)可以寫為:
(2)
在處理不平衡數(shù)據(jù)時(shí),基于式(2)標(biāo)記樣本類別可能會(huì)降低少數(shù)類別樣本分類的準(zhǔn)確率。針對(duì)這個(gè)問題,本文基于混淆矩陣引入不同的誤分類代價(jià)。設(shè)正例樣本為有缺陷樣本,類別用1表示,負(fù)例樣本表示無缺陷樣本,類別用0表示。對(duì)于任意1≤i≤n+m,都有ci∈C={0,1}。誤分類代價(jià)如表1所示。
表1 誤分類代價(jià)矩陣
基于誤分類代價(jià)矩陣,可以定義代價(jià)函數(shù)為:
(3)
本文通過最小化代價(jià)函數(shù)標(biāo)記樣本的類別。為了簡(jiǎn)化模型,令F(1,1)=F(0,0)=0。令F(1,1)>F(0,0)以提高負(fù)例樣本的分類準(zhǔn)確率。當(dāng)ci≠cj時(shí),將F(ci,cj)簡(jiǎn)寫為Fci。
CSNB-EM算法基于未標(biāo)記數(shù)據(jù)調(diào)整模型參數(shù)。具體做法為:基于模型參數(shù)建立模型,預(yù)測(cè)無標(biāo)記樣本集的標(biāo)記,然后利用這些標(biāo)記修正模型參數(shù)。這個(gè)過程迭代進(jìn)行直到模型參數(shù)與樣本標(biāo)記收斂。
算法首先在訓(xùn)練數(shù)據(jù)集上學(xué)習(xí)一組分類參數(shù),包括P(c)與P(aj|c)。參數(shù)P(c)反映了數(shù)據(jù)類別的分布,P(aj|c)是樣本第j個(gè)屬性的條件概率?;谟?xùn)練數(shù)據(jù)集中樣本的類別可以計(jì)算得出P(c)與P(aj|c)。
(4)
(5)
式中:對(duì)于任意α與β,如果α=β,則φ(α,β)=1,否則,φ(α,β)=0。
首先令F(1,0)=F(0,1)=1,然后迭代進(jìn)行E-step與M-step兩個(gè)步驟調(diào)整樣本類別與模型參數(shù)。
E-step:標(biāo)記數(shù)據(jù)集U中的樣本。
f(xi)=argmincL(x,c)
(6)
M-step:調(diào)整模型參數(shù)。由于數(shù)據(jù)集U中樣本的標(biāo)記未知,為這些樣本分配一個(gè)權(quán)重0<λ<1來降低無標(biāo)記樣本對(duì)模型參數(shù)的影響。
(7)
(8)
Fc=argmaxFP(L,U,Z|hc,a|c,F)
(9)
式中:Z={f(xn+1),f(xn+2),…,f(xn+m)}表示對(duì)無標(biāo)記樣本類別的預(yù)測(cè)結(jié)果;hc,a|c是P(c)與P(a|c)兩個(gè)模型參數(shù)。式(9)尋找的是適合當(dāng)前步驟中的模型參數(shù)與樣本類別的誤分類代價(jià)。
CSNB-EM算法過程如算法1所示。
算法1CSNB-EM算法
輸入:最大迭代次數(shù)T,L={(x1,y1),(x2,y2),…,(xn,yn)},U={xn+1,xn+2,…,xn+m}。
輸出:U中樣本的標(biāo)簽。
1.F0(1,0)=F1(0,1)=1;
2.根據(jù)式(4)與式(5)計(jì)算P0(c)與P0(a|c);
3.fort=1 toTdo
6.returnfT(x)
算法在第2步用樸素貝葉斯方法在訓(xùn)練數(shù)據(jù)集上計(jì)算初始模型參數(shù)。第4步與第5步迭代利用模型參數(shù)標(biāo)記數(shù)據(jù)類別,并利用數(shù)據(jù)類別修正模型參數(shù),其中第4步對(duì)應(yīng)E-step,第5步對(duì)應(yīng)M-step。
CSNB-EM算法根據(jù)訓(xùn)練數(shù)據(jù)集、無標(biāo)記數(shù)據(jù)集、無標(biāo)記數(shù)據(jù)集的預(yù)測(cè)結(jié)果計(jì)算誤分類代價(jià)。本節(jié)給出誤分類代價(jià)最優(yōu)取值的估計(jì)方法。方法基于不同誤分類代價(jià)對(duì)應(yīng)的模型性能確定誤分類代價(jià)的取值。由于L與U中樣本的權(quán)重不同,在估計(jì)模型性能時(shí),需要弱化U中樣本的影響,因此本文提出表2所示的加權(quán)混淆矩陣估計(jì)模型性能。
表2 加權(quán)混淆矩陣
表2中,TP表示被正確標(biāo)記的有缺陷樣本的權(quán)重之和,F(xiàn)N表示被錯(cuò)誤標(biāo)記的有缺陷樣本的權(quán)重之和,TN表示被正確標(biāo)記的無缺陷樣本的權(quán)重之和,F(xiàn)P表示被錯(cuò)誤標(biāo)記的無缺陷樣本的權(quán)重之和。其中:wi表示樣本xi的權(quán)重,如果xi∈L,wi=1,否則wi=λ;yi是樣本xi的標(biāo)簽,如果xi∈U,則yi=f(xi);h(xi)是模型預(yù)測(cè)的xi的類別。
由于缺陷數(shù)據(jù)的不平衡性,不能僅僅通過準(zhǔn)確率評(píng)價(jià)模型性能。考慮到性能良好的模型即應(yīng)該識(shí)別出多的正例,又要保證預(yù)測(cè)的準(zhǔn)確性,通過以下兩項(xiàng)指標(biāo)考察模型性能:
Recall=TP/(TP+FN)
(10)
Precision=TP/(TP+FP)
(11)
式中:Recall表示正例樣本中被預(yù)測(cè)正確的樣本所占比例;Precision表示被預(yù)測(cè)為正例的樣本中被預(yù)測(cè)正確的樣本比例。顯然,Recall的值高說明分類器對(duì)正例有較高的偏置,但對(duì)正例偏置過高會(huì)導(dǎo)致Precision的降低。合理的誤分類代價(jià)應(yīng)該能使得模型在Recall與Precision兩個(gè)指標(biāo)上達(dá)到一個(gè)最優(yōu)折衷,參考文獻(xiàn)[17],本文取Recall與Precision的幾何平均值作為衡量模型性能的標(biāo)準(zhǔn)。
(12)
本文在誤分類代價(jià)的范圍內(nèi)迭代取值,構(gòu)造模型并在數(shù)據(jù)集上進(jìn)行10折交叉驗(yàn)證,找到使得GeoM達(dá)到最大值的誤分類代價(jià)。為了計(jì)算方便,令F(1,0)=1,F(xiàn)(0,1)在(0,1)區(qū)間迭代取值。搜索誤分類代價(jià)的算法如算法2所示。
算法2搜索誤分類代價(jià)算法
輸入:代價(jià)增量ΔF,L={(x1,y1),(x2,y2),…,(xn,yn)},Z={f(xn+1),f(xn+2),…,f(xn+m)},U={xn+1,xn+2,…,xn+m},模型參數(shù)P(c)、P(a|c)。
輸出:誤分類代價(jià)F(0,1)。
1.F′=F*=1,Gmax=0;
2.whileF′>0do
3.根據(jù)模型參數(shù)F(1,0)=1,F(0,1)=F′,P(c),P(a|c)與式(3)計(jì)算代價(jià)函數(shù)L(x,c);
4.通過最小化代價(jià)函數(shù)L(x,c)標(biāo)記L∪U中樣本,得到h(x);
5.根據(jù)h(x)與式(12)計(jì)算GeoM;
6.ifGeoM>Gmaxdo
7.F*=F′,Gmax=GeoM;
8.F′=F′-ΔF;
9.returnF(0,1)=F*
算法根據(jù)訓(xùn)練數(shù)據(jù)集合L、無標(biāo)記數(shù)據(jù)集合U、U中樣本的預(yù)測(cè)標(biāo)簽集合Z搜索誤分類代價(jià)的合理取值。通過加權(quán)混淆矩陣計(jì)算模型的GeoM指標(biāo),并返回使該指標(biāo)最大化的誤分類代價(jià)取值。
本文采用NASA公開的MDP軟件缺陷數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù),如表3所示。數(shù)據(jù)集可以從PROMISE網(wǎng)站上獲取[13]。數(shù)據(jù)集中的每個(gè)數(shù)據(jù)資源都表示一個(gè)NASA軟件項(xiàng)目?jī)?nèi)的模塊信息。表4中給出了數(shù)據(jù)集屬性的描述。由于數(shù)據(jù)屬性是連續(xù)的,本文使用基于MDL的離散化方法[18]將屬性離散化。
表3 數(shù)據(jù)集
表4 數(shù)據(jù)集屬性
實(shí)驗(yàn)選用GeoM與AUC作為算法的評(píng)價(jià)標(biāo)準(zhǔn)。GeoM表示模型Recall與Precision的幾何平均。AUC是ROC曲線下的面積,被認(rèn)為是一種評(píng)價(jià)不平衡數(shù)據(jù)分類效果的優(yōu)秀指標(biāo)。高的AUC值對(duì)應(yīng)理想的分類模型。實(shí)驗(yàn)在MDP數(shù)據(jù)集上隨機(jī)抽取20%的樣本作為訓(xùn)練數(shù)據(jù),建立多個(gè)模型進(jìn)行比較,包括:用代價(jià)敏感拓展樸素貝葉斯方法得到的CS-NB(Cost-Sensitive Naive Bayes)方法;代價(jià)敏感軟件缺陷預(yù)測(cè)方法CS-NN(Cost-Sensitive Neural Network)[11]。為了考察CSNB-EM方法自適應(yīng)搜索最優(yōu)誤分類代價(jià)的效果,首先在誤分類代價(jià)的范圍內(nèi)動(dòng)態(tài)調(diào)整誤分類代價(jià)構(gòu)建CS-NB模型,通過在數(shù)據(jù)集上驗(yàn)證模型效果找到最優(yōu)誤分代價(jià)并在每個(gè)數(shù)據(jù)集上都用最優(yōu)誤分類代價(jià)構(gòu)建CS-NB模型與CSNB-EM方法對(duì)比。取F(1,0)=1,調(diào)整F(0,1)的取值。圖1是CS-NB方法在各個(gè)數(shù)據(jù)集上的GeoM值,表5是根據(jù)圖1為CS-NB方法搜索到的最優(yōu)誤分類代價(jià)。
圖1 CS-NB模型性能比較
表5 CS-NB模型最優(yōu)誤分類代價(jià)
可以看出,誤分類代價(jià)的選擇對(duì)CS-NB模型的GeoM值有明顯影響,不合理的誤分類代價(jià)與最優(yōu)誤分類代價(jià)構(gòu)造的模型在GeoM指標(biāo)上相差很大。這說明CS-NB方法對(duì)軟件缺陷數(shù)據(jù)的預(yù)測(cè)性能嚴(yán)重依賴于誤分類代價(jià)的選擇。但在實(shí)際應(yīng)用中,有標(biāo)記數(shù)據(jù)只占數(shù)據(jù)集的一部分,傳統(tǒng)的代價(jià)敏感方法難以確定適合整個(gè)數(shù)據(jù)集的最優(yōu)誤分代價(jià)。因此,本文提出的方法將傳統(tǒng)代價(jià)敏感方法所忽略的未標(biāo)記數(shù)據(jù)充分利用起來,自適應(yīng)地搜索適合整個(gè)數(shù)據(jù)集的最優(yōu)誤分代價(jià)。用表5中的最優(yōu)誤分代價(jià)構(gòu)建CS-NB模型,λ的值取0.2,進(jìn)行下一步的對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如表6所示,每個(gè)數(shù)據(jù)集上的最好結(jié)果加粗標(biāo)出。
表6 模型性能
可以看出,在KC1與KC3數(shù)據(jù)集上,CSNB-EM模型的性能接近于用最優(yōu)誤分類代價(jià)構(gòu)建的CS-NB模型,而在CM1、MW1、MC2三個(gè)數(shù)據(jù)集上CSNB-EM模型達(dá)到了比CS-NB模型更高的GeoM與AUC指標(biāo)。這充分說明了CSNB-EM方法自適應(yīng)調(diào)整模型參數(shù)的良好效果。雖然未標(biāo)記數(shù)據(jù)的實(shí)際標(biāo)簽無法獲取,不能直接判斷最優(yōu)誤分類代價(jià),但CSNB-EM方法利用未標(biāo)記數(shù)據(jù)迭代調(diào)整誤分類代價(jià),同樣構(gòu)建了性能良好的分類模型。在CM1、MW1、MC2三個(gè)數(shù)據(jù)集上,CSNB-EM方法有更好的性能是由于方法還利用未標(biāo)記數(shù)據(jù)調(diào)整先驗(yàn)概率P(c)與條件概率P(a|c),構(gòu)建的模型更能適應(yīng)整個(gè)數(shù)據(jù)集。另外,CS-NN方法在MC2上的GeoM略高于CSNB-EM方法。在KC1數(shù)據(jù)集上,CS-NN的GeoM與CSNB-EM方法相當(dāng),而AUC指標(biāo)超過CSNB-EM方法2.1百分點(diǎn)。KC1上CSNB-EM方法的性能低于CS-NN的原因是EM算法對(duì)初始值的敏感性,得到的模型參數(shù)會(huì)受到在訓(xùn)練數(shù)據(jù)集上決定的初始模型參數(shù)的影響。在表6中還可以看出,所有方法在MC2上都取得了較好的GeoM性能,這與數(shù)據(jù)不平衡程度有關(guān)。在表3中MC2的不平衡度是1.841,是所有數(shù)據(jù)集里最小的,方法在相對(duì)平衡的數(shù)據(jù)集上更容易良好地折衷Recall與Precision的值,所以MC2上的GeoM明顯高于其他數(shù)據(jù)集。
本實(shí)驗(yàn)的目的是驗(yàn)證訓(xùn)練參數(shù)λ對(duì)CSNB-EM算法性能的影響。λ是本文在M-step修正模型參數(shù)時(shí)賦予未標(biāo)記數(shù)據(jù)的權(quán)值,用來減弱未標(biāo)記數(shù)據(jù)的影響。在實(shí)驗(yàn)數(shù)據(jù)中取20%的樣本作為訓(xùn)練數(shù)據(jù),分別用不同的λ值訓(xùn)練模型。實(shí)驗(yàn)結(jié)果如圖2所示??梢钥闯?,λ取得過高或過低都會(huì)對(duì)模型性能產(chǎn)生影響,在每一個(gè)數(shù)據(jù)級(jí)上,都是λ=0或λ=1的模型性能最低。當(dāng)λ=0.2或λ=0.4時(shí)模型效果較好。當(dāng)λ的值過低時(shí),未標(biāo)記數(shù)據(jù)對(duì)模型的修正作用有限。實(shí)際上,當(dāng)λ=0時(shí),CSNB-EM算法相當(dāng)于用監(jiān)督學(xué)習(xí)的方法構(gòu)建模型。另外,由于未標(biāo)記數(shù)據(jù)的數(shù)量明顯大于訓(xùn)練數(shù)據(jù)的數(shù)量,λ取值過大會(huì)使得未標(biāo)記數(shù)據(jù)對(duì)模型參數(shù)的影響過大,用未標(biāo)記數(shù)據(jù)調(diào)整模型參數(shù)反而會(huì)降低模型性能。從圖2中還可以看出,由于MC2數(shù)據(jù)集的不平衡程度較小,模型在MC2上的GeoM性能十分突出。
(a) GeoM
(b) AUC圖2 λ對(duì)模型性能的影響
本節(jié)通過實(shí)驗(yàn)驗(yàn)證方法的收斂性。在每一輪訓(xùn)練結(jié)束時(shí)都記錄下當(dāng)前模型在數(shù)據(jù)集中的性能。如圖3所示,方法構(gòu)建的模型總能同時(shí)在AUC與GeoM兩個(gè)指標(biāo)收斂到一個(gè)最優(yōu)性能,同時(shí)收斂速度非常快,在每一個(gè)數(shù)據(jù)集上都在10次迭代之內(nèi)基本收斂。實(shí)驗(yàn)結(jié)果表明,CSNB-EM方法具有良好的收斂性。
(a) GeoM
(b) AUC圖3 CSNB-EM方法的收斂性
本文針對(duì)目前軟件缺陷預(yù)測(cè)研究當(dāng)中存在的誤分類代價(jià)難以確定的問題,提出一種動(dòng)態(tài)調(diào)整誤分代價(jià)的半監(jiān)督學(xué)習(xí)方法(CSNB-EM)。方法同時(shí)利用訓(xùn)練數(shù)據(jù)與未標(biāo)記數(shù)據(jù)迭代優(yōu)化模型參數(shù),并且自適應(yīng)地確定誤分類代價(jià)的合理取值。在公開的MDP軟件缺陷數(shù)據(jù)集的5個(gè)項(xiàng)目上進(jìn)行實(shí)驗(yàn),基于AUC與GeoM測(cè)評(píng)指標(biāo)估計(jì)模型性能。實(shí)驗(yàn)結(jié)果表明,CSNB-EM算法與CS-NB、CS-NN等現(xiàn)有的軟件缺陷預(yù)測(cè)算法相比,其構(gòu)建的缺陷預(yù)測(cè)模型性能有明顯提高。