繆林松
(南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江南南京 210016)
基于代價(jià)敏感神經(jīng)網(wǎng)絡(luò)算法的軟件缺陷預(yù)測(cè)
繆林松
(南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江南南京 210016)
軟件缺陷預(yù)測(cè)作為軟件工程領(lǐng)域的重要研究?jī)?nèi)容已有近30年。近年來,隨著機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,傳統(tǒng)機(jī)器學(xué)習(xí)技術(shù)基于靜態(tài)代碼屬性的軟件缺陷預(yù)測(cè)領(lǐng)域得到廣泛應(yīng)用。然而,傳統(tǒng)的機(jī)器學(xué)習(xí)算法并未考慮軟件缺陷預(yù)測(cè)過程中,常見的代價(jià)敏感問題與類不均衡問題。文中將基于過采樣技術(shù)和閾值移動(dòng)技術(shù)的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于軟件缺陷預(yù)測(cè)領(lǐng)域,從而解決該領(lǐng)域的代價(jià)敏感問題與類不均衡問題。在NASA軟件缺陷預(yù)測(cè)標(biāo)準(zhǔn)數(shù)據(jù)集上的實(shí)驗(yàn)證明了其有效性。
軟件缺陷預(yù)測(cè);代價(jià)敏感神經(jīng)網(wǎng)絡(luò);代價(jià)敏感;類不均衡
軟件缺陷預(yù)測(cè),即自動(dòng)識(shí)別軟件系統(tǒng)中含有缺陷的模塊,以此有效分配有限的測(cè)試資源。隨著軟件規(guī)模和復(fù)雜度的增加,軟件缺陷預(yù)測(cè)成為軟件工程領(lǐng)域的研究熱點(diǎn)。同時(shí),機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,機(jī)器學(xué)習(xí)技術(shù)被眾多研究人員應(yīng)用于軟件缺陷預(yù)測(cè)領(lǐng)域[1-5]。與此同時(shí),研究表明絕大多數(shù)軟件缺陷集中在少數(shù)比例的軟件模塊中[6]。Boehm指出軟件系統(tǒng)中20%的軟件模塊包含80%的軟件缺陷,這說明軟件缺陷預(yù)測(cè)領(lǐng)域存在嚴(yán)重的類不均衡問題[7]。此外,將有缺陷軟件模塊錯(cuò)誤預(yù)測(cè)為無缺陷模塊造成的代價(jià)遠(yuǎn)大于將無缺陷軟件模塊錯(cuò)誤預(yù)測(cè)為有缺陷模塊造成的代價(jià),前者將會(huì)使得軟件的發(fā)行版本中含有缺陷從而影響軟件可靠性,而后者僅將測(cè)試資源浪費(fèi)在無缺陷模塊,這說明軟件缺陷預(yù)測(cè)領(lǐng)域存在著代價(jià)敏感問題。然而,傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)是以取得高準(zhǔn)確率為目標(biāo),其并未充分考慮軟件缺陷預(yù)測(cè)領(lǐng)域的代價(jià)敏感問題和類不均衡問題。
機(jī)器學(xué)習(xí)領(lǐng)域的研究表明,代價(jià)敏感學(xué)習(xí)技術(shù)可較好的解決代價(jià)敏感問題和類不均衡問題[8]。文中通過基于過采樣(Over-Sampling)技術(shù)和閾值移動(dòng)(Threshold-Moving)技術(shù)的代價(jià)敏感反向傳播神經(jīng)網(wǎng)絡(luò) 算 法 CSBNN[9]Cost - Sensitive Back Propagation Neural Networks)引入軟件缺陷預(yù)測(cè)領(lǐng)域,從而解決該領(lǐng)域存在的代價(jià)敏感問題與類不均衡問題。在NASA軟件缺陷預(yù)測(cè)標(biāo)準(zhǔn)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果充分證明CSBNN算法的有效性。
假設(shè)有C類樣本,第i類訓(xùn)練樣本的數(shù)目為Ni。令 Cost[i,c](i,c∈{1,…,C})表示將第 i類樣本錯(cuò)分類為第c類樣本的代價(jià),Cost[i]表示第i類樣本的重要性代價(jià),則根據(jù)文獻(xiàn)[10~11]可以知道。
過采樣CSBNN算法通過改變訓(xùn)練樣本的分布來解決代價(jià)敏感問題和類不均衡問題。概括的講,過采樣CSBNN算法通過復(fù)制代價(jià)較高類別的訓(xùn)練樣本,從而實(shí)現(xiàn)不同類別的樣本數(shù)目與代價(jià)成比例的目的。
其中,λ類是需要復(fù)制樣本數(shù)目最小的類別,由式(2)判別。
閾值移動(dòng)CSBNN算法,簡(jiǎn)稱CSBNN-2,將非代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的判決邊界向代價(jià)較低一類樣本的邊界偏移,從而降低代價(jià)較高一類樣本被分錯(cuò)類的風(fēng)險(xiǎn)。與過采樣CSBNN算法不同,該算法在訓(xùn)練階段不做代價(jià)敏感處理,而是在預(yù)測(cè)階段引入代價(jià)敏感信息。
令Oi(i∈{1,…,C})表示非代價(jià)敏感神經(jīng)網(wǎng)絡(luò)各輸出單元只是輸出值,則且0≤Qi≤1。這樣,在標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)分類器中輸出的樣本類別是,在閾值移動(dòng)算法中,輸出的類別則是計(jì)算如式(3)
NASA軟件缺陷預(yù)測(cè)標(biāo)準(zhǔn)數(shù)據(jù)池中的每一數(shù)據(jù)集中包含若干樣本,每個(gè)樣本對(duì)應(yīng)于一個(gè)軟件模塊,每個(gè)軟件模塊由若干靜態(tài)代碼屬性和標(biāo)識(shí)軟件模塊中缺陷數(shù)量的屬性組成。每一數(shù)據(jù)集中標(biāo)記的靜態(tài)代碼屬性主要有代碼行數(shù)(Loc)、Halstead屬性[12]和 McCabe屬性[13]。文中選擇在 NASA 數(shù)據(jù)池中的 CM1、KC3、MW1、PC1、PC3、PC46 個(gè)數(shù)據(jù)集上進(jìn)行驗(yàn)證試驗(yàn)??芍苯舆x擇 Promise中經(jīng)過預(yù)處理的該6個(gè)數(shù)據(jù)集[14]。
在軟件缺陷預(yù)測(cè)應(yīng)用中,預(yù)測(cè)結(jié)果可表示為如表1所示的混淆矩陣(Confusion Matrix)。在軟件缺陷預(yù)測(cè)中存在兩種類型的預(yù)測(cè)錯(cuò)誤代價(jià):
(1)錯(cuò)誤接收代價(jià)CFP:將有缺陷模塊預(yù)測(cè)為無缺陷模塊造成的代價(jià)。
(2)錯(cuò)誤拒絕代價(jià)CFN:將無缺陷模塊預(yù)測(cè)為有缺陷模塊造成的代價(jià)。
表1 軟件缺陷預(yù)測(cè)混淆矩陣
由上文分析,可以確定錯(cuò)誤接收造成的代價(jià)要遠(yuǎn)大于錯(cuò)誤拒絕造成的代價(jià),即通常情況下CFP>CFN。
按如下步驟將CSBNN-1、CSBNN-2算法應(yīng)用至NASA軟件缺陷預(yù)測(cè)標(biāo)準(zhǔn)數(shù)據(jù)池中的6個(gè)數(shù)據(jù)集上:
(1)對(duì)由靜態(tài)代碼屬性表示的數(shù)據(jù)集中的樣本進(jìn)行歸一化的預(yù)處理操作。
(2)將數(shù)據(jù)集劃分為訓(xùn)練集與測(cè)試集兩部分。
(3)根據(jù)領(lǐng)域?qū)<抑R(shí)或用戶需要設(shè)定CFN、CFP的值,以此來控制CSBNN算法對(duì)不同類別樣本的錯(cuò)誤控制。
(4)在訓(xùn)練集上利用文中介紹的兩類CSBNN算法訓(xùn)練用于軟件缺陷預(yù)測(cè)的分類器。
(5)利用第(4)步中訓(xùn)練的分類器對(duì)測(cè)試集數(shù)據(jù)進(jìn)行缺陷預(yù)測(cè)。
通過在NASA數(shù)據(jù)池中的6個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)說明,文中的CSBNN-1、CSBNN-2算法較傳統(tǒng)的非代價(jià)敏感神經(jīng)網(wǎng)絡(luò)算法BNN(Back-propagation Neural Networks),在軟件缺陷預(yù)測(cè)應(yīng)用中具有更好的處理代價(jià)敏感問題和類不均衡問題的能力。
實(shí)驗(yàn)中,采用10次10折交叉驗(yàn)證設(shè)置,即每次將數(shù)據(jù)集劃分10份,其中9份作為訓(xùn)練樣本,1份作為測(cè)試樣本。最后的實(shí)驗(yàn)結(jié)果為重復(fù)10次如上的操作取平均值。設(shè)定CFN=1,CFP=10。由于文中主要考察算法在處理代價(jià)敏感問題與類不均衡問題時(shí)的性能,因此文中采用錯(cuò)分類總代價(jià)Cost、敏感度Sensitivity作為主要的評(píng)價(jià)標(biāo)準(zhǔn)。此外,記錄分類準(zhǔn)確率Accuracy、特異度Specificity作為參考指標(biāo)。敏感度與特異度的定義如式(4),式(5)所示
表2 實(shí)驗(yàn)結(jié)果對(duì)比
表2記錄了 BNN、CSBNN-1、CSBNN-2這3種算法在NASA數(shù)據(jù)池中6個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果。其中BNN為非代價(jià)敏感算法,CSBNN-1和CSBNN-2算法為BNN算法的兩種代價(jià)敏感版本。從表2可以看出,較傳統(tǒng)的分類算法 BNN,代價(jià)敏感分類算法CSBNN-1與CSBNN-2能夠達(dá)到更小的錯(cuò)分類代價(jià)。同時(shí)CSBNN-1、CSBNN-2算法能夠獲得更高的敏感度Sensitivity,由式(4)所示,敏感度越大,則錯(cuò)誤接收的比率越小,說明代價(jià)敏感算法能夠較好地減少代價(jià)較高一類樣本的錯(cuò)誤數(shù)目。同時(shí)觀察準(zhǔn)確率Accuracy、特異度Specificity兩個(gè)指標(biāo),可以發(fā)現(xiàn)代價(jià)敏感分類算法CSBNN-1、CSBNN-2算法在提高代價(jià)較高一類樣本的同時(shí)更好的保證總的預(yù)測(cè)準(zhǔn)確率,即并未明顯降低代價(jià)較小一類樣本的預(yù)測(cè)精度。通過以上的實(shí)驗(yàn)結(jié)果與分析,可發(fā)現(xiàn),較傳統(tǒng)的分類算法,代價(jià)敏感分類算法CSBNN-1、CSBNN-2能夠較好地解決軟件缺陷預(yù)測(cè)領(lǐng)域出現(xiàn)的代價(jià)敏感問題與類不均衡問題。同時(shí),發(fā)現(xiàn)在不同的數(shù)據(jù)集上CSBNN-1、CSBNN-2兩者之間的性能各有優(yōu)劣,兩者之間的選擇在機(jī)器學(xué)習(xí)領(lǐng)域也是個(gè)難題。然而,總體上代價(jià)敏感算法CSBNN-1、CSBNN-2要優(yōu)于傳統(tǒng)分類算法BNN。
文中固定CFP/CFN=10/1,下面討論不同的代價(jià)比率對(duì)于CSBNN-1、CSBNN-2算法軟件缺陷預(yù)測(cè)中應(yīng)用的影響。首先,設(shè)定CFN為1。然后,令CFP/CFN的值依次取{1,2,4,8,16,32,64}。CSBNN -1、CSBNN -2算法在 CM1、KC3、MW1、PC1數(shù)據(jù)集上的錯(cuò)分類總代價(jià)隨代價(jià)比率變化的結(jié)果如圖1所示。在圖1中代價(jià)比率軸采用了對(duì)數(shù)刻度以更好說明問題。由圖1可看出,盡管CFP呈指數(shù)增長(zhǎng),兩種代價(jià)敏感算法的錯(cuò)分類總代價(jià)并未隨著CFP指數(shù)增長(zhǎng)。這說明代價(jià)敏感算法CSBNN-1、CSBNN-2能夠更好的控制代價(jià)較高一類錯(cuò)誤的數(shù)目,且當(dāng)代價(jià)比率越高控制的越好。
圖1 CSBNN-1、CSBNN-2錯(cuò)分類總代和代價(jià)比率
針對(duì)傳統(tǒng)機(jī)器學(xué)習(xí)算法不能解決軟件缺陷預(yù)測(cè)普遍存在的代價(jià)敏感問題與類不均衡問題,以機(jī)器學(xué)習(xí)領(lǐng)域中代價(jià)敏感學(xué)習(xí)算法能夠同時(shí)解決代價(jià)敏感問題和類不均衡問題的理論為基礎(chǔ),通過將代價(jià)敏感學(xué)習(xí)算法CSBNN-1、CSBNN-2引入軟件缺陷預(yù)測(cè)領(lǐng)域,利用該類算法同時(shí)解決軟件缺陷預(yù)測(cè)中存在的代價(jià)敏感問題和類不均衡問題。在NASA軟件缺陷預(yù)測(cè)標(biāo)準(zhǔn)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果說明CSBNN-1、CSBNN-2算法解決軟件缺陷預(yù)測(cè)領(lǐng)域的代價(jià)敏感問題與類不均衡問題的有效性。
[1]MENZIES T,GREENWALD J,F(xiàn)RANK A.Data mining static code attributes to learn defect predictors[J].IEEE Transaction on Software Engineering,2007,32(11):2 -13.
[2]LESSMANN S,BAESENS B,MUES C,et al.Benchmarking classification models for software defect prediction:a proposed framework and novel findings[J].IEEE Transactions on Software Engineering,2008,4(34):485 -496.
[3]KHOSHGOFTAAR T M,PANDYA A S,LANNING D L.Application of neural networks for predicting defects[J].Annals of Software Engineering,1995,1(1):141 -154.
[4]MENZIES T,DISTEFANO J,ORREGO A,et al.Assessing predictors of software defects[C].In Proceedings of Workshop on Predictive Software Models,2004.
[5]PORTER A,SELBY R W.Evaluating techniques for generating metric - based classification trees[J].Journal of Systems and Software,1997,12(2):166 -173.
[6]BOEHM B W,PAPACCIO P N.Understanding and controlling software costs[J].IEEE Transactions on Software Engineering,1988,14(10):1462 -1477.
[7]BOEHM B W.Industrial software metrics top 10 list[J].IEEE Software,1987,4(5):84 -85.
[8]MALOOF M A.Learning when data sets are imbalanced and when costs are unequal and unknown[C].Washington,DC:In Working Notes of the ICML'03 Workshop on Learning from Imbalanced Data Sets,2003,8:328 -334.
[9]ZHOU Z H,LIU X Y.Training cost- sensitive neural networks with methods addressing the class imbalance problem[J].IEEE Transactions on Knowledge and Data Engineering,2006,18(1):63 -77.
[10]BREIMAN L,F(xiàn)RIEDMAN J H,OLSHEN R A,et al.Classification and regression trees[M].Belmont,CA:Wadsworth,1984.
[11]TING K M.An instance-weighting method to induce costsensitive tree[J].IEEE Transactions on Knowledge and Data Engineering,2002,14(3):413 -425.
[12]MAURICE HOWARD HALSTEAD.Elements of software science[M].Elsevier University of Michigan,1977.
[13]MCCABE T J.A complexity measure.IEEE Transaction on Software Engineering[J].1976,2(4):308 -320.
[14]BOETTICHER G,MENZIES T,OSTRAND T.PROMISE Repository of empirical software engineering data[D/OL].USA:West Virginia University,2007.
Software Defect Prediction Based on Cost-Sensitive Neural Networks
MIAO Linsong
(College of Computer Science & Technology,Nanjing University of Aeronautics& Astronautics,Nanjing 210016,China)
Software defect prediction has been studied as an important research topic for 30 years in software engineering.Recently,with the development of machine learning techniques,traditional machine learning has been applied in software defect prediction based on static code attributes successfully.However,the traditional machine learning does not consider the cost-sensitive problem and class-imbalance problem in software defect prediction applications.We study the application of cost-sensitive neural networks based on over-sampling and threshold-moving to software defect prediction.The experimental results on NASA software defect prediction benchmarking dataset demonstrate the algorithm's efficacy.
software defect prediction;cost-sensitive neural networks;cost-sensitive;class-imbalance
TP391
A
1007-7820(2012)06-075-04
2011-12-24
繆林松(1986—),男,碩士研究生。研究方向:機(jī)器學(xué)習(xí),模式識(shí)別。