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

    基于類不平衡的軟件缺陷傾向性預測研究

    2022-03-07 04:34:50程雪平陳海華
    現(xiàn)代計算機 2022年24期
    關鍵詞:軟件缺陷小類傾向性

    程雪平,陳海華

    (廣州華商學院數(shù)據(jù)科學學院,廣州 511300)

    0 引言

    軟件缺陷是指軟件系統(tǒng)中不被期望、不可接受的偏差[1]。軟件缺陷的產(chǎn)生主要源于對軟件需求做出了錯誤的理解,或者在設計、編碼過程中,研發(fā)人員由于經(jīng)驗或技術原因引入的人為錯誤。軟件缺陷的存在可能會導致巨大的經(jīng)濟損失,甚至會威脅到人的生命安全。

    軟件缺陷具有累積放大效應,即在整個軟件生命周期中,能夠越早地發(fā)現(xiàn)缺陷,其修復的代價就越??;反之,其修復的代價就越大?,F(xiàn)代軟件工程中,隨著軟件規(guī)模日益龐大,軟件復雜度越來越高,軟件開發(fā)的響應速度、用戶對軟件質(zhì)量的要求均越來越高。如何合理分配有限的資源,及時發(fā)現(xiàn)、修復缺陷,是保證軟件質(zhì)量的關鍵。

    軟件缺陷預測是保障軟件質(zhì)量的重要手段,也是近年來軟件工程領域的研究熱點問題之一[2]。軟件缺陷預測技術主要包括三個方向:一是通過軟件度量元數(shù)據(jù)對軟件模塊的缺陷傾向性進行預測;二是預測模塊的缺陷數(shù);三是對缺陷嚴重程度等進行預測[3]。

    軟件缺陷傾向性預測技術是軟件缺陷預測的重要研究方向,是對系統(tǒng)中的模塊是否存在缺陷做出預判,有助于提前對軟件測試的資源分配做好合理的安排,為軟件質(zhì)量提供堅實的保障。軟件缺陷傾向性預測是一個不平衡的二分類問題[4],目前所使用的研究算法包括復雜網(wǎng)絡、多目標優(yōu)化、深度學習等,更多的是基于機器學習算法進行研究,如邏輯回歸、樸素貝葉斯、決策樹、支持向量機等算法[5]。

    本文選取軟件缺陷預測中廣泛使用的數(shù)據(jù)倉庫NASA MDP 中的部分數(shù)據(jù)集,對原始數(shù)據(jù)中的異常值和重復值進行預處理,然后使用三種不同的過采樣方法處理不平衡類,最后根據(jù)特征數(shù)據(jù)采用隨機森林算法構建預測模型。

    1 缺陷傾向性預測總體方案

    軟件缺陷傾向性預測過程由四部分組成:獲取軟件缺陷數(shù)據(jù)資源庫、數(shù)據(jù)預處理、處理類不平衡問題、構建預測模型及評價指標,總體解決方案如圖1所示。

    圖1 軟件缺陷傾向性預測方案模型

    1.1 軟件缺陷數(shù)據(jù)資源庫

    當前,用于軟件缺陷預測的數(shù)據(jù)主要有兩大類,包括商業(yè)性的數(shù)據(jù)倉庫和公共倉庫。商業(yè)性數(shù)據(jù)倉庫難以獲取,以這類數(shù)據(jù)源進行研究,其實驗結果難以比較和重現(xiàn),因此,研究人員通常利用公共數(shù)據(jù)倉庫進行研究。較為常見的公共庫包括NASA、PROMISE、AEEEM以及ReLink等,這些公共庫中的度量元與缺陷信息都是可用的,有利于實驗結果的重現(xiàn)與分析比較。

    NASA庫中總共包含13個缺陷數(shù)據(jù)集,其中,每個模塊對應一條樣本數(shù)據(jù),無缺陷的模塊數(shù)據(jù)以N為標記結束,有缺陷的模塊以Y為標記結束,以CM1數(shù)據(jù)集為例,其數(shù)據(jù)結構如圖2所示。

    圖2 CM1數(shù)據(jù)結構

    本文選取NASA 庫中前四個數(shù)據(jù)集作為軟件缺陷傾向性預測實驗數(shù)據(jù)進行分析比較:CM1、JM1、KC1、KC3。

    觀察軟件缺陷實驗數(shù)據(jù)集,無缺陷模塊數(shù)與有缺陷的模塊數(shù)相比,前者要多的多,這一現(xiàn)象與工程實踐中的軟件缺陷分布情況類似,即系統(tǒng)中的軟件缺陷分布基本滿足二八原則:20%的模塊集中了80%的缺陷數(shù)。

    圖3 給出了CM1、JM1、KC1、KC3 四個數(shù)據(jù)集的有缺陷模塊與無缺陷模塊的計數(shù)餅圖。

    圖3 實驗數(shù)據(jù)集中有缺陷樣本與無缺陷樣本對比圖

    無論是工程實踐,還是提供研究的公共數(shù)據(jù)倉庫中,軟件缺陷預測數(shù)據(jù)集存在著嚴重的類不平衡問題。在軟件缺陷數(shù)據(jù)集中,由于有缺陷樣本與無缺陷樣本遵循二八定律,做缺陷傾向性預測時,若把所有模塊預測為無缺陷,其模型準確度依舊會很高,但會嚴重影響軟件缺陷傾向性的真實分類。

    預測模型若將不同類的樣本數(shù)據(jù)進行錯誤的分類,付出的代價有所不同。在軟件缺陷傾向性預測中,如果將無缺陷的樣本分類成有缺陷樣本,會導致測試人員在進行軟件測試工作時,將寶貴的時間資源浪費在無缺陷模塊上;另一方面,若將有缺陷樣本預測成無缺陷樣本,則會出現(xiàn)缺陷漏報,缺陷漏報后把有缺陷的產(chǎn)品交付給客戶,這將會產(chǎn)生無法估量的后果,甚至使得項目產(chǎn)生滅頂之災。因此,在構建預測模型之前,需要處理軟件缺陷數(shù)據(jù)集的不平衡問題。

    1.2 數(shù)據(jù)預處理

    軟件缺陷傾向性預測數(shù)據(jù)預處理主要包括兩個方面:一是對異常數(shù)據(jù)的處理,二是對數(shù)據(jù)集中的類不平衡問題進行處理。

    基于機器學習的原始異常數(shù)據(jù)總體分為重復數(shù)據(jù)、缺失數(shù)據(jù)以及噪聲數(shù)據(jù)[6]。重復數(shù)據(jù)指同一條數(shù)據(jù)在數(shù)據(jù)集中出現(xiàn)多次,這類異常數(shù)據(jù)的存在會使預測結果具有更強的傾向性。對重復數(shù)據(jù)的處理可以根據(jù)重復數(shù)據(jù)所占的比例進行降重,使其概率分布合理化。缺失數(shù)據(jù)指樣本中某些屬性對應的值缺失,這類異常數(shù)據(jù)存在的主要原因是信息的丟失。對缺失數(shù)據(jù)的處理,可以利用均值、極大似然值或者同類均值進行填充。噪聲數(shù)據(jù)指與其它數(shù)據(jù)有嚴重偏離的數(shù)據(jù),對噪聲數(shù)據(jù)可以使用線性回歸的方式進行替換。

    本文首先利用散點圖對異常值進行檢測,而后通過上述常規(guī)方法對數(shù)據(jù)集中的異常數(shù)據(jù)進行處理獲得異常數(shù)據(jù)處理后的數(shù)據(jù)集。對于類不平衡問題,可以從三個方面進行處理:數(shù)據(jù)處理層面、數(shù)據(jù)特征層面以及模型算法層面[7]。

    數(shù)據(jù)處理層面解決類不平衡問題的主要思想是同對源數(shù)據(jù)集中的類進行重采樣,從而使得小類樣本與大類樣本的數(shù)量之間趨于平衡。當前,重采樣是解決類不平衡問題最直接的方法[5]。數(shù)據(jù)特征層面解決類不平衡問題的主要思想是自動化地選擇不平衡類中具有良好區(qū)分能力的特征子集,從而提高小類以及整體分類的準確率。模型算法層面處理類不平衡問題主要有代價敏感算法、單類學習、集成學習等[8]。

    本文實驗主要用重采樣方法處理類不平衡問題,并對不同的采樣方法所產(chǎn)生的效果進行分析比較。重采樣方法可以分為下采樣和上采樣兩種。下采樣方法也稱為欠采樣,指的是通過一定的算法,將大類樣本中的部分數(shù)據(jù)剔除,從而使得大類樣本數(shù)據(jù)與小類樣本數(shù)據(jù)趨于平衡。欠采樣采樣方法處理類不平衡問題,可能會導致大量有用的數(shù)據(jù)丟失,從而導致模型存在欠擬合問題。本文主要使用上采樣方法處理類不平衡問題,對下采樣方法不做過多贅述。上采樣也稱為過采樣,是指通過增加小類樣本數(shù)量的方法與大類的樣本數(shù)量趨于平衡。最為常見的過采樣方法是隨機過采樣,即隨機復制小類中的樣本,這種方法的優(yōu)點是簡單便捷,但這樣一來會造成對小類樣本識別不足的過擬合現(xiàn)象。由此,SMOTE 過采樣算法[9]被提了出來。

    圖4 描述了SMOTE 過采樣算法生成新樣本的過程。

    圖4 SMOTE過采樣算法合成新樣本過程

    如圖4 所示,SMOTE 過采樣算法生成新樣本的主要過程分為如下四個步驟:

    (1)在小類樣本中隨機選擇一個樣本作為中心樣本點;

    (2)搜索與中心樣本點距離最近的k個鄰近同類樣本;

    (3)在(2)中選出的k個近鄰樣本中隨機選擇一個樣本與中心樣本點進行連線;

    (4)在中心樣本點與隨機選擇的樣本連線之間隨機生成一個新的小類樣本數(shù)據(jù)。

    由上述算法可知,雖然SMOTE 過采樣算法相較于隨機過采樣有較大改進,但是在生成新樣本時必須是成倍增加,如此便難以避免樣本的重疊生成?;诖耍袑W者對基礎SMOTE 算法加以改進,其中以borderline-SMOTE 算法[10]應用較為廣泛。

    borderline-SMOTE 算法將小類樣本數(shù)據(jù)分為三類:Safe 樣本點、Noise 樣本點以及Danger樣本點,Danger 樣本指靠近分類邊界的樣本點。該算法對SMOTE 算法的改進之處在于其僅選用邊界上的小類樣本,即Danger 樣本點合成新樣本,避免成倍新樣本的重疊生成,從而改善樣本類別的分布。

    針對軟件缺陷傾向性預測的類不平衡問題,本文將對比使用隨機過采樣、SMOTE 過采樣以及borderline-SMOTE采樣方法的預測效果。

    1.3 性能評價指標

    當前,針對分類預測能力的評價標準較多,如準確率(Accuracy)、查準率(Precision)、召回率(Recall)、G-mean、AUC等,通常來說,它們的值越大越好,本文選擇查準率、召回率和AUC[11]作為模型性能評價指標。

    軟件缺陷傾向性預測的結果是判斷數(shù)據(jù)集中的每一個模塊是否有缺陷,其取值要么為Y,要么為N,因此,這是一個二分類問題。對于二分類問題的結果,可以用混淆矩陣[12]評測。

    混淆矩陣如表1所示。

    表1 混淆矩陣

    召回率反映分類器預測正樣本全度的能力,即正樣本被預測為正樣本在總的正樣本的比例,其計算公式如(2)所示:

    在軟件缺陷數(shù)據(jù)集中,標記為有缺陷的樣本定義為正例,無缺陷樣本為負例。因此,查準率P表示預測為有缺陷的樣本中,真實為有缺陷樣本的占比數(shù)。召回率R表示真實的有缺陷樣本被預測為有缺陷樣本的占比數(shù)。

    AUC 值通常被用來評價一個二值分類器性能的好壞,ROC 曲線[13]以下部分的面積就是AUC,AUC 的值越大,表示模型預測效果越好。為了比較不同的采樣方法處理軟件缺陷數(shù)據(jù)集中不平衡類的效果,本文引入AUC 作為評價指標之一。

    1.4 隨機森林模型

    目前,用于軟件缺陷預測的模型算法眾多,較為常見的有邏輯回歸、決策樹、樸素貝葉斯、隨機森林等。經(jīng)過前人大量實踐證明,隨機森林分類算法在多數(shù)數(shù)據(jù)集上具有良好的性能表現(xiàn)[14]。

    隨機森林算法[15]是一種集成學習算法,它以決策樹為基礎學習器去構建Bagging 集成。隨機森林預測模型具有準確率高、簡單、易于實現(xiàn)、計算開銷小、性能強等優(yōu)點。本文選擇隨機森林算法作為軟件缺陷傾向性預測模型,可以比較不同的過采樣方法處理不平衡類的性能表現(xiàn)。

    2 實驗分析

    2.1 實驗環(huán)境

    本文實驗環(huán)境主要包括SPSS modeler 18.0和anaconda3 下的jupyter,前者用來對異常值的檢測與處理,前文提到的三種過采樣算法以及隨機森林預測模型算法的實現(xiàn)則是在jupyter 環(huán)境中利用Python語言編程實現(xiàn)。

    2.2 重采樣方案的選擇

    本文主要比較不同的上采樣方法處理類不平衡問題的性能表現(xiàn),因此在重采樣方案中選擇了三種不同的過采樣方法觀察預測效果:隨機過采樣、普通SMOTE過采樣算法、borderline-SMOTE過采樣算法。

    圖5 以數(shù)據(jù)集CM1 為例,給出了三種不同過采樣方法的處理結果。

    圖5 不同過采樣方法處理數(shù)據(jù)集CM1不平衡類的結果散點圖

    圖5(a)是根據(jù)異常值處理后的數(shù)據(jù)集CM1繪制出的散點圖,反映了CM1 數(shù)據(jù)集中有缺陷樣本與無缺陷樣本的分布情況,其中正方形散點代表有缺陷樣本,菱形散點代表無缺陷樣本。圖5(b)是使用隨機過采樣方法生成新的有缺陷樣本,使得有缺陷樣本與無缺陷樣本數(shù)量相當之后所繪制的散點圖,虛線為有缺陷樣本分布的趨勢線,后同。

    通過對比圖5(a)與圖5(b),其數(shù)據(jù)分布幾乎沒有任何變化,這是因為隨機過采樣所生成的新樣本是簡單的隨機復制原來的小類樣本數(shù)據(jù),其所有新生成的數(shù)據(jù)點都與原來的樣本數(shù)據(jù)重復,因此,兩圖的可視化效果一致。

    圖5(c)和圖5(d)分別為采用普通SMOTE 過采樣與改進的borderline-SMOTE 過采樣處理CM1數(shù)據(jù)集之后的有缺陷樣本與無缺陷樣本的分布情況。實驗中,SMOTE 過采樣與borderline-SMOTE 過采樣的k近鄰參數(shù)均設置為5,后者的danger 樣本類近鄰數(shù)設為10,從圖中結果可知,SMOTE過采樣合成的新樣本有大量的重疊現(xiàn)象,相比較而言,borderline-SMOTE 過采樣所合成的新樣本分布情況更合理。

    2.3 實驗過程數(shù)據(jù)

    針對類不平衡處理后的數(shù)據(jù)集中的每個樣本,使用隨機森林模型進行缺陷傾向性預測。為了降低數(shù)據(jù)的過擬合問題,在模型預測之前,對于每一個數(shù)據(jù)集,選擇70%的數(shù)據(jù)作為訓練數(shù)據(jù)集、30%的數(shù)據(jù)作為測試數(shù)據(jù)集進行訓練。

    在類不平衡問題中,往往對小類樣本的預測結果更為重要。同樣,在軟件缺陷的傾向性預測中,對有缺陷樣本的檢測相對來說具有更為重要的現(xiàn)實意義。表2中的實驗數(shù)據(jù)為隨機森林模型預測不同數(shù)據(jù)集中有缺陷樣本的性能指標。

    表2 三種過采樣算法評價指標數(shù)據(jù)對比

    為了避免一次實驗結果帶來的偶然性,本文在每個數(shù)據(jù)集的預測模型上均進行了10 次實驗,最終的評價指標數(shù)據(jù)取10 次實驗結果的平均數(shù)。

    2.4 實驗結果分析

    根據(jù)上述實驗結果繪制折線圖,能夠更加直觀地對比出三種過采樣算法處理類不平衡問題后預測軟件缺陷傾向性的效果。

    圖6是三種過采樣算法處理類不平衡問題后采用隨機森林模型預測后的查準率(Precision)值的對比,其中最下面的點狀折線代表隨機過采樣算法對應的值,中間的純實線折線代表普通SMOTE 過采樣算法對應的值,最上面的虛線折線代表borderline-SMOTE過采樣算法對應的值。

    圖6 Precision值對比圖

    圖7代表的是三種過采樣算法處理的召回率(Recall)對比折線圖,不同形狀折線代表的含義與圖6相同。

    圖7 Recall值對比圖

    圖8表示的是AUC值的對比圖。

    圖8 AUC值對比圖

    從實驗結果來看,針對軟件缺陷數(shù)據(jù)集中的類不平衡問題,采用不同的過采樣算法進行處理,對軟件缺陷傾向性的預測效果會有所不同。在少數(shù)評價指標上,隨機過采樣算法偶爾會稍優(yōu)于普通SMOTE過采樣算法,但整體而言,SMOTE過采樣算法的性能表現(xiàn)優(yōu)于隨機過采樣算法,borderline-SMOTE 過采樣算法明顯優(yōu)于普通SMOTE過采樣算法以及隨機過采樣算法。

    3 結語

    近年來,軟件缺陷預測是一個較為熱門的研究領域,軟件缺陷傾向性預測是其中之一。軟件缺陷數(shù)據(jù)集中的類不平衡問題較為顯著,要對軟件缺陷傾向性進行預測,必須解決類不平衡問題。本文采用不同的過采樣方法處理缺陷數(shù)據(jù)集中的類不平衡問題,然后選擇隨機森林模型預測各數(shù)據(jù)集中樣本的缺陷傾向性,并通過最終的預測結果,利用查準率、召回率等性能評價指標對比了不同的過采樣算法處理缺陷數(shù)據(jù)集中類不平衡問題的最終效果。

    后續(xù)的工作中,將針對軟件缺陷數(shù)據(jù)集中的類不平衡問題進行更深入細致的研究,并將研究如何更好地利用機器學習算法對軟件缺陷做出更精準的預測。

    猜你喜歡
    軟件缺陷小類傾向性
    基于模糊數(shù)學法的阿舍勒銅礦深部巖體巖爆傾向性預測
    基于源文件可疑度的靜態(tài)軟件缺陷檢測方法研究
    基于NPE-SVM的軟件缺陷預測模型
    浙江配電網(wǎng)物資標準化研究與應用
    物流技術(2017年4期)2017-06-05 15:13:46
    開源程序的軟件缺陷分布特征的量化分析研究
    關于醫(yī)患沖突報道的傾向性分析——以“湘潭產(chǎn)婦死亡案”為例
    “沒準兒”“不一定”“不見得”和“說不定”的語義傾向性和主觀性差異
    語言與翻譯(2015年4期)2015-07-18 11:07:43
    一種面向博客群的主題傾向性分析模型
    軟件缺陷管理方案分析
    小類:年輕人要多努力
    大學(2008年10期)2008-10-31 12:51:10
    炉霍县| 北宁市| 建瓯市| 剑河县| 大荔县| 仪陇县| 兰西县| 晴隆县| 英德市| 攀枝花市| 江山市| 灌阳县| 澄城县| 垦利县| 马边| 沂源县| 绵竹市| 五峰| 南华县| 崇信县| 中超| 阳高县| 尼勒克县| 突泉县| 通化县| 商水县| 巴林右旗| 新沂市| 中江县| 尼玛县| 麻栗坡县| 五台县| 舞钢市| 昌邑市| 微山县| 五华县| 海原县| 延川县| 梨树县| 锡林浩特市| 武城县|