• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于混合采樣與Random_Stacking的軟件缺陷預(yù)測

    2021-08-20 09:17:12閆嶺嶺杜軍威楊愛光
    計算機(jī)與現(xiàn)代化 2021年8期
    關(guān)鍵詞:軟件缺陷隨機(jī)性集上

    閆嶺嶺,江 峰,杜軍威,楊愛光

    (青島科技大學(xué)信息科學(xué)技術(shù)學(xué)院,山東 青島 266061)

    0 引 言

    軟件的質(zhì)量與軟件中所存在的缺陷數(shù)量直接相關(guān),軟件缺陷的存在會讓軟件或程序的運行出現(xiàn)障礙,使得軟件的安全性和可靠性面臨嚴(yán)重的威脅。因此,對于軟件缺陷預(yù)測的研究具有重要的理論和實際意義,軟件缺陷預(yù)測也被越來越多的專家學(xué)者所關(guān)注和研究。

    軟件缺陷預(yù)測主要是對軟件歷史數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)缺陷的分布規(guī)律,對軟件中的潛在缺陷進(jìn)行預(yù)測[1-2]。軟件缺陷預(yù)測技術(shù)的出現(xiàn)讓軟件測試人員在有缺陷傾向的模塊中投入更多的時間和精力,以降低軟件開發(fā)的成本,更合理地利用軟件項目的資源[3]。軟件缺陷預(yù)測技術(shù)可分為靜態(tài)和動態(tài)技術(shù)[1]。靜態(tài)技術(shù)[4]是通過分析軟件的歷史數(shù)據(jù),找出能度量軟件缺陷特征的數(shù)據(jù),并根據(jù)這些數(shù)據(jù)的分布特點,預(yù)測待測模塊中潛在的缺陷;動態(tài)技術(shù)是以缺陷產(chǎn)生的時間為基礎(chǔ),根據(jù)時間的分布變化對系統(tǒng)缺陷情況進(jìn)行預(yù)測[5]。近年來,機(jī)器學(xué)習(xí)方法被廣泛應(yīng)用于軟件缺陷預(yù)測模型的建立中,通過對已知標(biāo)簽的軟件缺陷數(shù)據(jù)進(jìn)行學(xué)習(xí),建立數(shù)據(jù)和軟件缺陷之間的聯(lián)系,并對未知的軟件模塊預(yù)測其發(fā)生缺陷的可能性[6]。常用的機(jī)器學(xué)習(xí)算法有:決策樹(C4.5)[7]、支持向量機(jī)(Support Vector Machine, SVM)[8-9]、K-最近鄰(K-Nearest Neighbor, KNN)[10]分類算法、隨機(jī)森林(Random Forest, RF)[11]、樸素貝葉斯(Naive Bayesian, NB)[12-13]等。傳統(tǒng)的機(jī)器學(xué)習(xí)算法通常假定數(shù)據(jù)集中各類別的樣本數(shù)量基本相等,即數(shù)據(jù)集是平衡的,然而在軟件缺陷預(yù)測中,無缺陷的樣本通常要遠(yuǎn)多于有缺陷樣本,即存在著嚴(yán)重的類別不平衡問題,因此,上述機(jī)器學(xué)習(xí)算法對有缺陷樣本的分類性能難以滿足要求。目前,針對不平衡數(shù)據(jù)的處理已成為軟件缺陷預(yù)測中的一項重要研究內(nèi)容。

    事實上,不平衡數(shù)據(jù)廣泛存在于現(xiàn)實生活中,例如在入侵檢測、欺詐檢測、醫(yī)療診斷等諸多領(lǐng)域中,都存在著不平衡數(shù)據(jù)。針對不平衡數(shù)據(jù)的處理,機(jī)器學(xué)習(xí)領(lǐng)域的研究者已開展了大量研究,并提出了不同的不平衡數(shù)據(jù)處理方法?,F(xiàn)有的不平衡數(shù)據(jù)處理方法主要包括以下2個方面:

    1)數(shù)據(jù)層面的處理方法。

    主要包括:過采樣、欠采樣和混合采樣。

    過采樣方法通過增加少數(shù)類樣本數(shù)量的方式處理不平衡數(shù)據(jù),典型的過采樣方法有Borderline-SMOTE算法[14];欠采樣方法則通過減少多數(shù)類樣本數(shù)量的方式處理不平衡數(shù)據(jù),典型的欠采樣方法有Tomek Links算法[15]。

    過采樣與欠采樣方法均實現(xiàn)了數(shù)據(jù)集中局部數(shù)據(jù)的平衡化,但沒有考慮數(shù)據(jù)的整體分布。針對這個問題,有研究者提出了將過采樣和欠采樣相結(jié)合的混合采樣算法,如SMOTE+ENN算法[16],在增加少數(shù)類樣本的同時減少一部分多數(shù)類樣本,從整體的角度實現(xiàn)了數(shù)據(jù)的平衡化。

    2)算法層面的處理方法。

    主要包括:代價敏感學(xué)習(xí)、單類學(xué)習(xí)和集成學(xué)習(xí)。

    代價敏感學(xué)習(xí)[17-18]為不同類別的樣本提供不同的權(quán)重,例如為少數(shù)類樣本設(shè)置更高的權(quán)重,以提高分類算法對少數(shù)類樣本的分類正確率。然而,權(quán)重的取值并沒有一個明確的標(biāo)準(zhǔn),需要根據(jù)經(jīng)驗設(shè)定。

    單類學(xué)習(xí)[19]將數(shù)據(jù)集中的某一類樣本作為訓(xùn)練集,建立一個對該類樣本的學(xué)習(xí)模型,計算該類樣本的識別正確率。單類學(xué)習(xí)方法節(jié)省時間開銷,適用于少數(shù)類樣本非常少的極端情況,但可能會出現(xiàn)對少數(shù)類樣本的過擬合問題。

    集成學(xué)習(xí)[20]構(gòu)建多個基分類器,并將這些基分類器的結(jié)果按照特定的規(guī)則集成起來,從而獲得一個更有效的分類模型,典型的集成學(xué)習(xí)方法有Bagging[21]等。

    針對軟件缺陷預(yù)測所面臨的數(shù)據(jù)類別不平衡、預(yù)測精度低等問題,本文將數(shù)據(jù)采樣技術(shù)與集成學(xué)習(xí)結(jié)合在一起,提出一種基于混合采樣與Random_Stacking的軟件缺陷預(yù)測算法DP_HSRS。DP_HSRS包括不平衡數(shù)據(jù)處理和集成學(xué)習(xí)2個階段。首先,在不平衡數(shù)據(jù)處理階段,利用Borderline-SMOTE+Tomek Links混合采樣算法處理不平衡數(shù)據(jù);其次,在集成學(xué)習(xí)階段,利用Random_Stacking算法構(gòu)建集成分類器并預(yù)測缺陷。

    近年來,混合采樣被廣泛應(yīng)用于不平衡數(shù)據(jù)的處理中,例如Batista等人提出一種混合采樣算法SMOTE +Tomek Links[16]。該算法首先利用合成少數(shù)類過采樣技術(shù)(Synthetic Minority Oversampling Technique, SMOTE)[22-23]對有缺陷樣本進(jìn)行過采樣,然后利用Tomek Links對無缺陷樣本進(jìn)行欠采樣。然而,SMOTE在合成新樣本時容易產(chǎn)生分布邊緣化問題,使有缺陷和無缺陷樣本的邊界變得模糊,從而增加分類算法的分類難度。盡管Batista等使用Tomek Links來剔除“入侵”樣本,但仍然無法消除SMOTE所帶來的分布邊緣化問題。

    針對上述問題,本文在SMOTE+Tomek Links算法的基礎(chǔ)上,提出一種改進(jìn)的混合采樣算法:Borderline-SMOTE+Tomek Links,即利用Borderline-SMOTE進(jìn)行過采樣并采用Tomek Links進(jìn)行欠采樣。Borderline-SMOTE將SMOTE與邊界信息結(jié)合起來,直接對有缺陷的邊界樣本進(jìn)行過采樣,可以解決SMOTE的分布邊緣化問題。另外,為了減少新合成的有缺陷樣本入侵到無缺陷樣本中,采用Tomek Links進(jìn)行篩選,從而找到并刪除這些噪聲點。

    如何保證基分類器之間的多樣性對于集成學(xué)習(xí)而言非常重要。很多集成學(xué)習(xí)方法通過引入隨機(jī)性來提升多樣性,而隨機(jī)性的引入則有不同的策略。傳統(tǒng)的Stacking算法[24]通過采用不同的分類算法在同一個訓(xùn)練集上構(gòu)建不同的基分類器來引入隨機(jī)性(這種隨機(jī)性被稱為“不同算法引入的隨機(jī)性”)。然而,很多時候在同一個訓(xùn)練集上采用不同算法構(gòu)建的基分類器之間的差異可能比較小,難以保證基分類器之間的多樣性。與Stacking不同,Bagging通過對樣本空間進(jìn)行擾動來引入隨機(jī)性,它利用同一個分類算法在不同的訓(xùn)練集上構(gòu)建不同的基分類器,其中,不同的訓(xùn)練集是通過多次Bootstrap抽樣所獲得(這種隨機(jī)性被稱為“不同訓(xùn)練集引入的隨機(jī)性”)。Bagging雖然簡單,但很多時候卻能獲得非常好的性能。

    針對傳統(tǒng)的Stacking算法在保證基分類器多樣性上所存在的不足,本文將Bagging中隨機(jī)性的引入策略(即對樣本空間進(jìn)行擾動)應(yīng)用于Stacking中,進(jìn)而提出一種改進(jìn)的集成學(xué)習(xí)算法Random_Stacking,并將其應(yīng)用于軟件缺陷預(yù)測中。Random_Stacking的主要思路如下:

    1)對訓(xùn)練集進(jìn)行M次Bootstrap抽樣,獲得M個抽樣集。

    2)對每個抽樣集分別采用4種不同的分類算法構(gòu)建4個基分類器,并利用這4個基分類器的預(yù)測結(jié)果進(jìn)行第2層的學(xué)習(xí),訓(xùn)練出一個Stacking分類器。

    3)將第2步重復(fù)M次,得到M個Stacking分類器。

    4)通過投票的方式將M個Stacking分類器集成在一起,從而得到一個集成分類器,并利用其來預(yù)測缺陷。

    Random_Stacking不僅采用不同的分類算法來構(gòu)建基分類器,而且采用不同的訓(xùn)練集來構(gòu)建基分類器,通過將“不同算法引入的隨機(jī)性”與“不同訓(xùn)練集引入的隨機(jī)性”這2種隨機(jī)性有機(jī)結(jié)合在一起,從而可以有效增加基分類器的多樣性。

    本文在公開的NASA MDP數(shù)據(jù)集上開展實驗。實驗結(jié)果表明,本文提出的DP_HSRS算法的整體性能優(yōu)于現(xiàn)有的分類算法,具有更好的缺陷預(yù)測性能。

    1 基本概念

    1.1 Borderline-SMOTE

    Borderline-SMOTE算法是在SMOTE算法的基礎(chǔ)上改進(jìn)而來。首先,對有缺陷樣本集中的每一個樣本xi計算離它最近的m個樣本,若m個樣本中有一半以上是無缺陷樣本,則認(rèn)為xi為容易被錯誤分類的樣本,把它放入危險集;其次,對危險集中的每一個樣本x隨機(jī)選擇,從有缺陷樣本集中計算距離它最近的K個樣本,隨機(jī)從K個樣本抽取若干個,假設(shè)選擇的樣本為xn,取隨機(jī)數(shù)(0~1),對于每一個隨機(jī)選出的近鄰xn,按照公式(1)生成新樣本;最后,對危險集中的每一個樣本重復(fù)上述步驟,就能得到新合成的有缺陷樣本。

    xnew=x+rand(0,1)×(x-xn)

    (1)

    其中,xnew表示新生成的有缺陷樣本,x表示有缺陷樣本,rand(0,1)表示隨機(jī)數(shù),xn表示隨機(jī)生成的某一近鄰樣本。

    1.2 Tomek Links

    過采樣后,某些新合成的有缺陷樣本難免會侵入到無缺陷樣本之中,容易造成模型的過擬合。Tomek Links算法的主要思想是:通過對比2個樣本點之間的距離,判斷這2個樣本點能否形成Tomek Links對,若能形成,則說明其中一個樣本為噪聲數(shù)據(jù),進(jìn)而刪除該樣本;反之,則為安全樣本。Tomek Links可以很好地解決“入侵”的問題。

    1.3 Stacking算法

    Stacking算法是由Wolpert在1992年提出的,作為經(jīng)典的集成學(xué)習(xí)方法之一,Stacking算法可以看作是將多個不同模型組合在一起的新模型。

    Stacking算法由2層分類器構(gòu)成,其中,第1層由T個分類算法組成,訓(xùn)練T個基分類器;第2層由一個分類算法組成,訓(xùn)練一個分類器。通常,在第1層對訓(xùn)練集進(jìn)行k折交叉驗證,分別用T個不同的分類算法構(gòu)建T個基分類器,第2層利用T個基分類器的預(yù)測結(jié)果作為輸入,并采用一個分類算法來獲得最終的預(yù)測結(jié)果。

    2 DP_HSRS算法

    DP_HSRS算法包括不平衡數(shù)據(jù)處理和集成學(xué)習(xí)這2個階段。首先,在第1個階段,利用Borderline-SMOTE+Tomek Links混合采樣算法來處理不平衡數(shù)據(jù);其次,在第2個階段,利用Random_Stacking算法來構(gòu)建集成分類器,并預(yù)測缺陷。

    Borderline-SMOTE+Tomek Links算法是對Batista等所提出的混合采樣算法SMOTE+Tomek Links的一種有效改進(jìn),它將SMOTE與邊界信息結(jié)合起來,直接對有缺陷的邊界樣本進(jìn)行過采樣,能夠有效解決SMOTE的分布邊緣化問題。Random_Stacking算法則是對傳統(tǒng)的集成學(xué)習(xí)算法Stacking的一種改進(jìn),將Bagging中隨機(jī)性的引入策略應(yīng)用于Stacking算法中,不僅采用不同的分類算法構(gòu)建基分類器,而且采用不同的訓(xùn)練集構(gòu)建基分類器,通過將Bagging中隨機(jī)性的引入策略與Stacking中隨機(jī)性的引入策略有機(jī)結(jié)合在一起,從而增加基分類器的多樣性。

    DP_HSRS算法的流程圖如圖1所示。

    在圖1中,每個Stacking分類器實際上是由4個基分類器所構(gòu)成,其中,每個基分類器都由不同的分類算法產(chǎn)生。通過Bagging機(jī)制來擾動樣本空間,在不同的抽樣集上分別構(gòu)建不同的Stacking分類器,并且使得隸屬于不同Stacking分類器的基分類器之間具有更大的差異性。例如,隸屬于第一個Stacking分類器的基分類器1-1、1-2、1-3、1-4與隸屬于第M個Stacking分類器的基分類器M-1、M-2、M-3、M-4之間具有更大的差異性。利用Bagging機(jī)制對訓(xùn)練樣本進(jìn)行擾動,可以有效增加基分類器之間的多樣性。因此,Random_Stacking算法將Bagging機(jī)制與Stacking結(jié)合在一起是非常有意義的。

    圖1 DP_HSRS算法的流程圖

    2.1 第1階段:Borderline-SMOTE+Tomek Links混合采樣

    DP_HSRS算法的第1個階段采用Borderline-SMOTE+Tomek Links混合采樣算法進(jìn)行不平衡數(shù)據(jù)的處理。在本階段,首先利用Borderline-SMOTE算法對有缺陷的邊界樣本進(jìn)行過采樣,在這個邊界樣本區(qū)域內(nèi)進(jìn)行插值,合成新的有缺陷樣本,為了避免新合成的有缺陷樣本入侵到無缺陷樣本中,利用Tomek Links算法查找和刪除這些入侵樣本。經(jīng)過平衡化處理之后,就可以獲得一個類別相對平衡的數(shù)據(jù)集。

    Borderline-SMOTE+Tomek Links算法的具體步驟如下:

    算法1 Borderline-SMOTE+Tomek Links

    輸入:類別不平衡數(shù)據(jù)集T;有缺陷樣本集P;無缺陷樣本集N;過采樣比例ratio=p%。

    輸出:類別平衡數(shù)據(jù)集Tbalance。

    1)采用均值法,對類別不平衡數(shù)據(jù)集T做了缺失值的補(bǔ)齊,并將冗余和無關(guān)特征刪除。

    2)對有缺陷樣本集P中的每一個樣本xi,在整個訓(xùn)練集T中,計算離它最近的m個樣本,將m近鄰中無缺陷樣本數(shù)量記為mi。

    3)若mi=m,即距離xi最近的m個樣本都是無缺陷樣本,認(rèn)為xi是噪聲點,不進(jìn)行任何操作;若m/2

    4)對危險集中的每一個樣本x隨機(jī)選擇,以歐氏距離為標(biāo)準(zhǔn),從有缺陷樣本集中計算距離它最近的K個樣本,隨機(jī)從K個樣本抽取若干個,假設(shè)選擇的樣本為xn,取隨機(jī)數(shù)(0~1),對于每一個隨機(jī)選出的近鄰xn,按照公式(1)生成新樣本。

    5)對危險集中的每一個樣本重復(fù)執(zhí)行步驟2~步驟4,直至達(dá)到過采樣的比例p%,停止合成新樣本,將新樣本放入原始數(shù)據(jù)集。

    6)若xi和xj是原始數(shù)據(jù)集中2個不同類別的樣本點,計算這2個樣本點的歐氏距離d(xi,xj)。

    7)查找是否存在xl,使得d(xl,xi)

    8)若不存在,說明(xi,xj)為一個Tomek Links對,將Tomek Links對中屬于無缺陷的樣本剔除。

    9)反之,重復(fù)執(zhí)行步驟7~步驟8,直至查找完所有的樣本點。

    10)算法結(jié)束,返回類別平衡數(shù)據(jù)集Tbalance。

    2.2 第2階段:Random_Stacking集成學(xué)習(xí)

    DP_HSRS算法的第2個階段采用Random_Stacking集成學(xué)習(xí)算法構(gòu)建缺陷預(yù)測模型。Random_Stacking算法是一個雙層的集成算法,在本階段,第一層分類算法采用4個經(jīng)典的分類算法:L1、L2、L3和L4以及Bagging機(jī)制來構(gòu)建多個基分類器;第二層分類算法則采用L算法。

    Random_Stacking算法相對于傳統(tǒng)的Stacking算法有如下改進(jìn):1)不僅采用不同的分類算法來構(gòu)建基分類器,而且采用不同的訓(xùn)練集來構(gòu)建基分類器;2)引入了2種隨機(jī)性:“不同算法引入的隨機(jī)性”和“不同訓(xùn)練集引入的隨機(jī)性”。

    Random_Stacking算法相對于傳統(tǒng)的Stacking算法有如下優(yōu)勢:1)通過引入2種隨機(jī)性,可以有效解決傳統(tǒng)的Stacking算法中基分類器之間的差異可能比較小的問題;2)通過增加基分類器的多樣性,從而顯著提升集成分類器的分類性能。

    Random_Stacking算法的具體步驟如下:

    算法2 Random_Stacking

    輸入:數(shù)據(jù)集Tbalance;第一層分類算法L1、L2、L3、L4;第二層分類算法L;參數(shù)M、K、TL。

    輸出:集成分類器E。

    1)對數(shù)據(jù)集Tbalance按比例劃分為訓(xùn)練集train和測試集test。

    2)對訓(xùn)練集train進(jìn)行M次Bootstrap抽樣,得到M個抽樣集,即抽樣集1,抽樣集2,…,抽樣集M。

    3)對于抽樣集i(1≤i≤M),反復(fù)執(zhí)行下列語句:

    ①采用k折交叉驗證的方法,將抽樣集i劃分為k個大小相等的互斥子集,令Dj和DDj分別表示第j折的訓(xùn)練集和測試集,其中,1≤j≤k。

    ②分別采用分類算法L1、L2、L3、L4在訓(xùn)練集Dj上進(jìn)行訓(xùn)練,構(gòu)建基分類器i-1、i-2、i-3、i-4,在測試集DDj得出預(yù)測結(jié)果。

    ③將②重復(fù)k次,得到基分類器i-1、i-2、i-3、i-4的交叉驗證預(yù)測結(jié)果Predictioni-1、i-2、i-3、i-4。

    ④將Predictioni-1、i-2、i-3、i-4以及對應(yīng)的類別標(biāo)記作為第二層分類算法L的訓(xùn)練集TL。

    ⑤在訓(xùn)練集TL上利用分類算法L訓(xùn)練一個Stacking分類器(即Stacking分類器i)。

    4)將第3步所構(gòu)建的M個Stacking分類器通過投票的方法集成在一起,得到最終的集成分類器E。

    5)返回集成分類器E。

    在算法1和2的基礎(chǔ)上,就可以設(shè)計一種基于混合采樣與Random_Stacking的缺陷預(yù)測算法DP_HSRS。DP_HSRS算法的具體步驟如下:

    算法3 DP_HSRS

    輸入:類別不平衡數(shù)據(jù)集T;測試集test;集成分類器E。

    輸出:軟件缺陷預(yù)測結(jié)果。

    1)利用算法1對類別不平衡數(shù)據(jù)集T進(jìn)行平衡化處理,得到一個平衡的數(shù)據(jù)集。

    2)在步驟1所得到的平衡數(shù)據(jù)集上利用算法2構(gòu)建一個集成分類器E。

    3)利用集成分類器E來處理測試集test,即對test中的每個樣本進(jìn)行缺陷預(yù)測,從而得到缺陷預(yù)測結(jié)果。

    4)返回軟件缺陷預(yù)測結(jié)果。

    3 實驗結(jié)果與分析

    3.1 實驗設(shè)置及數(shù)據(jù)

    本文實驗中過采樣的比例ratio設(shè)為0.8,將平衡數(shù)據(jù)集按照8:2的比例劃分為訓(xùn)練集和測試集,對訓(xùn)練集采用Bootstrap方法進(jìn)行M(M=10)次抽樣,第一層分類算法采用SVM、C4.5、NB和KNN算法,第二層采用邏輯回歸算法。對每一個抽樣集,采用k(k設(shè)為5)折交叉驗證。

    從NASA MDP數(shù)據(jù)集中選取不平衡率較大的數(shù)據(jù)集CM1、KC1、KC3、MC1、MW1、PC1、PC2、PC3、PC4、PC5作為本文的實驗數(shù)據(jù)。實驗原始數(shù)據(jù)集的數(shù)據(jù)信息如表1所示,經(jīng)過數(shù)據(jù)平衡化處理后的數(shù)據(jù)集信息如表2所示。

    表1 原始數(shù)據(jù)集

    表2 平衡化數(shù)據(jù)集

    3.2 實驗結(jié)果及分析

    本文采用Accuracy(分類精度)、F1值和AUC(Area Under the Curve)值來評價不同算法的性能。

    3.2.1 Random_Stacking算法結(jié)果分析

    為了驗證不同的不平衡數(shù)據(jù)處理方法對實驗結(jié)果的影響,分別采用SMOTE、Borderline-SMOTE和Borderline-SMOTE+Tomek Links這3種方法來對數(shù)據(jù)集進(jìn)行不平衡處理,并利用Random_Stacking算法來構(gòu)建缺陷預(yù)測模型。實驗結(jié)果如表3和表4所示。

    表3 Random_Stacking對不同采樣方法的Accuracy和F1值

    表4 Random_Stacking對不同采樣方法的AUC值

    表3和表4中,S代表SMOTE;B-S代表Borderline-SMOTE;B-S+T代表Borderline-SMOTE+Tomek Links。

    從表3和表4可以看出,對于分別經(jīng)過SMOTE、Borderline-SMOTE和Borderline-SMOTE+Tomek Links算法處理過的數(shù)據(jù)集,除了在數(shù)據(jù)集KC3和MW1上,Random_Stacking算法的Accuracy值和AUC值相同,對于經(jīng)過Borderline-SMOTE+Tomek Links處理過的其他數(shù)據(jù)集,Random_Stacking的Accuracy值、F1值和AUC值明顯高于另外2種數(shù)據(jù)不平衡處理算法,說明利用Borderline-SMOTE算法對有缺陷的邊界樣本進(jìn)行過采樣,并用Tomek Links算法刪除新合成的入侵樣本,能夠有效提高分類算法的性能。

    3.2.2 DP_HSRS算法結(jié)果分析

    為了驗證DP_HSRS算法在軟件缺陷預(yù)測中的性能,選取了構(gòu)成DP_HSRS基分類器中分類性能較好的KNN和C4.5算法進(jìn)行比較。KNN和C4.5也是軟件缺陷預(yù)測中經(jīng)典的機(jī)器學(xué)習(xí)算法。同時選取了軟件缺陷預(yù)測中常用的集成學(xué)習(xí)算法RF、Adaboost以及Stacking算法與本文算法進(jìn)行對比實驗。實驗結(jié)果如表5~表7所示。

    表5 6種方法的Accuracy值

    從表5可以看出,除了在KC3和PC1這2個數(shù)據(jù)集上,DP_HSRS的Accuracy值在大部分?jǐn)?shù)據(jù)集上都要高于其他算法。此外,DP_HSRS在所有數(shù)據(jù)集上的性能都要優(yōu)于Stacking算法,這說明增加基分類器的多樣性有助于提高分類性能。除了在CM1數(shù)據(jù)集上,KNN的Accuracy值為0.77,在其他數(shù)據(jù)集上的Accuracy值都在0.8以上。RF和Adaboost在所有數(shù)據(jù)集上的分類精度都要高于KNN和C4.5,這說明在分類精度這一評價指標(biāo)上,集成學(xué)習(xí)算法的缺陷預(yù)測性能要優(yōu)于單個分類器。

    從表6可以看出,除了在KC1和KC3這2個數(shù)據(jù)集上,DP_HSRS的F1值在大部分?jǐn)?shù)據(jù)集上都要高于其他算法。此外,DP_HSRS在所有數(shù)據(jù)集上的性能都要優(yōu)于或等于Stacking,這說明增加基分類器的多樣性有助于提高集成分類器的F1值。除了在數(shù)據(jù)集KC1和KC3上,Adaboost的F1值略低于KNN和C4.5,在其他數(shù)據(jù)集上,RF、Adaboost和Stacking的F1值都高于或等于KNN和C4.5,這說明集成分類器對有缺陷樣本的預(yù)測性能要優(yōu)于單個分類器,更適合對軟件缺陷進(jìn)行預(yù)測。

    表6 6種方法的F1值

    由表7可以看出,DP_HSRS的AUC值在大部分?jǐn)?shù)據(jù)集上都要高于其他算法。此外,DP_HSRS的AUC值也顯著高于Stacking,這說明增加基分類器的多樣性,有助于提高集成分類器的AUC值。RF、Adaboost和Stacking的AUC值明顯高于KNN和C4.5,這說明集成分類器相比于單個分類器,更適合對軟件缺陷進(jìn)行預(yù)測。相對于RF、Adaboost和Stacking這3種集成算法,DP_HSRS對異質(zhì)基分類器進(jìn)行集成,并引入隨機(jī)性來增加基分類器的多樣性,可以取得更好的缺陷預(yù)測性能。

    表7 6種分類方法的AUC值

    由以上實驗結(jié)果可知,本文提出的DP_HSRS算法其分類性能明顯優(yōu)于單個分類器,另外,與RF、Adaboost和Stacking等集成算法相比,DP_HSRS對異質(zhì)基分類器進(jìn)行集成,并引入隨機(jī)性來增加基分類器的多樣性,是有效且可行的。

    4 結(jié)束語

    本文針對軟件缺陷預(yù)測中的類別不平衡和預(yù)測精度低等問題,提出了一種新的軟件缺陷預(yù)測算法DP_HSRS。首先對不平衡數(shù)據(jù)集進(jìn)行混合采樣,利用Borderline-SMOTE進(jìn)行過采樣并采用Tomek Links進(jìn)行降采樣,獲得平衡化數(shù)據(jù)集,然后在該平衡數(shù)據(jù)集上采用Random_Stacking算法進(jìn)行軟件缺陷預(yù)測。實驗結(jié)果表明,該算法在分類精度、F1和AUC等方面都要優(yōu)于常用的分類算法。

    Random_Stacking算法將多個分類算法融合在一起,同時采用了Bootstrap方式獲取多個抽樣集,分別在這些抽樣集上構(gòu)建不同的Stacking分類器,有效增加了基分類器的多樣性。然而,該算法的結(jié)構(gòu)相對復(fù)雜,時間復(fù)雜度也相對較高,因此如何有效降低該算法的時間復(fù)雜度是筆者接下來的研究方向。

    猜你喜歡
    軟件缺陷隨機(jī)性集上
    基于源文件可疑度的靜態(tài)軟件缺陷檢測方法研究
    Cookie-Cutter集上的Gibbs測度
    鏈完備偏序集上廣義向量均衡問題解映射的保序性
    基于NPE-SVM的軟件缺陷預(yù)測模型
    復(fù)扇形指標(biāo)集上的分布混沌
    開源程序的軟件缺陷分布特征的量化分析研究
    淺析電網(wǎng)規(guī)劃中的模糊可靠性評估方法
    考慮負(fù)荷與分布式電源隨機(jī)性的配電網(wǎng)無功優(yōu)化
    適用于隨機(jī)性電源即插即用的模塊化儲能電池柜設(shè)計
    軟件缺陷管理方案分析
    卢湾区| 黄陵县| 岑溪市| 西和县| 屯门区| 惠安县| 沈丘县| 资阳市| 延长县| 东兰县| 洛扎县| 乌鲁木齐市| 克山县| 东乌珠穆沁旗| 房山区| 新乐市| 邮箱| 股票| 维西| 岐山县| 长寿区| 湘潭市| 松溪县| 铁岭市| 南投市| 遵义县| 阜阳市| 呼玛县| 齐齐哈尔市| 虹口区| 睢宁县| 哈巴河县| 屯留县| 合阳县| 永寿县| 洛南县| 青浦区| 金寨县| 辽阳市| 通榆县| 特克斯县|