繆林松
(南京航空航天大學計算機科學與技術學院,江南南京 210016)
基于代價敏感神經網絡算法的軟件缺陷預測
繆林松
(南京航空航天大學計算機科學與技術學院,江南南京 210016)
軟件缺陷預測作為軟件工程領域的重要研究內容已有近30年。近年來,隨著機器學習技術的發展,傳統機器學習技術基于靜態代碼屬性的軟件缺陷預測領域得到廣泛應用。然而,傳統的機器學習算法并未考慮軟件缺陷預測過程中,常見的代價敏感問題與類不均衡問題。文中將基于過采樣技術和閾值移動技術的代價敏感神經網絡算法應用于軟件缺陷預測領域,從而解決該領域的代價敏感問題與類不均衡問題。在NASA軟件缺陷預測標準數據集上的實驗證明了其有效性。
軟件缺陷預測;代價敏感神經網絡;代價敏感;類不均衡
軟件缺陷預測,即自動識別軟件系統中含有缺陷的模塊,以此有效分配有限的測試資源。隨著軟件規模和復雜度的增加,軟件缺陷預測成為軟件工程領域的研究熱點。同時,機器學習技術的發展,機器學習技術被眾多研究人員應用于軟件缺陷預測領域[1-5]。與此同時,研究表明絕大多數軟件缺陷集中在少數比例的軟件模塊中[6]。Boehm指出軟件系統中20%的軟件模塊包含80%的軟件缺陷,這說明軟件缺陷預測領域存在嚴重的類不均衡問題[7]。此外,將有缺陷軟件模塊錯誤預測為無缺陷模塊造成的代價遠大于將無缺陷軟件模塊錯誤預測為有缺陷模塊造成的代價,前者將會使得軟件的發行版本中含有缺陷從而影響軟件可靠性,而后者僅將測試資源浪費在無缺陷模塊,這說明軟件缺陷預測領域存在著代價敏感問題。然而,傳統的機器學習技術是以取得高準確率為目標,其并未充分考慮軟件缺陷預測領域的代價敏感問題和類不均衡問題。
機器學習領域的研究表明,代價敏感學習技術可較好的解決代價敏感問題和類不均衡問題[8]。文中通過基于過采樣(Over-Sampling)技術和閾值移動(Threshold-Moving)技術的代價敏感反向傳播神經網絡 算 法 CSBNN[9]Cost - Sensitive Back Propagation Neural Networks)引入軟件缺陷預測領域,從而解決該領域存在的代價敏感問題與類不均衡問題。在NASA軟件缺陷預測標準數據集上的實驗結果充分證明CSBNN算法的有效性。
假設有C類樣本,第i類訓練樣本的數目為Ni。令 Cost[i,c](i,c∈{1,…,C})表示將第 i類樣本錯分類為第c類樣本的代價,Cost[i]表示第i類樣本的重要性代價,則根據文獻[10~11]可以知道。
過采樣CSBNN算法通過改變訓練樣本的分布來解決代價敏感問題和類不均衡問題。概括的講,過采樣CSBNN算法通過復制代價較高類別的訓練樣本,從而實現不同類別的樣本數目與代價成比例的目的。

其中,λ類是需要復制樣本數目最小的類別,由式(2)判別。

閾值移動CSBNN算法,簡稱CSBNN-2,將非代價敏感神經網絡的判決邊界向代價較低一類樣本的邊界偏移,從而降低代價較高一類樣本被分錯類的風險。與過采樣CSBNN算法不同,該算法在訓練階段不做代價敏感處理,而是在預測階段引入代價敏感信息。
令Oi(i∈{1,…,C})表示非代價敏感神經網絡各輸出單元只是輸出值,則且0≤Qi≤1。這樣,在標準神經網絡分類器中輸出的樣本類別是,在閾值移動算法中,輸出的類別則是計算如式(3)

NASA軟件缺陷預測標準數據池中的每一數據集中包含若干樣本,每個樣本對應于一個軟件模塊,每個軟件模塊由若干靜態代碼屬性和標識軟件模塊中缺陷數量的屬性組成。每一數據集中標記的靜態代碼屬性主要有代碼行數(Loc)、Halstead屬性[12]和 McCabe屬性[13]。文中選擇在 NASA 數據池中的 CM1、KC3、MW1、PC1、PC3、PC46 個數據集上進行驗證試驗。可直接選擇 Promise中經過預處理的該6個數據集[14]。
在軟件缺陷預測應用中,預測結果可表示為如表1所示的混淆矩陣(Confusion Matrix)。在軟件缺陷預測中存在兩種類型的預測錯誤代價:
(1)錯誤接收代價CFP:將有缺陷模塊預測為無缺陷模塊造成的代價。
(2)錯誤拒絕代價CFN:將無缺陷模塊預測為有缺陷模塊造成的代價。

表1 軟件缺陷預測混淆矩陣
由上文分析,可以確定錯誤接收造成的代價要遠大于錯誤拒絕造成的代價,即通常情況下CFP>CFN。
按如下步驟將CSBNN-1、CSBNN-2算法應用至NASA軟件缺陷預測標準數據池中的6個數據集上:
(1)對由靜態代碼屬性表示的數據集中的樣本進行歸一化的預處理操作。
(2)將數據集劃分為訓練集與測試集兩部分。
(3)根據領域專家知識或用戶需要設定CFN、CFP的值,以此來控制CSBNN算法對不同類別樣本的錯誤控制。
(4)在訓練集上利用文中介紹的兩類CSBNN算法訓練用于軟件缺陷預測的分類器。
(5)利用第(4)步中訓練的分類器對測試集數據進行缺陷預測。
通過在NASA數據池中的6個數據集上的實驗說明,文中的CSBNN-1、CSBNN-2算法較傳統的非代價敏感神經網絡算法BNN(Back-propagation Neural Networks),在軟件缺陷預測應用中具有更好的處理代價敏感問題和類不均衡問題的能力。
實驗中,采用10次10折交叉驗證設置,即每次將數據集劃分10份,其中9份作為訓練樣本,1份作為測試樣本。最后的實驗結果為重復10次如上的操作取平均值。設定CFN=1,CFP=10。由于文中主要考察算法在處理代價敏感問題與類不均衡問題時的性能,因此文中采用錯分類總代價Cost、敏感度Sensitivity作為主要的評價標準。此外,記錄分類準確率Accuracy、特異度Specificity作為參考指標。敏感度與特異度的定義如式(4),式(5)所示


表2 實驗結果對比
表2記錄了 BNN、CSBNN-1、CSBNN-2這3種算法在NASA數據池中6個數據集上的實驗結果。其中BNN為非代價敏感算法,CSBNN-1和CSBNN-2算法為BNN算法的兩種代價敏感版本。從表2可以看出,較傳統的分類算法 BNN,代價敏感分類算法CSBNN-1與CSBNN-2能夠達到更小的錯分類代價。同時CSBNN-1、CSBNN-2算法能夠獲得更高的敏感度Sensitivity,由式(4)所示,敏感度越大,則錯誤接收的比率越小,說明代價敏感算法能夠較好地減少代價較高一類樣本的錯誤數目。同時觀察準確率Accuracy、特異度Specificity兩個指標,可以發現代價敏感分類算法CSBNN-1、CSBNN-2算法在提高代價較高一類樣本的同時更好的保證總的預測準確率,即并未明顯降低代價較小一類樣本的預測精度。通過以上的實驗結果與分析,可發現,較傳統的分類算法,代價敏感分類算法CSBNN-1、CSBNN-2能夠較好地解決軟件缺陷預測領域出現的代價敏感問題與類不均衡問題。同時,發現在不同的數據集上CSBNN-1、CSBNN-2兩者之間的性能各有優劣,兩者之間的選擇在機器學習領域也是個難題。然而,總體上代價敏感算法CSBNN-1、CSBNN-2要優于傳統分類算法BNN。
文中固定CFP/CFN=10/1,下面討論不同的代價比率對于CSBNN-1、CSBNN-2算法軟件缺陷預測中應用的影響。首先,設定CFN為1。然后,令CFP/CFN的值依次取{1,2,4,8,16,32,64}。CSBNN -1、CSBNN -2算法在 CM1、KC3、MW1、PC1數據集上的錯分類總代價隨代價比率變化的結果如圖1所示。在圖1中代價比率軸采用了對數刻度以更好說明問題。由圖1可看出,盡管CFP呈指數增長,兩種代價敏感算法的錯分類總代價并未隨著CFP指數增長。這說明代價敏感算法CSBNN-1、CSBNN-2能夠更好的控制代價較高一類錯誤的數目,且當代價比率越高控制的越好。

圖1 CSBNN-1、CSBNN-2錯分類總代和代價比率
針對傳統機器學習算法不能解決軟件缺陷預測普遍存在的代價敏感問題與類不均衡問題,以機器學習領域中代價敏感學習算法能夠同時解決代價敏感問題和類不均衡問題的理論為基礎,通過將代價敏感學習算法CSBNN-1、CSBNN-2引入軟件缺陷預測領域,利用該類算法同時解決軟件缺陷預測中存在的代價敏感問題和類不均衡問題。在NASA軟件缺陷預測標準數據集上的實驗結果說明CSBNN-1、CSBNN-2算法解決軟件缺陷預測領域的代價敏感問題與類不均衡問題的有效性。
[1]MENZIES T,GREENWALD J,FRANK 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,FRIEDMAN 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—),男,碩士研究生。研究方向:機器學習,模式識別。