999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于組合機器學習算法的軟件缺陷預測模型

2017-04-07 07:01:18傅藝綺尹良澤杜雨晴
計算機研究與發展 2017年3期
關鍵詞:排序模型

傅藝綺 董 威 尹良澤 杜雨晴

(國防科學技術大學計算機學院 長沙 410073) (fu_303503@163.com)

基于組合機器學習算法的軟件缺陷預測模型

傅藝綺 董 威 尹良澤 杜雨晴

(國防科學技術大學計算機學院 長沙 410073) (fu_303503@163.com)

軟件缺陷預測是根據軟件產品中提取的度量信息和已經發現的缺陷來盡早地預測軟件可能還存在的缺陷,基于預測結果可合理分配測試和驗證資源.基于機器學習的缺陷預測技術能夠較全面地、自動地學習模型來發現軟件中的缺陷,已經成為缺陷預測的主要方法.為了提高預測的效率和準確性,對機器學習算法的選擇和研究是很關鍵的.對不同的機器學習缺陷預測方法進行對比分析,發現各算法在不同評價指標上有不同的優勢,利用這些優勢并結合機器學習中的stacking集成學習方法提出了將不同預測算法的預測結果作為軟件度量并進行再次預測的基于組合機器學習算法的軟件缺陷預測模型,最后用該模型對Eclipse數據集進行實驗,表明了該模型的有效性.

軟件缺陷預測;機器學習;集成學習;組合;Eclipse預測數據集

隨著軟件逐漸深入人們的生活,軟件質量成為人們關注的重點.軟件缺陷是影響軟件質量的重要因素,它在軟件的開發過程中是不可避免的,但若不能及時發現并處理,可能會使軟件發生故障無法使用,甚至產生嚴重的后果.最常用的軟件質量保證活動就是軟件測試,它能有效檢查軟件的錯誤,但同時也是軟件開發生命周期中花費時間、資源最多的階段.因此出現缺陷預測的概念,旨在根據軟件的基本屬性(復雜度、規模、開發過程等)來盡早地預測軟件可能還遺留的缺陷,并基于預測結果合理分配測試資源,給出測試的優先級,提高軟件產品質量,縮短開發周期,降低開發成本.

當前的缺陷預測技術主要分為靜態預測和動態預測兩大類.靜態預測是基于缺陷相關的度量數據,對缺陷的數量和分布進行預測;動態預測則是對故障隨時間的分布進行預測.2005年以來,機器學習方法被越來越多地用于軟件缺陷預測模型的建立,通過從以往的開發經驗中抽取帶有問題領域特征的數據來進行學習,建立起數據與軟件缺陷之間的關聯關系,并對未知的軟件模塊預測其可能的缺陷數量或發生缺陷的可能性.在基于機器學習技術的缺陷預測模型研究中,一般解決3個問題:1)哪些機器學習方法適合建立預測模型;2)哪些度量元適合缺陷預測;3)哪些指標用于評估模型[1].

機器學習包含多種學習方法,如人工神經網絡(artificial neural network, ANN)、貝葉斯網絡(Bayesian network, BN)、決策樹(decision tree, DT)、隨機森林(random forest, RF)等.Khoshgoftaar等人[2]比較了7種不同的預測模型,這些模型用到了不同的回歸和分類樹算法,如C4.5,CHAID,CART等;Fenton等人[3]提出用貝葉斯信念網絡預測軟件缺陷模塊的方法;Vandecruys等人[4]比較了一些常用的學習方法,包括C4.5、支持向量機(support vector machine, SVM)、邏輯回歸、K-最近鄰等,發現C4.5的預測準確度最高,但在其他評價指標上這些方法不分伯仲;Turhan和Bener[5]分析了樸素貝葉斯方法在缺陷預測上的應用,認為同基于決策樹、線性回歸、判別分析、神經網絡的軟件缺陷預測模型相比較,貝葉斯方法能夠獲得更顯著的性能提升;常成成[6]引入集成學習的概念,提出了一種基于Adaboost自適應增強算法的缺陷排序預測方法,弱學習機選用SVM,該算法結合Adaboost的優勢,在學習中重點關注被錯誤分類的實例,最終獲得預測效果良好的強分類器;文獻[7]使用Adaboost算法改進神經網絡算法,將多個弱預測器組成新的強預測器,改善模型預測精確度和泛化能力;文獻[1]認為不同的建模技術的預測性能表現出的差異較小,而不同度量元的選擇對預測性能的影響更加顯著;用于建立預測模型的度量元主要分成代碼度量、復雜性度量、面向對象度量、過程度量和歷史缺陷度量幾大類,Hall等人[8]以預測的精確度和召回率作為評價指標,認為基于面向對象度量元的預測模型比基于復雜性度量元的模型效果更好,綜合使用多類度量元的預測模型效果顯著提高,而用過程度量元進行預測效果卻差強人意;文獻[9]選用排序能力和分類能力作為缺陷預測模型的評價標準,并引入了工作量評價指標,對這些度量元的缺陷預測能力進行了比較分析,認為在不同的數據集下不同種類度量的預測能力不存在絕對的優劣關系,而大多數情況下,代碼度量和過程度量的缺陷預測性能較好.

在實際應用中,代碼度量能從一個軟件系統當前版本的源代碼中輕松得到,而過程度量和歷史缺陷度量的收集成本昂貴,需要從版本控制系統和缺陷追蹤系統提取.因此本文主要針對構建模型的方法問題提出了一種基于組合機器學習算法的缺陷預測改進模型,將不同機器學習算法的預測組合起來,把第1次預測的結果作為新的度量元加入數據集后進行第2次預測,同時運用特征選擇方法,提高缺陷預測的效率.為了表明模型的實用性,論文對Eclipse標準數據集進行了缺陷預測,驗證了本文方法的有效性.

Fig. 1 Software defects prediction model圖1 軟件缺陷預測模型

1 基于機器學習的缺陷預測模型

本節將簡單介紹缺陷預測與機器學習的相關概念.缺陷預測是從軟件模塊中提取合適的度量元數據,并由機器學習的分類、回歸、聚類等方法找出缺陷與度量元之間的關系,建立起相應的模型,預測新的軟件模塊是否含有缺陷或預測缺陷的分布,模型如圖1所示[10]:

根據預測的目的可將缺陷預測模型分為2類:1)分類問題的軟件缺陷預測,即預測軟件模塊是否含有缺陷;2)排序問題的軟件缺陷預測,預測軟件模塊的缺陷數目,并根據缺陷的多少給出模塊的排序.本文將針對不同的機器學習算法的組合對缺陷預測的分類與排序問題分別進行研究.

1.1 缺陷預測模型

1.1.1 分 類

基于分類問題的軟件缺陷預測的目的是預測軟件模塊是否含有缺陷,引導軟件開發人員將測試資源集中在預測為有缺陷的模塊.針對此類缺陷預測模型出現了大量的研究成果,預測效果良好,但仍然無法完全正確預測所有軟件模塊.當錯誤地將非缺陷模塊預測為有缺陷時,會引起測試資源的浪費;當錯誤地將有缺陷的模塊預測為無缺陷時,則存在缺陷不能及時發現與修復的風險.出現這2種錯誤的代價并不相同,如何平衡二者,找出更適合的軟件缺陷預測模型一直是研究的重點.

1.1.2 排 序

基于排序問題的缺陷預測模型適合測試資源未知的情況——將軟件模塊按缺陷數目進行排序,優先測試含缺陷個數多的軟件模塊,當測試資源富余的時候,可以繼續對含缺陷少的模塊進行測試.對于此類缺陷預測模型,很難做到精準地預測軟件模塊所含的缺陷個數,關鍵是對軟件模塊給出高質量的排序結果.目前排序問題的軟件缺陷預測模型的主要構造算法是利用機器學習中的回歸算法.

1.2 機器學習算法

決策樹算法[11]是一種常見的用于分類的建模方法,通過構造決策樹來發現數據中蘊含的分類規則.當應用決策樹建立缺陷預測模型時,需要在預測變量的缺值處理、剪枝技術、派生規則等方面作相應改進,同時還應避免出現過度擬合問題,盡量減少路徑的長度,以提高預測模型的性能.

線性回歸是利用多個自變量的最優組合共同來預測或估計因變量,比只用一個自變量進行估計更有效,也更符合實際.線性回歸是最基礎的用于排序問題的回歸算法,通過建立軟件度量元與缺陷數目之間的線性方程來計算未知模塊可能含有的缺陷數目.邏輯回歸是線性回歸的一種改進技術,采用對數變換將線性回歸的結果映射為0-1之間的值,因此對于預測軟件是否有缺陷的二分類問題能夠容易地建立模型.

貝葉斯分類器基于貝葉斯定理,是建立在特征獨立性假設基礎上的簡單的統計學習分類器,它理想地認為對于給定的類變量,一個給定的特征不依賴于其他的特征.貝葉斯分類器只需要很少的訓練樣本來對預測模型的參數進行估計,在特征屬性完全獨立或屬性之間相關關系不太明顯的情況下有比較好的性能.貝葉斯網絡是一種不確定性因果關系模型,具有強大的不確定性處理問題能力,能有效地進行多元信息表達與融合,可廣泛地用于故障預測.

人工神經網絡是一種模仿動物神經網絡行為特征、進行分布式并行信息處理的計算模型.大多數情況下,人工神經網絡能基于外界信息改變內部結構,是一種自適應系統.常用的多層感知機是使用標準BP算法訓練的神經網絡,是一種非線性統計性數據建模工具,常用來對輸入與輸出間復雜的關系進行建模,或用來探索數據的模式,是解決大復雜度問題的一種相對簡單有效的方法.

除此之外,還有支持向量機、聚類分析等方法可以用于軟件缺陷預測,都需要用歷史數據來構建預測模型并驗證,各技術間的優劣取決于數據自身以及它們在準確性、穩定性、泛化程度上的比較和分析.

2 基于機器學習的缺陷預測模型

2.1 提出問題

有研究指出,機器學習算法的選擇對于提高缺陷預測模型的效果并不十分理想,由于數據集的差異性,預測性能最好的機器學習算法也在發生變化.我們對Eclipse數據集分別進行了分類預測和排序預測,其中分類預測用到了決策樹、邏輯回歸、貝葉斯網絡和神經網絡多層感知機算法;排序預測運用了隨機森林、線性回歸和神經網絡多層感知機算法.通過分析發現,在不同的評價指標下,最優的機器學習算法不完全相同.對于分類問題,邏輯回歸算法的預測精確率稍好于其他算法,而對于召回率指標,則是貝葉斯網絡算法較好.對比綜合評價指標,認為復雜的網絡結構學習算法——貝葉斯網絡和神經網絡的缺陷預測模型的綜合效果更好,但復雜度大,預測的時間開銷顯著增加,尤其是對數據集較大,度量元較多的情況.

因此我們設想:能否將不同機器學習算法結合起來構建缺陷預測模型,綜合各機器學習算法的優點,在各項評價指標上都取得一定的改進效果,并提出了2個假設:

1) 組合的機器學習算法構建的軟件缺陷預測模型對于分類問題有一定的提高;

2) 組合的機器學習算法構建的軟件缺陷預測模型對于排序問題有一定的提高.

2.2 基于組合的機器學習算法的缺陷預測模型

本節將詳細描述我們提出的基于組合機器學習算法的缺陷預測模型.

2.2.1 數據預處理

將從不同數據源收集到的數據整合成數據集,數據中可能存在數據冗余、數據缺失、錯誤的數據等問題,引入這些數據可能會導致缺陷預測模型的不準確,因此需要對數據集做清洗.另外,對于分類問題,還需要將數據集中的缺陷數目離散化,轉化為缺陷的有無,故將缺陷數目大于0的看作有缺陷的一類,置為1;缺陷數目等于0的看作無缺陷,置為0.將處理后的數據集分成2部分:1)用于學習模型,也叫訓練集;2)用于測試與驗證,稱為測試集.由于軟件缺陷符合“2-8”原則,80%的軟件缺陷集中在20%的軟件模塊中,因此收集到的數據中包含軟件缺陷的模塊數比不含缺陷的模塊數要少得多,造成了數據集的極大不平衡,而根據這個不均衡樣本集學習出來的模型將偏向于多數類而忽視少數類,即更傾向于將不含缺陷的模塊正確分類.因此我們采用人工合成新樣本的重采樣策略來對不平衡數據集進行優化,使得含缺陷的數據與不含缺陷的數據在相同的數量級上,然后在此分布均衡的樣本集上進行學習.

2.2.2 組合預測模型

在機器學習中,提高分類器性能的一種有效技術是集成學習[12],就是將多種算法結合起來,這些算法可以是相同的,也可以是不同的.利用集成技術構造軟件缺陷模型仍處于初級階段,應用較廣泛的是Bagging和Boosting集成算法,將多個弱預測器組成新的強預測器,改善模型預測精確度和泛化能力.本文借鑒另一種著名的集成學習技術——Stacking——的思想來構建模型.Stacking方法由Worlpert于1992年提出[13],主要利用高級的基礎學習器結合低級的基礎學習器來獲得更好的預測準確性,它與Bagging和Boosting方法的最大區別是Stacking方法并不是簡單地結合同一類型的基礎學習器,而是采用不同的機器學習算法構造學習器.Stacking框架包含2層分類器,level-0為基分類器;level-1為元分類器.基分類器由訓練集以bootstrap采樣的方式來構造,然后將基分類器的輸出結果作為元分類器的輸入,即訓練集.元分類器的任務就是合理組合輸出集,糾正基分類器的分類錯誤,以正確分類目標.因此組合預測的第1步便是用基礎學習器對數據集進行預測,然后將基分類器的輸出結果作為元分類器的輸入,即將數據集輸出的預測信息和訓練數據的真實分類結果整合為一個數據集,然后,將新的數據集作為新學習器的訓練數據集,再采用一種學習算法來解決這個問題.

這里,我們把Stacking方法的思想用于對軟件缺陷進行預測.首先對訓練集中的數據用簡單的機器學習算法做一個快速的分類或排序預測,分類問題可用邏輯回歸算法、決策樹算法;排序問題可用線性回歸算法、隨機森林算法等.盡管此時數據集較大,運用的度量元較多,依然能夠很快地得到結果.我們將預測結果寫入原始的數據集作為一個新的度量元.由于預測的效果普遍良好,因此該預測結果與軟件模塊的真實缺陷數有較高的相關性.

運用較復雜的網絡結構算法如貝葉斯網絡、神經網絡等對新的數據集進行第2層預測.由于建立模型的過程非常復雜,時間開銷非常大,因此我們考慮采用特征選擇技術來對數據降維,挑選出最優的屬性子集運用到學習中,在盡量少的丟失信息的情況下提高模型性能,減少開銷.同時,特征選擇技術也可以解決度量數據集中存在的錯誤數據和某些度量與構建缺陷預測模型無關的問題.信息增益(information gain)和信息增益率(information gain ratio)都可以用于屬性選擇,我們的模型通過計算增益率來選擇度量屬性.

定義1. 屬性A的信息增益率.IGR(A)=IG(A)I(A),其中IG(A)即屬性A的信息增益:IG(A)=entropy(S)-entropy(S,A),是未劃分前的數據的熵與根據屬性A劃分后的數據集的熵的差值.

假設訓練集S={S1,S2,…,SN},其中Si包含一個屬性向量Xi=(xi1,xi2,…xip)及分類標簽ci∈C={c1,c2,…,cm).在缺陷預測中Xi和ci分別代表一個模塊的度量向量和模塊是否存在缺陷的標記.設pi是S中屬于類別i的比例,則信息熵的計算方法:

最后,將預先準備的測試集輸入此模型,得到預測結果,將預測結果與真實的缺陷值進行比較評估,驗證模型的有效性.當訓練集與測試集來自同一個數據集時,我們采用10折交叉算法進行驗證,即將數據集平均分成10份,輪流取其中9份作為訓練數據,剩下1份作為測試數據,算出每一輪的準確率、召回率等評價指標.該實驗重復10次進行,最終算出10次的平均值作為最終驗證結果.

2.2.3 評價指標

對于分類模型,研究采用傳統的分類器性能評價指標,包括精確度、召回率、F-度量、AUC等.我們可以將預測的結果用一個混淆矩陣表示,如表1所示:

Table 1 Confusion Matrix

1) 精確度:precision=TP(TP+FP);

2) 召回率:recall=TP(TP+FN);

3) F度量:F_measure=2×precision×recall(precision+recall);

4)AUC(area under ROC curve):ROC曲線下面積.ROC曲線原本是用于描述收益和成本之間的權衡關系,我們以Y軸表示真正率,X軸表示真負率.AUC的范圍在[0,1],面積越大,模型越好.

對于排序問題,我們采用了Alberg圖(CLC)作為評價指標,CLC是Ohlsson和Alberg[14]提出的衡量排序任務的軟件缺陷預測模型的指標,它以模塊的百分比為橫坐標,累計的模塊缺陷數的百分比為縱坐標.模型曲線下的面積越大越好.我們還運用了Arisholm等人[10]提出的CE(cost effectiveness)指標來評價.CE指標建立在基于代碼行的Alberg圖的基礎上,和Alberg圖類似,區別在于X軸表示排序后的模塊累計的代碼行數的百分比.每個模型的預測結果對應圖2中的1條曲線.其中最優模型是按照軟件的真實缺陷數排序后的結果,隨機模型是指軟件模塊的排序完全隨機,這2條曲線可以作為缺陷預測模型性能比較的基準,預測模型的曲線越接近最優模型則效果越好.

Fig. 2 CE cruve圖2 CE曲線

3 實驗與分析

3.1 實驗準備

1) 實驗環境

本實驗在Intel Core i3-4130 3.40 GHz CPU,4 GB內存的PC機上完成,在Eclipse上編程開發,外部依賴項有weka.jar.

2) 實驗數據

本實驗數據來自Eclipse標準數據集[15],其中有6個ARFF格式的文件,分別收集了Eclipse源碼在package級別和file級別的度量元和缺陷數目,涉及Eclipse2.0,2.1,3.0這3個版本.數據集中所含的度量元包括:

1) Name——每條數據對應的文件名或包名;

2) Pre-release Defects——該版本發布前6個月內收集的缺陷數目;

3) Post-release Defects——該版本發布后6個月內收集的缺陷數目;

4) 復雜性度量——包括CK度量元和面向對象度量元,在表2中列出;

Table 2 Complexity Metrics of Eclipse Dataset

5) 抽象語法樹結構——抽象語法樹的結點度量.

由于File級別的數據集和Package級別的數據集在結構上存在差異,因此用File級別數據訓練的模型只能用來預測File級別的數據,Package級別的同理.我們每次取其中一個版本的FilePackage數據來學習模型,分別預測3個版本的FilePackage數據,并且在訓練集和測試集來自同一個版本時采用10折交叉驗證,故利用Eclipse數據集全部文件可進行18次預測與驗證.

3.2 實驗結果

3.2.1 分類預測

首先對數據集進行簡單算法的一次預測,由于實驗結果過多且效果相似,故只列出部分實驗結果,如表3所示.為了表示簡便,使用J48代表決策樹算法,LR代表邏輯回歸,BN代表貝葉斯網絡,NN代表神經網絡.

Table 3 Partial Results of Different Machine Learning Model

從表3看出邏輯回歸算法雖預測精確度較好,但召回率在幾種算法中偏低,綜合評價模型的F_measure與AUC指標也較低,而復雜的網絡模型的綜合指標令人滿意,但預測花費的時間太多.對于簡單預測,全部18次實驗可以在2 min內完成,而對于復雜算法全部完成18次實驗需要數小時,其中File級別的預測由于數據量大而占了大部分.這就證實2.1節提到的對于不同的評價指標而言最優的算法不盡相同.

將決策樹和邏輯回歸的預測結果分別加入數據集,根據2.2節的描述構建組合模型,預測并加以驗證,結果如表4所示.發現在訓練集和測試集來自不同數據集時,將決策樹預測結果加入度量元用組合模型預測的效果與單獨用決策樹預測的效果相近,分析原因可能是由于決策樹預測的精確度不高,將許多實際有缺陷的數據錯分為無缺陷的數據,因此將其結果加入數據集會影響模型的正確分類;而訓練集與測試集來自同一數據集時的預測結果顯示出現了過度擬合.邏輯回歸結果加入數據集再進行組合預測,對大部分評價指標都有一定的提高效果,尤其是最關注的precision比單一預測的結果均要好,并且時間開銷有了很大程度的減少,可以在30 min內完成全部預測.另外,所有實驗在Package級別均比在File級別要好,是因為Package級別的測試集中有缺陷和無缺陷的數據數量上相差不大,數據集近似平衡.

Table 4 Partial Results of Combined Machine Learning Model

表5中列出了文獻[15]對Eclipse數據集進行分類預測的結果,由于Zimmermann等人之后對Eclipse數據集做了一定的清洗,本文使用的Eclipse數據集與文獻[15]所用的數據集略有不同,File級別的數據中有缺陷的數據占整個數據集的10%~15%,而文獻[15]中有缺陷的數據占23%以上,由于本文學習所用到的缺陷數據較少,可能導致該預測模型沒有充分學習到缺陷數據與軟件度量元之間的關系,預測時產生了較多的分類錯誤,致使組合預測算法的precision不及表5中所示.但對于本文用到的Package級別的數據,有缺陷的數據占整個數據集50%左右,與文獻[15]數據相近,比較precision和recall評價指標可以看出基于組合學習算法的預測具有明顯優勢.

Table 5 Prediction Result of Ref [15]

因此我們認為,本文提出的基于組合的機器學習算法構建的缺陷預測模型能夠在一定程度上提高模型的各項評價指標,且比單一的機器學習算法有一定的優勢.

3.2.2 排序預測

首先對數據集進行簡單算法的一次預測,由于實驗結果過多且效果相似,故只列出部分實驗結果.用到的算法有隨機森林、線性回歸和神經網絡.從圖3可以看出這3種算法建立的模型在排序上的效果相同,實際試驗中線性回歸和隨機森林構建的模型結構較簡單,運算速度更快,而神經網絡的時間開銷非常大,完成18次實驗需要數小時.

根據本文提出的組合機器學習算法得到新的預測模型,并按照預測結果的值從大到小將模塊排序,做出CLC曲線和CE曲線,如圖4所示.在CLC評價下,加入線性回歸度量的神經網絡預測模型有一定的提高,CE指標和單個算法預測類似.然而改進的空間不大,分析原因是由于所選用的3種機器學習算法的效果相似,不能為組合模型的正確預測提供更多有用的信息,且每種機器學習算法的CE結果曲線均接近斜率為1的直線,即接近隨機排序的結果,推測該數據集對排序的預測不能取得良好的效果.

Fig. 3 Results of different machine learning model (File 2.0 as training Set, File 2.1 as testing Set)圖3 不同機器學習模型的部分預測結果(訓練集為File 2.0、測試集為File 2.1)

Fig. 4 Results of combined machine learning model (File 2.0 as training set, File 2.1 as testing set)圖4 組合機器學習模型的部分預測結果(訓練集為File 2.0、測試集為File 2.1)

4 總結與展望

本文針對當前軟件缺陷預測模型中機器學習算法對預測模型性能的影響問題,提出了一種基于不同機器學習算法的組合來建立缺陷預測模型的方法,首先對原始數據集進行一次快速預測,將該預測的結果加入數據集作為一個新的度量元,再對新數據集進行屬性選擇、降維,再通過魯棒性更強的復雜機器學習算法來構建新的模型并用于預測,得到的預測模型在缺陷預測的分類和排序問題上都有一定的效果.然而第1層預測的結果對該模型的影響較大,應盡量選擇準確度較高的學習算法,否則加入新的度量元可能引入過多的錯誤數據,導致缺陷預測模型向著錯誤的方向構建.如何更好地組合不同的學習算法使它們更緊密的聯系在一起,如何進一步提高缺陷預測模型的性能指標以及考慮過程度量等其他類型的度量數據是下一步將研究的問題.

[1]Arisholm E, Briand L C, Johannessen E B. A systematic and comprehensive investigation of methods to build and evaluate fault prediction models[J]. Journal of Systems and Software, 2010, 83(1): 2-17

[2]Khoshgoftaar T M, Seliya N. Comparative assessment of software quality classification techniques: An empirical case study[J]. Empirical Software Engineering, 2004, 9(3): 229-257

[3]Fenton N, Krause P, Neil M, et al. A probabilistic model for software defect prediction[J]. IEEE Trans on Software Engineering, 2001, 44(21): 444-453

[4]Vandecruys O, Martens D, Baesens B, et al. Mining software repositories for comprehensible software fault prediction models[J]. Journal of Systems and Software, 2008, 81(5): 823-839

[5]Turhan B, Bener A. Analysis of Naive Bayes' assumptions on software fault data: An empirical study[J]. Data & Knowledge Engineering, 2009, 68(2): 278-290

[6]Chang Chengcheng. Research about software defect priority prediction model based on AdaBoost-SVM algorithm[D]. Nanjing: Nanjing University of Posts and Telecommunications, 2013 (in Chinese)(常成成. 基于AdaBoost-SVM的軟件缺陷優先級預測模型的研究[D]. 南京: 南京郵電大學, 2013)

[7]Li Xiang, Zhu Quanyin. Prediction of improved BP neural network by Adaboost algorithm[J].Computer Engineering & Science, 2013, 35(8): 96-102 (in Chinese)(李翔, 朱全銀. Adaboost算法改進BP神經網絡預測研究[J]. 計算機工程與科學, 2013, 35(8): 96-102)

[8]Hall T, Beecham S, Bowes D, et al. A systematic literature review on fault prediction performance in software engineering[J]. IEEE Trans on Software Engineering, 2012, 38(6): 1276-1304

[9]Zhao Hongyuan. Using effort-aware performance indicators to compare the ability of code metrics, process metrics, and historical fault metrics to predict fault-proneness[D]. Nanjing: Nanjing University, 2013 (in Chinese)(趙宏遠. 代碼度量、過程度量和歷史缺陷度量: 工作量感知的缺陷預測能力比較[D]. 南京: 南京大學, 2013)

[10]Wang Pei. Research on software defect prediction based on feature selection[D]. Wuhan: Central China Normal University, 2013 (in Chinese)(王培. 特征選擇在軟件缺陷預測技術中的應用研究[D]. 武漢: 華中師范大學, 2013)

[11]Keene S E. A programmer’s guide to object-oriented programming in common LISP[M]. Reading, MA: Addison-Wesley, 1988

[12]Schwenker F. Ensemble methods: Foundations and algorithms [book review][J]. Computational Intelligence Magazine, 2013, 8(1): 77-79

[13]Wolpert D H. Stacked generalization[J]. Neural Networks, 1992, 5(2): 241-259

[14]Ohlsson N, Alberg H. Predicting fault-prone software modules in telephone switches[J]. IEEE Trans on Software Engineering, 1996, 22(12): 886-894

[15]Zimmermann T, Premraj R, Zeller A. Predicting defects for Eclipse[C]Proc of the 3rd International Workshop on Predictor Models in Software Engineering. Piscataway, NJ: IEEE, 2007: 9

Fu Yiqi, born in 1992. Master. Her main research interests include defects prediction and high confidence software technology.

Dong Wei, born in 1976. PhD, professor and PhD supervisor. Member of CCF. His main research interest include program analysis and high confidence software technology.

Yin Liangze, born in 1986. PhD. Member of CCF. His main research interest include model checking and high confidence software technology.

Du Yuqing, born in 1991. Master. Her main research interest is high confidence software technology.

Software Defect Prediction Model Based on the Combination of Machine Learning Algorithms

Fu Yiqi, Dong Wei, Yin Liangze, and Du Yuqing

(CollegeofComputer,NationalUniversityofDefenseTechnology,Changsha410073)

According to the metrics information and defects found in a software product, we can use software defect prediction technology to predict more defects that may also exist as early as possible, then testing and validation resources are allocated based on the prediction result appropriately. Defect prediction based on machine learning techniques can find software defects comprehensively and automatically, and it is becoming one of the main methods of current defect prediction technologies. In order to improve the efficiency and accuracy of prediction, selection and research of machine learning algorithms is the critical part. In this paper, we do comparative analysis to different machine learning defect prediction methods, and find that different algorithms have both advantages and disadvantages in different evaluation indexes. Taking these advantages, we refer to the stacking integration learning method and present a combined software defect prediction model. In this model, we first predict once, then add the prediction results of different methods in the original dataset as new software metrics, and then predict again. Finally, we make experiments on Eclipse dataset. Experimental results show that this model is technical feasibility, and can decrease the cost of time and improve the accuracy.

software defect prediction; machine learning; ensemble learning; combination; Eclipse prediction dataset

2015-12-09;

2016-06-30

國家“九七三”重點基礎研究發展計劃基金項目(2014CB340703);國家自然科學基金項目(91318301,61690203) This work was supported by the National Basic Research Program of China (973 Program) (2014CB340703) and the National Natural Science Foundation of China(91318301, 61690203).

董威(wdong@nudt.edu.cn)

TP311

猜你喜歡
排序模型
一半模型
排排序
排序不等式
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
恐怖排序
節日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 亚洲欧美不卡视频| 一区二区三区成人| 精品夜恋影院亚洲欧洲| 最新国语自产精品视频在| 人妻21p大胆| 亚洲国产在一区二区三区| 免费99精品国产自在现线| 免费xxxxx在线观看网站| 四虎永久免费地址| 最新国产你懂的在线网址| 国产精品成人免费综合| 色哟哟色院91精品网站| 色婷婷亚洲十月十月色天| 青青草国产精品久久久久| 国产精品美女免费视频大全| 亚洲一区波多野结衣二区三区| 欧美精品啪啪一区二区三区| 亚洲精品在线91| 国产av色站网站| 97se亚洲综合| 99re免费视频| 97成人在线观看| a级毛片在线免费| 久久免费观看视频| 成人永久免费A∨一级在线播放| 国产你懂得| 欧美一级特黄aaaaaa在线看片| 亚洲综合香蕉| 欧美不卡在线视频| 91九色最新地址| 亚洲不卡网| 久久亚洲美女精品国产精品| 最新加勒比隔壁人妻| 在线精品自拍| 在线免费观看a视频| 国产日本欧美亚洲精品视| 国产第一色| 国产精品林美惠子在线播放| 亚洲一区免费看| 国产精品午夜电影| 亚洲无码免费黄色网址| 亚洲视频免| 久久永久免费人妻精品| 国产91av在线| 亚洲无码精品在线播放| 91久久性奴调教国产免费| 久久久久亚洲av成人网人人软件| 人人艹人人爽| 五月激情综合网| 99er这里只有精品| 色网站在线免费观看| 欧美精品影院| 欧洲免费精品视频在线| 澳门av无码| 国产成人精品一区二区秒拍1o| 91久久偷偷做嫩草影院电| 九一九色国产| 老司机精品99在线播放| 国产成人精品一区二区三区| 国产高清无码第一十页在线观看| 久久综合激情网| 国产视频久久久久| 特黄日韩免费一区二区三区| 国产午夜人做人免费视频中文| 美女潮喷出白浆在线观看视频| 亚洲欧洲AV一区二区三区| 久久婷婷六月| 久久久久青草线综合超碰| 四虎国产永久在线观看| 久久www视频| 国产91线观看| 日本欧美精品| 国产成人1024精品| 欧美激情视频一区二区三区免费| vvvv98国产成人综合青青| 国产精品永久久久久| 真实国产乱子伦视频| 国产亚洲精品va在线| 亚洲国产精品人久久电影| 91精品国产情侣高潮露脸| 91原创视频在线| 国产网站免费观看|