繆林松
(南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江南南京 210016)
基于代價(jià)敏感神經(jīng)網(wǎng)絡(luò)算法的軟件缺陷預(yù)測
繆林松
(南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江南南京 210016)
軟件缺陷預(yù)測作為軟件工程領(lǐng)域的重要研究內(nèi)容已有近30年。近年來,隨著機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,傳統(tǒng)機(jī)器學(xué)習(xí)技術(shù)基于靜態(tài)代碼屬性的軟件缺陷預(yù)測領(lǐng)域得到廣泛應(yīng)用。然而,傳統(tǒng)的機(jī)器學(xué)習(xí)算法并未考慮軟件缺陷預(yù)測過程中,常見的代價(jià)敏感問題與類不均衡問題。文中將基于過采樣技術(shù)和閾值移動技術(shù)的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于軟件缺陷預(yù)測領(lǐng)域,從而解決該領(lǐng)域的代價(jià)敏感問題與類不均衡問題。在NASA軟件缺陷預(yù)測標(biāo)準(zhǔn)數(shù)據(jù)集上的實(shí)驗(yàn)證明了其有效性。
軟件缺陷預(yù)測;代價(jià)敏感神經(jīng)網(wǎng)絡(luò);代價(jià)敏感;類不均衡
軟件缺陷預(yù)測,即自動識別軟件系統(tǒng)中含有缺陷的模塊,以此有效分配有限的測試資源。隨著軟件規(guī)模和復(fù)雜度的增加,軟件缺陷預(yù)測成為軟件工程領(lǐng)域的研究熱點(diǎn)。同時,機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,機(jī)器學(xué)習(xí)技術(shù)被眾多研究人員應(yīng)用于軟件缺陷預(yù)測領(lǐng)域[1-5]。與此同時,研究表明絕大多數(shù)軟件缺陷集中在少數(shù)比例的軟件模塊中[6]。Boehm指出軟件系統(tǒng)中20%的軟件模塊包含80%的軟件缺陷,這說明軟件缺陷預(yù)測領(lǐng)域存在嚴(yán)重的類不均衡問題[7]。此外,將有缺陷軟件模塊錯誤預(yù)測為無缺陷模塊造成的代價(jià)遠(yuǎn)大于將無缺陷軟件模塊錯誤預(yù)測為有缺陷模塊造成的代價(jià),前者將會使得軟件的發(fā)行版本中含有缺陷從而影響軟件可靠性,而后者僅將測試資源浪費(fèi)在無缺陷模塊,這說明軟件缺陷預(yù)測領(lǐng)域存在著代價(jià)敏感問題。然而,傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)是以取得高準(zhǔn)確率為目標(biāo),其并未充分考慮軟件缺陷預(yù)測領(lǐng)域的代價(jià)敏感問題和類不均衡問題。
機(jī)器學(xué)習(xí)領(lǐng)域的研究表明,代價(jià)敏感學(xué)習(xí)技術(shù)可較好的解決代價(jià)敏感問題和類不均衡問題[8]。文中通過基于過采樣(Over-Sampling)技術(shù)和閾值移動(Threshold-Moving)技術(shù)的代價(jià)敏感反向傳播神經(jīng)網(wǎng)絡(luò) 算 法 CSBNN[9]Cost - Sensitive Back Propagation Neural Networks)引入軟件缺陷預(yù)測領(lǐng)域,從而解決該領(lǐng)域存在的代價(jià)敏感問題與類不均衡問題。在NASA軟件缺陷預(yù)測標(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類樣本錯分類為第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)判別。
閾值移動CSBNN算法,簡稱CSBNN-2,將非代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的判決邊界向代價(jià)較低一類樣本的邊界偏移,從而降低代價(jià)較高一類樣本被分錯類的風(fēng)險(xiǎn)。與過采樣CSBNN算法不同,該算法在訓(xùn)練階段不做代價(jià)敏感處理,而是在預(yù)測階段引入代價(jià)敏感信息。
令Oi(i∈{1,…,C})表示非代價(jià)敏感神經(jīng)網(wǎng)絡(luò)各輸出單元只是輸出值,則且0≤Qi≤1。這樣,在標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)分類器中輸出的樣本類別是,在閾值移動算法中,輸出的類別則是計(jì)算如式(3)
NASA軟件缺陷預(yù)測標(biāo)準(zhǔn)數(shù)據(jù)池中的每一數(shù)據(jù)集中包含若干樣本,每個樣本對應(yīng)于一個軟件模塊,每個軟件模塊由若干靜態(tài)代碼屬性和標(biāo)識軟件模塊中缺陷數(shù)量的屬性組成。每一數(shù)據(jù)集中標(biāo)記的靜態(tài)代碼屬性主要有代碼行數(shù)(Loc)、Halstead屬性[12]和 McCabe屬性[13]。文中選擇在 NASA 數(shù)據(jù)池中的 CM1、KC3、MW1、PC1、PC3、PC46 個數(shù)據(jù)集上進(jìn)行驗(yàn)證試驗(yàn)。可直接選擇 Promise中經(jīng)過預(yù)處理的該6個數(shù)據(jù)集[14]。
在軟件缺陷預(yù)測應(yīng)用中,預(yù)測結(jié)果可表示為如表1所示的混淆矩陣(Confusion Matrix)。在軟件缺陷預(yù)測中存在兩種類型的預(yù)測錯誤代價(jià):
(1)錯誤接收代價(jià)CFP:將有缺陷模塊預(yù)測為無缺陷模塊造成的代價(jià)。
(2)錯誤拒絕代價(jià)CFN:將無缺陷模塊預(yù)測為有缺陷模塊造成的代價(jià)。
表1 軟件缺陷預(yù)測混淆矩陣
由上文分析,可以確定錯誤接收造成的代價(jià)要遠(yuǎn)大于錯誤拒絕造成的代價(jià),即通常情況下CFP>CFN。
按如下步驟將CSBNN-1、CSBNN-2算法應(yīng)用至NASA軟件缺陷預(yù)測標(biāo)準(zhǔn)數(shù)據(jù)池中的6個數(shù)據(jù)集上:
(1)對由靜態(tài)代碼屬性表示的數(shù)據(jù)集中的樣本進(jìn)行歸一化的預(yù)處理操作。
(2)將數(shù)據(jù)集劃分為訓(xùn)練集與測試集兩部分。
(3)根據(jù)領(lǐng)域?qū)<抑R或用戶需要設(shè)定CFN、CFP的值,以此來控制CSBNN算法對不同類別樣本的錯誤控制。
(4)在訓(xùn)練集上利用文中介紹的兩類CSBNN算法訓(xùn)練用于軟件缺陷預(yù)測的分類器。
(5)利用第(4)步中訓(xùn)練的分類器對測試集數(shù)據(jù)進(jìn)行缺陷預(yù)測。
通過在NASA數(shù)據(jù)池中的6個數(shù)據(jù)集上的實(shí)驗(yàn)說明,文中的CSBNN-1、CSBNN-2算法較傳統(tǒng)的非代價(jià)敏感神經(jīng)網(wǎng)絡(luò)算法BNN(Back-propagation Neural Networks),在軟件缺陷預(yù)測應(yīng)用中具有更好的處理代價(jià)敏感問題和類不均衡問題的能力。
實(shí)驗(yàn)中,采用10次10折交叉驗(yàn)證設(shè)置,即每次將數(shù)據(jù)集劃分10份,其中9份作為訓(xùn)練樣本,1份作為測試樣本。最后的實(shí)驗(yàn)結(jié)果為重復(fù)10次如上的操作取平均值。設(shè)定CFN=1,CFP=10。由于文中主要考察算法在處理代價(jià)敏感問題與類不均衡問題時的性能,因此文中采用錯分類總代價(jià)Cost、敏感度Sensitivity作為主要的評價(jià)標(biāo)準(zhǔn)。此外,記錄分類準(zhǔn)確率Accuracy、特異度Specificity作為參考指標(biāo)。敏感度與特異度的定義如式(4),式(5)所示
表2 實(shí)驗(yàn)結(jié)果對比
表2記錄了 BNN、CSBNN-1、CSBNN-2這3種算法在NASA數(shù)據(jù)池中6個數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果。其中BNN為非代價(jià)敏感算法,CSBNN-1和CSBNN-2算法為BNN算法的兩種代價(jià)敏感版本。從表2可以看出,較傳統(tǒng)的分類算法 BNN,代價(jià)敏感分類算法CSBNN-1與CSBNN-2能夠達(dá)到更小的錯分類代價(jià)。同時CSBNN-1、CSBNN-2算法能夠獲得更高的敏感度Sensitivity,由式(4)所示,敏感度越大,則錯誤接收的比率越小,說明代價(jià)敏感算法能夠較好地減少代價(jià)較高一類樣本的錯誤數(shù)目。同時觀察準(zhǔn)確率Accuracy、特異度Specificity兩個指標(biāo),可以發(fā)現(xiàn)代價(jià)敏感分類算法CSBNN-1、CSBNN-2算法在提高代價(jià)較高一類樣本的同時更好的保證總的預(yù)測準(zhǔn)確率,即并未明顯降低代價(jià)較小一類樣本的預(yù)測精度。通過以上的實(shí)驗(yàn)結(jié)果與分析,可發(fā)現(xiàn),較傳統(tǒng)的分類算法,代價(jià)敏感分類算法CSBNN-1、CSBNN-2能夠較好地解決軟件缺陷預(yù)測領(lǐng)域出現(xiàn)的代價(jià)敏感問題與類不均衡問題。同時,發(fā)現(xiàn)在不同的數(shù)據(jù)集上CSBNN-1、CSBNN-2兩者之間的性能各有優(yōu)劣,兩者之間的選擇在機(jī)器學(xué)習(xí)領(lǐng)域也是個難題。然而,總體上代價(jià)敏感算法CSBNN-1、CSBNN-2要優(yōu)于傳統(tǒng)分類算法BNN。
文中固定CFP/CFN=10/1,下面討論不同的代價(jià)比率對于CSBNN-1、CSBNN-2算法軟件缺陷預(yù)測中應(yīng)用的影響。首先,設(shè)定CFN為1。然后,令CFP/CFN的值依次取{1,2,4,8,16,32,64}。CSBNN -1、CSBNN -2算法在 CM1、KC3、MW1、PC1數(shù)據(jù)集上的錯分類總代價(jià)隨代價(jià)比率變化的結(jié)果如圖1所示。在圖1中代價(jià)比率軸采用了對數(shù)刻度以更好說明問題。由圖1可看出,盡管CFP呈指數(shù)增長,兩種代價(jià)敏感算法的錯分類總代價(jià)并未隨著CFP指數(shù)增長。這說明代價(jià)敏感算法CSBNN-1、CSBNN-2能夠更好的控制代價(jià)較高一類錯誤的數(shù)目,且當(dāng)代價(jià)比率越高控制的越好。
圖1 CSBNN-1、CSBNN-2錯分類總代和代價(jià)比率
針對傳統(tǒng)機(jī)器學(xué)習(xí)算法不能解決軟件缺陷預(yù)測普遍存在的代價(jià)敏感問題與類不均衡問題,以機(jī)器學(xué)習(xí)領(lǐng)域中代價(jià)敏感學(xué)習(xí)算法能夠同時解決代價(jià)敏感問題和類不均衡問題的理論為基礎(chǔ),通過將代價(jià)敏感學(xué)習(xí)算法CSBNN-1、CSBNN-2引入軟件缺陷預(yù)測領(lǐng)域,利用該類算法同時解決軟件缺陷預(yù)測中存在的代價(jià)敏感問題和類不均衡問題。在NASA軟件缺陷預(yù)測標(biāo)準(zhǔn)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果說明CSBNN-1、CSBNN-2算法解決軟件缺陷預(yù)測領(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í),模式識別。