欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法

文檔序號(hào):10686983閱讀:352來源:國(guó)知局
基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法
【專利摘要】本發(fā)明涉及基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,包括S1使用FindBugs工具對(duì)目標(biāo)軟件一系列版本的jar文件進(jìn)行分析,得到目標(biāo)軟件的靜態(tài)警告;S2對(duì)S1獲得的靜態(tài)警告進(jìn)行標(biāo)注;S3采用BP神經(jīng)網(wǎng)絡(luò),使用欠采樣的方式改變樣本集中樣本的分布得到新的樣本集,采用新的樣本集中的樣本訓(xùn)練分類器,然后使用該分類器對(duì)樣本集中的所有樣本進(jìn)行預(yù)測(cè)分類,將樣本集中的所有樣本預(yù)測(cè)為有效警告或誤報(bào)警告。本發(fā)明方法在有效警告查全率Recall方面平均提高了44.07%,還能快速達(dá)到較高而平穩(wěn)的查全率,同時(shí)較傳統(tǒng)神經(jīng)網(wǎng)絡(luò)方法能達(dá)到更低的分類代價(jià)。
【專利說明】
基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及軟件靜態(tài)分析,尤其涉及軟件靜態(tài)警告的分類,具體涉及基于欠采樣 操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法。
【背景技術(shù)】
[0002] 在軟件開發(fā)過程中,大量資源被消耗在發(fā)現(xiàn)和解決軟件中的缺陷。除了一些大公 司在開發(fā)過程中會(huì)使用自動(dòng)化測(cè)試方法,在大多數(shù)中小規(guī)模的軟件公司或項(xiàng)目團(tuán)隊(duì)中,軟 件的測(cè)試工作仍然停留在手工處理階段。其測(cè)試任務(wù)往往繁重且低效,稍小的功能變動(dòng)都 需要回歸測(cè)試其他功能,在資源有限以及時(shí)間緊迫的情況下,軟件測(cè)試工作通常不能順利 的完成,造成仍有許多未被發(fā)現(xiàn)的錯(cuò)誤遺留在軟件系統(tǒng)中。測(cè)試手段的匱乏己經(jīng)成為制約 軟件產(chǎn)出效率以及軟件質(zhì)量的瓶頸。鑒于此,動(dòng)態(tài)分析和靜態(tài)分析方法被分別提出,以在節(jié) 約開發(fā)資源的前提下發(fā)現(xiàn)軟件潛在的錯(cuò)誤。動(dòng)態(tài)分析需要編譯執(zhí)行程序,以觀察該軟件是 否滿足預(yù)先設(shè)置好的輸出結(jié)果;靜態(tài)分析通常對(duì)源代碼或其相應(yīng)的二進(jìn)制文件進(jìn)行分析, 在不編譯運(yùn)行軟件的情況下發(fā)現(xiàn)代碼中是否存在不佳的編程實(shí)踐。靜態(tài)分析技術(shù)目標(biāo)不在 于證實(shí)軟件是否輸出正確或發(fā)現(xiàn)程序中的邏輯問題,而是作為動(dòng)態(tài)分析方法的一種補(bǔ)充, 在項(xiàng)目編碼階段盡可能地發(fā)現(xiàn)潛在問題,提高程序的魯棒性和可靠性。
[0003] 靜態(tài)分析技術(shù)可以自動(dòng)化檢測(cè)軟件中可能造成程序崩潰的潛在異常代碼塊,如空 指針引用、下標(biāo)越界、代碼風(fēng)格不一致等,幫助開發(fā)人員在項(xiàng)目的初期階段發(fā)現(xiàn)一些可能存 在的代碼安全隱患。目前,前沿的JAVA靜態(tài)分析工具有FindBugs、PMD、Check Style等,本發(fā) 明將這些靜態(tài)分析工具分析報(bào)告的潛在異常信息統(tǒng)一稱為警告。
[0004] 與測(cè)試和代碼走查等代碼質(zhì)量控制手段不同的是,靜態(tài)分析工具往往會(huì)報(bào)告大量 的警告,平均每千行代碼中有40個(gè)警告。這些警告中,既有開發(fā)人員認(rèn)為重要并將進(jìn)行修復(fù) 的有效警告;也有對(duì)代碼質(zhì)量并不產(chǎn)生影響而將被忽略的誤報(bào)警告。有研究發(fā)現(xiàn),35-91 % 的警告都是無關(guān)緊要的誤報(bào)警告,而平均每個(gè)警告都需要花費(fèi)有經(jīng)驗(yàn)的開發(fā)人員5分鐘時(shí) 間進(jìn)行評(píng)估。大量的誤報(bào)警告將耗費(fèi)大量的開發(fā)資源,這一因素嚴(yán)重阻礙了靜態(tài)分析工具 在開發(fā)過程中的普及。
[0005] 為了最大效應(yīng)的利用靜態(tài)分析工具,除了分析工具限制報(bào)告預(yù)先定義的低優(yōu)先級(jí) 警告外,大量警告分類技術(shù)與排序技術(shù)被不斷提出。分類技術(shù)將警告預(yù)測(cè)為有效警告或誤 報(bào)警告;而排序技術(shù)則是根據(jù)警告被預(yù)測(cè)為有效警告的可能性對(duì)警告進(jìn)行排序。通過提取 警告特征,主要包括警告本身特征(分析工具定義)、源代碼特征、代碼倉(cāng)庫(kù)特征等,從簡(jiǎn)單 的警告類型選擇到復(fù)雜的機(jī)器學(xué)習(xí)算法分別被應(yīng)用來減少誤報(bào)警告,以提高靜態(tài)分析工具 的可用性。
[0006] 然而,在警告分類過程中存在兩類問題:第一類為誤分類造成代價(jià)不等問題,將一 個(gè)誤報(bào)警告歸類為一個(gè)有效警告(誤分類I),和將一個(gè)有效警告歸類為誤報(bào)警告(誤分類 n),所產(chǎn)生的代價(jià)是不等的,與軟件缺陷預(yù)測(cè)類,誤分類n可能造成軟件的崩潰,而誤分類 I僅僅需要開發(fā)人員花費(fèi)5分鐘時(shí)間進(jìn)行審查,即誤分類n的代價(jià)會(huì)遠(yuǎn)遠(yuǎn)高于誤分類I;第二 類問題為類不平衡問題,如上文所述,誤報(bào)警告可能占整體警告的絕大部分,本發(fā)明的實(shí)驗(yàn) 數(shù)據(jù)也是類極不平衡的。以往的警告分類技術(shù)目的往往是降低分類的錯(cuò)誤率,而忽略了上 述不同分類錯(cuò)誤所產(chǎn)生的不同代價(jià),以及數(shù)據(jù)的不平衡問題。

【發(fā)明內(nèi)容】

[0007] 針對(duì)現(xiàn)有技術(shù)存在的上述問題,本發(fā)明的目的是提供一種盡可能降低警告分類后 代價(jià)的一種警告分類方法。
[0008] 為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng) 絡(luò)的警告分類方法,其特征在于,包括如下步驟:
[0009] S1:使用FindBugs工具對(duì)目標(biāo)軟件一系列版本的jar文件進(jìn)行分析,得到目標(biāo)軟件 的靜態(tài)警告;
[0010] S2:對(duì)步驟S1獲得的靜態(tài)警告進(jìn)行標(biāo)注;
[0011] S2a:將目標(biāo)軟件一系列版本中,相鄰兩個(gè)版本中靜態(tài)警告進(jìn)行兩兩對(duì)比,如果前 一個(gè)版本中警告在后一個(gè)版本中消失則認(rèn)為該警告是有效警告;反之,如果前一個(gè)版本中 的警告在后一個(gè)版本中仍然存在則認(rèn)為該警告是誤報(bào)警告;
[0012] S2b:將有效警告中重復(fù)的有效警告剔除后,剩下的所有的有效警告構(gòu)成有效警告 集,將所有誤報(bào)警告中重復(fù)的誤報(bào)警告剔除后,剩下的所有誤報(bào)警告構(gòu)成誤報(bào)警告集,有效 警告集和誤報(bào)警告集構(gòu)成樣本集;有效警告集中的有效警告和無效警告集中的無效警告均 為樣本集中的樣本;
[0013] S3:采用BP神經(jīng)網(wǎng)絡(luò),使用欠采樣的方式改變樣本集中樣本的分布得到新的樣本 集,采用新的樣本集中的樣本訓(xùn)練分類器,然后使用該分類器對(duì)樣本集中的所有樣本進(jìn)行 預(yù)測(cè)分類,將樣本集中的所有樣本預(yù)測(cè)為有效警告或誤報(bào)警告。
[0014] 作為優(yōu)化,所述步驟S3具體如下:
[0015]采用欠采樣的方式改變樣本集中樣本的分布,再對(duì)樣本集中的所有樣本進(jìn)行預(yù)測(cè) 分類;
[0016] I)根據(jù)公式(3)減少步驟S2b誤報(bào)警告集中的誤報(bào)警告的數(shù)量得到新的樣本集;
[0018] 其中,階表示樣本集中誤報(bào)警告的數(shù)量,Nn表示樣本集中有效警告的數(shù)量,階'表示 新的樣本集中誤報(bào)警告的數(shù)量,Cos ti表不誤報(bào)警告被誤分類產(chǎn)生的代價(jià),Cos tn表不有效 警告被誤分類產(chǎn)生的代價(jià),Cosh,Costn均為自然數(shù):
?的取值為[1,50 ];
[0019] II)令 k = l;
[0020] III)從新的樣本集中選取十分之九分的樣本構(gòu)成訓(xùn)練樣本集Qk,剩下十分之一的 樣本構(gòu)成測(cè)試樣本集Pk,且Qk辛Qk-1,Pk辛Pk-1;
[0021] IV)采用BP神經(jīng)網(wǎng)絡(luò)對(duì)訓(xùn)練樣本集Qk進(jìn)行訓(xùn)練得到分類器,然后使用該分類器對(duì) 測(cè)試樣本集Pk中的所有測(cè)試樣本進(jìn)行預(yù)測(cè)分類,即將測(cè)試樣本集Pk中的每個(gè)測(cè)試樣本分為 有效警告或誤報(bào)警告,然后將測(cè)試樣本集Pk中所有經(jīng)過預(yù)測(cè)分類的測(cè)試樣本輸出;
[0022] V)判斷新的樣本集中所有樣本是否都經(jīng)過預(yù)測(cè)分類,如果是則結(jié)束,否則執(zhí)行下 一步;
[0023] VI)令j = j+l,并返回步驟m)。
[0025]相對(duì)于現(xiàn)有技術(shù),本發(fā)明具有如下優(yōu)點(diǎn):通過實(shí)驗(yàn)結(jié)果對(duì)比發(fā)現(xiàn),本發(fā)明方法在有 效警告查全率Recall方面平均提高了44.07%。另外本發(fā)明方法能快速達(dá)到較高而平穩(wěn)的 查全率,且當(dāng)有效警告被誤分類的代價(jià)在高于一定值時(shí),代價(jià)敏感分類方法較傳統(tǒng)神經(jīng)網(wǎng) 絡(luò)方法,能達(dá)到更低的分類代價(jià)。
【附圖說明】
[0026]圖1為警告標(biāo)注過程圖。
[0027]圖2為有效警告及誤報(bào)警告分布圖。
[0028] 圖3a為Costi = l,c〇stn = 50下MyFaces項(xiàng)目在本發(fā)明給出的三種與現(xiàn)有技術(shù)的實(shí) 驗(yàn)效果對(duì)比圖;圖3b為Costi = 1,Costn = 50下Camel項(xiàng)目在本發(fā)明給出的三種與現(xiàn)有技術(shù) 的實(shí)驗(yàn)效果對(duì)比圖;圖3c為Costil,Costn = 50下CXF項(xiàng)目在本發(fā)明給出的三種與現(xiàn)有技 術(shù)的實(shí)驗(yàn)效果對(duì)比圖。
[0029] 圖4為BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
[0030]圖5a為項(xiàng)目MyFaces中個(gè)版本的缺陷分布;圖5b為項(xiàng)目Camel中個(gè)版本的缺陷分 布;圖5c為項(xiàng)目CXF中個(gè)版本的缺陷分布。
[0031]圖6為變量間的單調(diào)關(guān)系。
【具體實(shí)施方式】
[0032]下面對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
[0033]基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,包括如下步驟:
[0034] S1:使用FindBugs工具對(duì)目標(biāo)軟件一系列版本的jar文件進(jìn)行分析,得到目標(biāo)軟件 的靜態(tài)警告;本發(fā)明中的目標(biāo)軟件是指準(zhǔn)備對(duì)其警告進(jìn)行分類的軟件;
[0035] FindBugs是由Bill Pugh和David Hovemeyer創(chuàng)建的開源項(xiàng)目,通過操作Java字節(jié) 碼來查找Java代碼中的程序錯(cuò)誤。它使用匹配缺陷模式的方式來識(shí)別Java程序中超過400 種不同類型的源代碼警告。這些源代碼警告可分為四個(gè)等級(jí),分別是恐怖的(scariest)、嚇 人的(scary)、令人困擾的(troubling)和值得關(guān)注的(of concern),該級(jí)別用來指示某警 告的存在對(duì)軟件系統(tǒng)的危害程度;且每一種警告類型都有一個(gè)預(yù)先定義的優(yōu)先級(jí),其中共 有高、中、低三種優(yōu)先級(jí),該優(yōu)先級(jí)用來指示警告為有效警告的可能性。FindBugs通過匹配 缺陷模式來查找代碼中的潛在錯(cuò)誤,這些缺陷模式由經(jīng)驗(yàn)豐富的開發(fā)人員歸納自真實(shí)的源 代碼錯(cuò)誤。
[0036] S2:對(duì)步驟S1獲得的靜態(tài)警告進(jìn)行標(biāo)注;
[0037] S2a:將目標(biāo)軟件一些列版本中,相鄰兩個(gè)版本中靜態(tài)警告進(jìn)行兩兩對(duì)比,如果前 一個(gè)版本中警告在后一個(gè)版本中消失則認(rèn)為該警告是有效警告;反之,如果前一個(gè)版本中 的警告在后一個(gè)版本中仍然存在則認(rèn)為該警告是誤報(bào)警告;
[0038] S2b:將有效警告中重復(fù)的有效警告剔除后,剩下的所有的有效警告構(gòu)成有效警告 集,將所有誤報(bào)警告中重復(fù)的誤報(bào)警告剔除后,剩下的所有誤報(bào)警告構(gòu)成誤報(bào)警告集,有效 警告集和誤報(bào)警告集構(gòu)成樣本集;有效警告集中的有效警告和無效警告集中的無效警告均 為樣本集中的樣本;
[0039] 實(shí)現(xiàn)了基于連續(xù)的缺陷修復(fù)版本的自動(dòng)化警告標(biāo)注方法,能實(shí)現(xiàn)對(duì)警告快速有效 的標(biāo)注,按如下基本思想進(jìn)行標(biāo)注:若一個(gè)警告在某個(gè)版本中被引入,而在后續(xù)的版本中消 失,則該警告被標(biāo)注為有效警告;若后續(xù)的版本中,該警告仍然存在,則該警告被標(biāo)注為誤 報(bào)警告。如圖1所示,在警告標(biāo)注的過程中,在版本1.1.1中存在,而在版本1.1.2中消失的警 告(黑色)標(biāo)注為有效警告;在版本1.1.2中仍然存在標(biāo)注為誤報(bào)警告。最后綜合所有選擇的 版本數(shù)據(jù),得到本發(fā)明后續(xù)的實(shí)驗(yàn)數(shù)據(jù)集。
[0040] S3:采用BP神經(jīng)網(wǎng)絡(luò),使用樣本集中的樣本訓(xùn)練分類器,并在形成分類器的過程中 引入代價(jià),然后使用該分類器對(duì)樣本集中的所有樣本進(jìn)行預(yù)測(cè)分類,將樣本集中的所有樣 本預(yù)測(cè)為有效警告或誤報(bào)警告。
[0041] 對(duì)于步驟S3,可以采用如下三種基于PB神經(jīng)網(wǎng)絡(luò)的代價(jià)敏感預(yù)測(cè)分類方法,具體 如下:
[0042] 第一種:采用過采樣的方式改變樣本集中樣本的分布,再對(duì)樣本集中的所有樣本 進(jìn)行預(yù)測(cè)分類;
[0043] 1)根據(jù)公式(1)增加步驟S2b有效警告集中的有效警告的數(shù)量得到新的樣本集;過 采樣的方法通過增加代價(jià)較高類別的樣本數(shù)量,改變訓(xùn)練數(shù)據(jù)的分布,將代價(jià)直接反應(yīng)到 樣本數(shù)據(jù)中。
[0045] 其中,階表示樣本集中誤報(bào)警告的數(shù)量,Nn表示樣本集中有效警告的數(shù)量,W;;表 不新的樣本集中有效警告的數(shù)量,Cos ti表不誤報(bào)警告被誤分類產(chǎn)生的代價(jià),Cos tn表不有 效警告被誤分類產(chǎn)生的代價(jià),Cost,Costn均為自然數(shù)
的取值為[1,50];所述
?的取值最好為[2(),「)()]
?的比值在[20,50]范圍時(shí),基于過采樣的代價(jià)敏感 神經(jīng)網(wǎng)絡(luò)的警告分類方法比BP神經(jīng)網(wǎng)絡(luò)的ECM值更低,即基于過采樣的代價(jià)敏感神經(jīng)網(wǎng)絡(luò) 的警告分類方法能得到更低的分類代價(jià)。
[0046] M 數(shù)量的樣本將通過隨機(jī)復(fù)制的方式使誤報(bào)警告I及有效警告n兩類樣 本數(shù)目與其代價(jià)成比例,從而達(dá)到代價(jià)敏感的目的。即通過公式(1 ),為過采樣后有效警 告集中的樣本數(shù)量,而原先僅有階數(shù)量的有效警告,因此(/V; -數(shù)量的有效警告樣本 需要增加。與代價(jià)成比例,
3這樣通過樣本的改變會(huì)影響分類效果,從而將 實(shí)現(xiàn)了代價(jià)敏感。
[0047] 2)令j = l;
[0048] 3)從新的樣本集中選取十分之九分的樣本構(gòu)成訓(xùn)練樣本集Qp剩下十分之一的樣 本構(gòu)成測(cè)試樣本集匕,且Q#Qh,P#Ph;即每次所選的訓(xùn)練樣本集都不相同;
[0049] 4)采用BP神經(jīng)網(wǎng)絡(luò)對(duì)訓(xùn)練樣本集^進(jìn)行訓(xùn)練得到分類器,然后使用該分類器對(duì)測(cè) 試樣本集匕中的所有測(cè)試樣本進(jìn)行預(yù)測(cè)分類,即將測(cè)試樣本集匕中的每個(gè)測(cè)試樣本分為有 效警告或誤報(bào)警告,然后將測(cè)試樣本集匕中所有經(jīng)過預(yù)測(cè)分類的測(cè)試樣本輸出;
[0050] 5)判斷新的樣本集中所有樣本是否都經(jīng)過預(yù)測(cè)分類,如果是則結(jié)束,否則執(zhí)行下 一步;
[0051] 6)令j = j+1,并返回步驟3)。
[0052]第二種:采用閾值操作的方式對(duì)樣本集中的所有樣本進(jìn)行預(yù)測(cè)分類;閾值操作的 方法將神經(jīng)網(wǎng)絡(luò)的判決邊界向代價(jià)較低類別的邊界偏移,從而降低代價(jià)較高一類樣本被分 錯(cuò)類的風(fēng)險(xiǎn)。該方法使用BPNN對(duì)原始樣本進(jìn)行訓(xùn)練,通過在預(yù)測(cè)階段引入代價(jià)信息,實(shí)現(xiàn)分 類的代價(jià)敏感效果;
[0053] a)$r = l;
[0054] b)從樣本集中選取十分之九分的樣本構(gòu)成訓(xùn)練樣本集Qr,剩下十分之一的樣本構(gòu) 成測(cè)試樣本集Pr,且9#(^么^^-1;即每次所選的訓(xùn)練樣本集都不相同;
[0055] C)采用BP神經(jīng)網(wǎng)絡(luò)對(duì)訓(xùn)練樣本集Qr進(jìn)行訓(xùn)練得到分類器,然后將測(cè)試樣本集Pr中 的測(cè)試樣本依次輸入該分類器,計(jì)算得到用于預(yù)測(cè)有效警告或誤報(bào)警告的真實(shí)類別概率值 為〇i,i G {I,n},
,其中,Ch表示測(cè)試樣本被預(yù)測(cè)為誤報(bào)警告的 真實(shí)類別概率值,On表示測(cè)試樣本被預(yù)測(cè)為有效警告的真實(shí)類別概率值;
[0056] d)對(duì)分類器的預(yù)測(cè)輸出做閾值操作得到新類別概率輸出,如公式(2):
[0058] 其中,Cf表示經(jīng)過閾值操作后的預(yù)測(cè)有效警告或誤報(bào)警告的新類別概率值,n為 歸一化項(xiàng),
,其中a表示經(jīng)過閾值操作后測(cè)試樣本被預(yù) 測(cè)為誤報(bào)警告的新類別概率值,表示經(jīng)過閾值操作后測(cè)試樣本被預(yù)測(cè)為有效警告的新 類別概率值;
[0059] e)然后根據(jù)步驟d)得到的新類別概率對(duì)測(cè)試樣本集Pr中的測(cè)試樣本進(jìn)行預(yù)測(cè)分 類,如果g 則認(rèn)為測(cè)試樣本集Pr中的測(cè)試樣本為誤報(bào)警告,否則為有效警報(bào),然后將 測(cè)試樣本集中所有經(jīng)過預(yù)測(cè)分類的樣本輸出;
[0060] f)判斷樣本集中所有樣本是否都經(jīng)過預(yù)測(cè)分類,如果是則結(jié)束,否則執(zhí)行下一步;
[0061] g)令r = r+l,并返回步驟b)。
[0062] 所述步驟d)中,
?的取值為[25,50],
?的比值在[25,50]范 圍時(shí),基于閾值操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法比BP神經(jīng)網(wǎng)絡(luò)進(jìn)行分類的ECM值 更低,即基于閾值操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法能得到更低的分類代價(jià)。
[0063]第三種:采用欠采樣的方式改變樣本集中樣本的分布,再對(duì)樣本集中的所有樣本 進(jìn)行預(yù)測(cè)分類;
[0064] I)根據(jù)公式(3)減少步驟S2b誤報(bào)警告集中的誤報(bào)警告的數(shù)量得到新的樣本集;欠 采樣的方法通過減少代價(jià)較低類別的樣本數(shù)量,改變訓(xùn)練數(shù)據(jù)的分布,將代價(jià)反應(yīng)到樣本 數(shù)據(jù)中;
[0066] 其中,階表示樣本集中誤報(bào)警告的數(shù)量,Nn表示樣本集中有效警告的數(shù)量,階'表示 新的樣本集中誤報(bào)警告的數(shù)量,Cos ti表不誤報(bào)警告被誤分類產(chǎn)生的代價(jià),Cos tn表不有效 警告被誤分類產(chǎn)生的代價(jià),Cost:,Costn均為自然數(shù),
?的取值為[1,50];所述
的取值最好為[2(),「)()],
-的比值在[20,50]范圍時(shí),基于欠采樣操作的代價(jià) 敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法比BP神經(jīng)網(wǎng)絡(luò)進(jìn)行分類的ECM值更低,即基于欠采樣操作的 代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法能得到更低的分類代價(jià)。
[0067] 由式(3)可計(jì)算代價(jià)較低誤報(bào)警告I樣本的數(shù)量將為他',且移除(2^ -#9個(gè)類I 的樣本數(shù)量,使不同類別的樣本數(shù)目與代價(jià)成比例。通過公式(3),階'為欠采樣后誤報(bào)警告 的數(shù)量,而原先僅有他數(shù)量的誤報(bào)警告,因此(階'-階)數(shù)量的誤報(bào)警告樣本需要增加,與代 價(jià)成比例,
,這樣樣本數(shù)量就與樣本類型對(duì)應(yīng)的代價(jià)成比例,從而將代價(jià) 引入到分類中。
[0068] II)令 k = l;
[0069] III)從新的樣本集中選取十分之九分的樣本構(gòu)成訓(xùn)練樣本集Qk,剩下十分之一的 樣本構(gòu)成測(cè)試樣本集Pk,且Qk辛Qk-i,Pk辛Pk-i;即每次所選的訓(xùn)練樣本集都不相同;
[0070] IV)采用BP神經(jīng)網(wǎng)絡(luò)對(duì)訓(xùn)練樣本集Qk進(jìn)行訓(xùn)練得到分類器,然后使用該分類器對(duì) 測(cè)試樣本集Pk中的所有測(cè)試樣本進(jìn)行預(yù)測(cè)分類,即將測(cè)試樣本集P k中的每個(gè)測(cè)試樣本分為 有效警告或誤報(bào)警告,然后將測(cè)試樣本集Pk中所有經(jīng)過預(yù)測(cè)分類的測(cè)試樣本輸出;
[0071] V)判斷新的樣本集中所有樣本是否都經(jīng)過預(yù)測(cè)分類,如果是則結(jié)束,否則執(zhí)行下 一步;
[0072] VI)令j = j+l,并返回步驟m)。
[0073] 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法為現(xiàn)有技術(shù),其目標(biāo)是尋找一個(gè)函數(shù),該函數(shù)能把一組輸入映 射到其相應(yīng)的輸出。例如一個(gè)簡(jiǎn)單的分類問題,輸入是某種鳥類的圖片,正確的輸出將是該 鳥類的名稱。對(duì)于某些相對(duì)簡(jiǎn)單的輸入輸出模式可以輕易地使用單層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí),但是 這些單層神經(jīng)網(wǎng)絡(luò)不能學(xué)習(xí)比較復(fù)雜的模式,例如非線性可分的情況。單層神經(jīng)網(wǎng)絡(luò)只能 利用圖片中像素的某種特征來學(xué)習(xí)一種輸出以及一種標(biāo)簽函數(shù);因?yàn)樗幌拗茷閮H具有一 個(gè)層,所以沒有辦法從輸入中學(xué)習(xí)到任何抽象特征;而多層神經(jīng)網(wǎng)絡(luò)通過刻畫特征的內(nèi)部 表示,并且在每一層中學(xué)習(xí)不同的特征從而消除了單層網(wǎng)絡(luò)的限制因素。多層神經(jīng)網(wǎng)絡(luò)采 用的學(xué)習(xí)過程如下:第一層用來處理圖片中的單個(gè)像素輸入以學(xué)習(xí)鳥類輪廓線條走向;第 二層就可以通過結(jié)合第一層的學(xué)習(xí)結(jié)果,進(jìn)一步處理簡(jiǎn)單的鳥類形狀問題;通過每向上提 升一層就學(xué)習(xí)更多的抽象特征的特點(diǎn),而達(dá)到對(duì)復(fù)雜模式進(jìn)行分類的目的。
[0074]如前文提及的對(duì)鳥類圖片分類情況,每一層都是通過其下方層的學(xué)習(xí)結(jié)果來學(xué)習(xí) 新的模式,也正是這種多層次的學(xué)習(xí)能力使多層神經(jīng)網(wǎng)絡(luò)能夠刻畫獨(dú)立于外界輸入的內(nèi)部 表示形式。反向傳播算法的發(fā)展目標(biāo)和動(dòng)機(jī)正是找到這樣一種訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)的方法, 該方法能夠通過學(xué)習(xí)任意輸入到輸出的映射關(guān)系得到適當(dāng)?shù)膬?nèi)部表示機(jī)制,最終能夠?qū)?fù) 雜的映射模式進(jìn)行分類。
[0075] BP (Back Propagation)神經(jīng)網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法的一個(gè)變種,它能夠?qū)W習(xí)和 存儲(chǔ)大量的輸入輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程。它的 學(xué)習(xí)規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差 平方和最小。BP神經(jīng)網(wǎng)絡(luò)模型拓?fù)浣Y(jié)構(gòu)包括輸入層(input)、一個(gè)或多個(gè)隱含層(hide layer)和輸出層(output layer),參見圖4。
[0076] BP神經(jīng)網(wǎng)絡(luò)主要有兩個(gè)階段:激勵(lì)傳播和權(quán)重更新[。每次迭代中的傳播環(huán)節(jié)包含 兩步:(前向傳播階段)將訓(xùn)練輸入送入網(wǎng)絡(luò)以獲得激勵(lì)響應(yīng);(反向傳播階段)將激勵(lì)響應(yīng) 同訓(xùn)練輸入對(duì)應(yīng)的目標(biāo)輸出求差,從而獲得隱含層和輸出層的響應(yīng)誤差。對(duì)于每個(gè)節(jié)點(diǎn)上 的權(quán)重,按照以下步驟進(jìn)行更新:將輸入激勵(lì)和響應(yīng)誤差相乘,從而獲得權(quán)重的梯度;將這 個(gè)梯度乘上一個(gè)比例并取反后加到權(quán)重上。這個(gè)比例將會(huì)影響到訓(xùn)練過程的速度和效果, 因此稱為"訓(xùn)練因子"。梯度的方向指明了誤差擴(kuò)大的方向,因此在更新權(quán)重的時(shí)候需要對(duì) 其取反,從而減小權(quán)重引起的誤差。激勵(lì)傳播和權(quán)重更新兩個(gè)階段可以反復(fù)循環(huán)迭代,直到 網(wǎng)絡(luò)對(duì)輸入的響應(yīng)達(dá)到滿意的預(yù)定的目標(biāo)范圍為止。
[0077] 代價(jià)敏感神經(jīng)網(wǎng)絡(luò)算法的基本思想是:誤將一個(gè)存在缺陷的模塊預(yù)測(cè)為一個(gè)沒有 缺陷的模塊將造成軟件系統(tǒng)不可預(yù)知的后果,同樣在判斷一個(gè)病人是否為重癥時(shí),將其判 斷為健康的代價(jià)將會(huì)遠(yuǎn)遠(yuǎn)高于將其判斷為存在健康隱患的代價(jià),前者可能因誤診而耽誤了 病人的最佳治療時(shí)間。在本發(fā)明在對(duì)源代碼進(jìn)行警告分類中,就是基于這種代價(jià)敏感的思 想,因?yàn)閷⒄`報(bào)警告歸類為有效警告的代價(jià)會(huì)遠(yuǎn)遠(yuǎn)小于將有效警告歸類為誤報(bào)警告的代 價(jià)。本發(fā)明的分類方法中,基礎(chǔ)分類器采用的是經(jīng)典的BP神經(jīng)網(wǎng)絡(luò)。
[0078] 本發(fā)明提供的方法與現(xiàn)有方法的比對(duì):
[0079]采用過采樣進(jìn)行預(yù)測(cè)分類以下記為CSBNN-0S,采用閾值操作進(jìn)行預(yù)測(cè)分類記為 CSBNN-TM,采用欠采樣進(jìn)行預(yù)測(cè)分類以下記為CSBNN-US,現(xiàn)有神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)分類記為 BPNN。
[0080] 實(shí)驗(yàn)數(shù)據(jù)
[0081] 在三個(gè)開源Apache項(xiàng)目下,共選擇了 38個(gè)連續(xù)缺陷修復(fù)版本作為警告獲取對(duì)象, 表1展示了這三個(gè)項(xiàng)目的詳細(xì)信息。由表1可知,這三個(gè)實(shí)驗(yàn)項(xiàng)目具有中大型項(xiàng)目代表性,另 外連續(xù)的缺陷修復(fù)版本及兩年左右的時(shí)間周期,能防止因代碼重構(gòu)等非缺陷修復(fù)因素而造 成警告的消失,從而保證自動(dòng)化有效警告標(biāo)注的正確性。
[0082] 表 1
[0084] 本發(fā)明使用FindBugs作為靜態(tài)分析工具,由于已有研究證實(shí)默認(rèn)配置下FindBugs 警告與軟件缺陷具有更強(qiáng)的相關(guān)性,本發(fā)明在實(shí)驗(yàn)中使用了 FindBugs的默認(rèn)配置對(duì)上述三 個(gè)項(xiàng)目下的38個(gè)版本進(jìn)行分析。經(jīng)過標(biāo)注有效警告,得到各個(gè)項(xiàng)目下有效警告及誤報(bào)警告 的分布,如圖2所示。從標(biāo)注結(jié)果可以看出,有效警告在所有警告中的比例極低,在MyFaces、 Came 1和CXF三個(gè)項(xiàng)目下,有效警告的比重分別為3.7%,6.0%,8.3%。由于數(shù)據(jù)存在類極不 平衡的原因,許多分類器在做有效警告分類時(shí)效率極低,而代價(jià)敏感神經(jīng)網(wǎng)絡(luò)能很好地處 理類不平衡問題。
[0085] ( - )對(duì)發(fā)明步驟S2限定的對(duì)靜態(tài)警告進(jìn)行標(biāo)注的方法分析:
[0086] 1、缺陷數(shù)據(jù)抽取
[0087] 在Jira缺陷跟蹤系統(tǒng)中,一條缺陷有表1.1所示的一系列標(biāo)簽,這些標(biāo)簽記錄了這 條缺陷的類型、狀態(tài)、優(yōu)先級(jí)、受影響版本等一系列的信息。本發(fā)明所定義的缺陷在Jira系 統(tǒng)中的類型為"Type = BUg",同時(shí)為了確保某條缺陷的真實(shí)存在,該缺陷必須被開發(fā)人員在 某個(gè)版本上進(jìn)行了修復(fù),其狀態(tài)應(yīng)為"Resolution = Fixed"。本發(fā)明使用一定的檢索策略, 在Jira缺陷跟蹤系統(tǒng)中獲取實(shí)驗(yàn)數(shù)據(jù)中各個(gè)版本的缺陷數(shù)據(jù)。該檢索策略使用緊接著的發(fā) 布版本中被修復(fù)的缺陷數(shù)量,作為當(dāng)前版本中的缺陷數(shù)量。例如,我們需要獲取M y F a c e s 2.1.0版本中缺陷的數(shù)量,則查找MyFaces 2.1.1版本中被修復(fù)缺陷的數(shù)量,其檢索模式為 'project = MYFACES AND issuetype = Bug AND resolution = Fixed AND fixVersion = 2.1. r。迭代三個(gè)實(shí)驗(yàn)項(xiàng)目中的所有40個(gè)版本,我們便得到了驗(yàn)證實(shí)驗(yàn)所需的軟件缺陷數(shù) 據(jù)。
[0088] 表1.1 Jira系統(tǒng)中一條缺陷記錄的標(biāo)簽
[0090]通過上述的缺陷檢索方法,本發(fā)明得到如下圖5a、5b和5c所示的在實(shí)驗(yàn)項(xiàng)目中各 個(gè)版本的缺陷分布圖。在MyFaces項(xiàng)目中,平均每個(gè)版本會(huì)產(chǎn)生15.6個(gè)缺陷;平均每個(gè)版本 會(huì)有36.3個(gè)缺陷出現(xiàn)在Camel項(xiàng)目中;而在CXF項(xiàng)目中,每個(gè)缺陷修復(fù)版本平均也會(huì)有31.3 個(gè)缺陷。從每個(gè)版本平均出現(xiàn)的缺陷數(shù)量可以看出,MyFaces項(xiàng)目相對(duì)其他兩個(gè)項(xiàng)目來說更 加穩(wěn)定些,當(dāng)然其項(xiàng)目規(guī)模較小是很重要的一方面。另外,從圖中可以看出缺陷分布規(guī)律 為:隨著越來越多的缺陷修復(fù)版本的發(fā)布,軟件系統(tǒng)的缺陷數(shù)量越來越少,越加趨于穩(wěn)定。 [0091] 2、相關(guān)性分析
[0092]經(jīng)過警告標(biāo)注過程及抽取出各版本的缺陷數(shù)量,本發(fā)明還使用了 JavaNCSS工具獲 取每個(gè)版本的代碼行數(shù)。JavaNCSS是一款開源的代碼度量工具,它可以在項(xiàng)目、包、類等層 面上計(jì)算Java代碼行數(shù)及圈復(fù)雜度等度量單元。在除以各版本的代碼行數(shù)(KLOC)后,得到 了各個(gè)版本中警告、有效警告及缺陷的密度。
[0093]另外在三個(gè)實(shí)驗(yàn)項(xiàng)目上,本發(fā)明對(duì)警告密度、有效警告密度及缺陷密度這三個(gè)變 量進(jìn)行了分析。本發(fā)明統(tǒng)計(jì)了這些變量的最大值、最小值、平均值、中位數(shù)、標(biāo)準(zhǔn)差、偏度系 數(shù)、及標(biāo)準(zhǔn)誤。偏度系數(shù)及標(biāo)準(zhǔn)誤可以有利于我們選擇正確的相關(guān)系數(shù)計(jì)算方法,表1.2展 示的統(tǒng)計(jì)結(jié)果如下:
[0094]表1.2缺陷密度、警告密度、有效警告密度分析
[0096] 1)在各缺陷修復(fù)版本統(tǒng)計(jì)中,MyFaces、Camel、CXF的缺陷密度范圍分別為:0.249 ± 0.272,0.302 ± 0.211,和0.154 ± 0.094。CXF項(xiàng)目中平均每千行代碼有0.154個(gè)缺陷,而 Camel項(xiàng)目幾乎是其的兩倍,MyFaces每千行代碼中有0.249個(gè)缺陷。相對(duì)來說,CXF項(xiàng)目最為 穩(wěn)定,不僅缺陷密度最小,其浮動(dòng)的范圍也不大,僅為0.094個(gè)缺陷每千行代碼。
[0097] 2)警告的密度相對(duì)來說很平滑,在MyFaCeS、Camel、CXF三個(gè)項(xiàng)目中警告的密度分 別為5.46 ± 0.554,4.4 ± 0.045,5.204± 0.048。也就是說每千行代碼中,各項(xiàng)目平均會(huì)有4 ~5個(gè)FindBugs中等優(yōu)先級(jí)警告。
[0098] 3)經(jīng)過自動(dòng)化警告標(biāo)注后,各項(xiàng)目中有效警告的密度極低,僅有平均0.196 土 0.64,0.037±0.047,0.03±0.036個(gè)有效警告,分布在在MyFaces、Came 1、CXF三個(gè)項(xiàng)目中。
[0099]通常在相關(guān)性分析時(shí),我們可以使用Spearman等級(jí)相關(guān)系數(shù)或皮爾遜相關(guān)系數(shù)方 法,皮爾遜相關(guān)系數(shù)計(jì)算方法較為嚴(yán)格,要求在變量間呈線性關(guān)系,而Spearman系數(shù)僅要求 變量間存在單調(diào)關(guān)系。另外,當(dāng)偏度系數(shù)兩倍于標(biāo)準(zhǔn)誤時(shí),使用Spearman系數(shù)效果更好,本 發(fā)明正是通過計(jì)算偏度系數(shù)及標(biāo)準(zhǔn)誤來確定使用哪類系數(shù)的。在有效警告密度這一變量的 分析中,三個(gè)實(shí)驗(yàn)項(xiàng)目下其偏度系數(shù)都超出了兩倍的標(biāo)準(zhǔn)誤,因此本發(fā)明使用了Spearman 相關(guān)系數(shù)來作為驗(yàn)證自動(dòng)化警告標(biāo)注可行性的指標(biāo)。
[0100] 3、可行性評(píng)估指標(biāo)
[0101]本發(fā)明使用了SPSS工具計(jì)算Spearman等級(jí)相關(guān)系數(shù)對(duì)警告標(biāo)注的正確性進(jìn)行驗(yàn) 證。統(tǒng)計(jì)學(xué)中經(jīng)常用P或者^表示該相關(guān)系數(shù),它是衡量?jī)蓚€(gè)變量是否相互依賴的非參數(shù)指 標(biāo)。該系數(shù)使用單調(diào)方程評(píng)價(jià)兩個(gè)統(tǒng)計(jì)變量的相關(guān)性,如果數(shù)據(jù)中沒有重復(fù)值,并且兩個(gè)變 量完全單調(diào)相關(guān)時(shí),則Spearman相關(guān)系數(shù)值為+1或-1,且其中+ 1表示兩組變量完全正相 關(guān),-1表示其完全負(fù)相關(guān)[。
[0102] 我們可以使用有序的、區(qū)間的或比例數(shù)據(jù)變量來計(jì)算Spearman等級(jí)相關(guān)系數(shù),然 而這兩個(gè)統(tǒng)計(jì)變量之間需要滿足單調(diào)關(guān)系。單調(diào)關(guān)系表現(xiàn)為:一個(gè)變量遞增時(shí),另一個(gè)變量 也遞增;或兩個(gè)變量同時(shí)遞減。如圖6所示.
[0103] 計(jì)算Spearman等級(jí)相關(guān)系數(shù)前,首先需要對(duì)數(shù)據(jù)按等級(jí)進(jìn)行排序,如表1.3所示, 原始數(shù)據(jù)XnYi被轉(zhuǎn)換成等級(jí)數(shù)據(jù) Xl,yi。轉(zhuǎn)換過程為將變量中最大的數(shù)標(biāo)記為1,按遞減序 列依次將其他數(shù)向后排,如Yi變量經(jīng)過等級(jí)排序后得到 yi。需要注意的是,在Xi變量中存在 連結(jié)數(shù)據(jù),該變量中包含兩個(gè)61,按等級(jí)排序時(shí),不能確定哪個(gè)排3,哪個(gè)排4,此時(shí)將其排序 都取均值3.5。
[0104] 表1.3數(shù)據(jù)等級(jí)計(jì)算案例
[0106]經(jīng)過上述排序后,有兩種方法計(jì)算Spearman等級(jí)相關(guān)系數(shù),一種為有數(shù)據(jù)連結(jié)的 情況,其計(jì)算公式為(la)。
[0108]其中cU表示兩變量排序后的差值Xl_yi,n為變量的個(gè)數(shù)。另一種計(jì)算公式為沒有數(shù) 據(jù)連結(jié)的情況,其計(jì)算公式為(lb)。
[0110] 4、有效性結(jié)果分析
[0111] 表1.4展示了三個(gè)實(shí)驗(yàn)項(xiàng)目中,警告密度與缺陷密度,以及有效警告密度與缺陷密 度的Spearman等級(jí)相關(guān)系數(shù)(P)和其顯著性水平(p-value)。在警告密度與缺陷密度的相關(guān) 系數(shù)中,項(xiàng)目Camel具有最高的系數(shù)值0.783且顯著性水平p-value〈0.05,說明在該項(xiàng)目中 警告的密度對(duì)于缺陷來說有很強(qiáng)的指示作用。然而,在項(xiàng)目CXF中該系數(shù)值僅為0.316,該值 并沒有很強(qiáng)的指導(dǎo)意義。另外,項(xiàng)目MyFaces在該系數(shù)上的值為-0.132,這一值違反了開發(fā) 人員的直覺。平均來說,警告密度與缺陷密度的相關(guān)系數(shù)為0.322,顯著性水平為0.298,該 值對(duì)于項(xiàng)目或其開發(fā)人員來說,并沒有實(shí)際意義。
[0112] 下面分析有效警告密度與缺陷密度相關(guān)性,確認(rèn)本發(fā)明使用的自動(dòng)化警告標(biāo)注方 法的可行性。在該系數(shù)計(jì)算中,項(xiàng)目Camel的有效警告密度與缺陷密度的Spearman等級(jí)相關(guān) 系數(shù)值最高,達(dá)到了〇. 814,且其顯著性水平為0.014遠(yuǎn)遠(yuǎn)小于0.05,該值說明在Camel項(xiàng)目 中有效警告與軟件的發(fā)布后缺陷存在很強(qiáng)的關(guān)聯(lián),減少或升高有效警告的數(shù)量,都將引起 較大的軟件缺陷數(shù)量上的浮動(dòng)。同樣,該值在項(xiàng)目MyFaces上為0.782,同樣說明有效警告與 軟件缺陷在MyFaces項(xiàng)目中有很強(qiáng)的聯(lián)系。即使該值最低的項(xiàng)目CXF,也達(dá)到0.599,說明有 效警告與缺陷存在強(qiáng)關(guān)聯(lián)。綜合三個(gè)實(shí)驗(yàn)項(xiàng)目,有效警告密度與缺陷密度Spearman等級(jí)相 關(guān)系數(shù)值為〇. 732,顯著性水平為0.009,該值可以有力地說明經(jīng)過自動(dòng)化標(biāo)注的有效警告 與軟件缺陷有很強(qiáng)的內(nèi)在關(guān)聯(lián),消除掉著部分警告將大大減少軟件中缺陷的數(shù)量。同時(shí)也 證明了本發(fā)明使用的自動(dòng)化警告標(biāo)注方法是正確可行的。
[0113] 表1.4實(shí)驗(yàn)項(xiàng)目下的Spearman等級(jí)相關(guān)系數(shù)結(jié)果P
[0115] (二)本發(fā)明給出的靜態(tài)警告分類方法與現(xiàn)有分類方法的有效性評(píng)價(jià)標(biāo)準(zhǔn):
[0116] 在有效警告分類應(yīng)用中,分類結(jié)果可由表2.1所示的混淆矩陣表示,其中TP為有效 警告的正確分類數(shù)目,F(xiàn)N為有效警告的誤分類數(shù)目,F(xiàn)P誤報(bào)警告的誤分類數(shù)目,TN為誤報(bào)警 告的正確分類數(shù)目。在警告分類過程中有兩種類型的誤分類,分別對(duì)應(yīng)兩種誤分類代價(jià):誤 分類I將誤報(bào)警告分類為有效警告造成的代價(jià)Cost:;以及誤分類n將有效警告分類為誤報(bào) 警告造成的代價(jià)Costn,且Costn遠(yuǎn)遠(yuǎn)大于Cost:。本發(fā)明使用了多種分類度量指標(biāo)。誤分類 率MR式(2a),該指標(biāo)用來衡量整體的分類錯(cuò)誤率;以及有效警告的召回率Recall式(2b),衡 量被正確分類有效警告占所有有效警告的比例。
[0117]表2.1警告分類混淆矩陣

[0121] 同時(shí)由于本發(fā)明處理的是代價(jià)敏感的分類問題,將誤分類代價(jià)考慮在內(nèi)的度量指 標(biāo)非常必要。本發(fā)明使用式(2c)所示的誤分類期望成本ECM來評(píng)估上述三種代價(jià)敏感分類 方法以及傳統(tǒng)反向傳播神經(jīng)網(wǎng)絡(luò)在警告分類上的效率。在式(2c)中,Cost^Costn分別表示 兩種誤分類的代價(jià);ErrA將誤報(bào)警告分類為有效警告的比例FP/(TN+FP);Er rn為將有效 警告分類為誤報(bào)警告的比例FN/(TP+FN);另外在ECM指標(biāo)中,P〗為誤報(bào)警告在測(cè)試集中所占 的比例,P n有效警告在測(cè)試集中所占的比例。
[0122] ECM = CostiErriPi+CostnErrnPn(2c);
[0123] 結(jié)果分析
[0124] 本發(fā)明設(shè)計(jì)了兩組對(duì)比實(shí)驗(yàn),且實(shí)驗(yàn)過程中均采用十折交叉驗(yàn)證取均值的方式來 獲取更精確的分類結(jié)果。為了方便實(shí)驗(yàn)的進(jìn)行,同時(shí)不影響實(shí)驗(yàn)效果的情況下,本發(fā)明將 Cosh取為固定值1
?取值為固定的范圍[1,50]來進(jìn)行實(shí)驗(yàn)。該取值能充分反應(yīng)有效 警告及誤報(bào)警告被誤分類時(shí),產(chǎn)生的不等代價(jià)的問題。
[0125]在第一組實(shí)驗(yàn)中,本發(fā)明設(shè)定Costi = l,Costn = 40,將傳統(tǒng)反向傳播神經(jīng)網(wǎng)絡(luò) BPNN,及三種代價(jià)敏感神經(jīng)網(wǎng)絡(luò)CSBNN-〇S、CSBNN-TM、CSBNN-US應(yīng)用到本發(fā)明的三個(gè)開源項(xiàng) 目數(shù)據(jù)中,并比較他們的誤分類率MR、有效警告召回率Recall及誤分類期望成本ECM。在第 二組實(shí)驗(yàn)中,設(shè)定Costi = 1,Costn = 50,應(yīng)用上述評(píng)價(jià)標(biāo)準(zhǔn),分別比較CSBNN-0S、CSBNN-TM、 CSBNN-US算法在有效警告分類問題上的效率,同時(shí)還比較了 BPNN方法與三種代價(jià)敏感方法 在誤分類期望成本ECM指標(biāo)上的差異。
[0126] 表2.2為第一組實(shí)驗(yàn)Costi = 1,Costn = 40下的實(shí)驗(yàn)結(jié)果。在本發(fā)明類極不平衡的 數(shù)據(jù)條件下,較BPNN方法而言,三種代價(jià)敏感神經(jīng)網(wǎng)絡(luò)方法都能大幅提高有效警告的查全 率Recal 1;而其分類錯(cuò)誤率MR也相應(yīng)的大幅增加;在誤分類期望成本ECM方面,代價(jià)敏感分 類方法在Camel、CXF兩個(gè)項(xiàng)目上都優(yōu)于BPNN方法,而在MyFaces項(xiàng)目上確相反;另外從實(shí)驗(yàn) 結(jié)果來看,CSBNN-0S、CSBNN-TM、CSBNN-US方法在分類效果方面相當(dāng)。
[0127] 表2.2第一組實(shí)驗(yàn)對(duì)比結(jié)果
[0129] 圖3a為MyFaces項(xiàng)目下Costi = l,c〇stn = 50對(duì)三種代價(jià)敏感方法的比較,實(shí)驗(yàn)結(jié) 果進(jìn)一步驗(yàn)證了三種代價(jià)敏感方法在Costn代價(jià)不斷提高的條件下,最后達(dá)到了相當(dāng)?shù)姆?類效果。CSBNN-〇S、CSBNN-US方法都能快速的將代價(jià)信息體現(xiàn)到分類效果中,從圖來看 MyFaces項(xiàng)目在代價(jià)Cost n = 4左右時(shí),便將有效警告的查全率Recall提高到穩(wěn)定的水平 0.575;而基于閾值操作的方法CSBNN-TM則要在Costn = 25左右時(shí),才能將代價(jià)信息引入到 源代碼警告分類中。在分類錯(cuò)誤率MR評(píng)價(jià)指標(biāo)上,三種代價(jià)敏感方法都大幅將其提升,這是 誤分類代價(jià)更低的誤報(bào)警告I被大量歸類為有效警告造成的。三種代價(jià)敏感方法在ECM指標(biāo) 上都高于BPNN方法,但從其走勢(shì)上來看,當(dāng)Costn的值繼續(xù)增長(zhǎng)時(shí),代價(jià)敏感方法將得到更 低的ECM值。
[0130] 圖3b為在Camel項(xiàng)目下Costi = 1,Costn = 50對(duì)三種代價(jià)敏感方法的比較,其結(jié)果 與項(xiàng)目MyFaces類似,三種代價(jià)敏感方法在Costn代價(jià)不斷提高的條件下,最后達(dá)到了相當(dāng) 的分類效果。Camel項(xiàng)目下,CSBNN-〇S、CSBNN-US方法同樣在代價(jià)Costn = 4左右時(shí),便將有效 警告的查全率Recall以及誤分類率MR提高到穩(wěn)定的水平,其值分別為0.7057和0.9179。同 樣的,CSBNN-TM方法在Cost n = 15左右時(shí),才將代價(jià)信息體現(xiàn)到分類效果中。三種代價(jià)敏感 方法在ECM指標(biāo)上都在Costn = 25左右時(shí),優(yōu)于BPNN方法。
[0131] 圖3c為在項(xiàng)目CXF下Costi = l,Costn = 50對(duì)三種代價(jià)敏感方法的比較,與之前討 論的兩個(gè)實(shí)驗(yàn)項(xiàng)目結(jié)果相似,三種代價(jià)敏感方法在Costn代價(jià)不斷提高時(shí),最后達(dá)到了相當(dāng) 的分類效果。在代價(jià)Cost n = 4左右,CSBNN-〇S、CSBNN-US方法的有效警告分類查全率Recall 以誤分類率MR就達(dá)到了穩(wěn)定的水平,且其值分別穩(wěn)定在0.88和0.9091 XSBNN-TM方法則在 Costn = 8左右時(shí),才將代價(jià)信息體現(xiàn)到分類效果中;并且在Costn = 15左右時(shí),有效警告分 類查全率Recall以誤分類率MR達(dá)到了穩(wěn)定的水平。在ECM指標(biāo)上,當(dāng)Costn = 13左右時(shí),三種 代價(jià)敏感神經(jīng)網(wǎng)絡(luò)方法相對(duì)于普通BPNN方法來說得到了更優(yōu)秀的結(jié)果。
[0132] 實(shí)驗(yàn)結(jié)果進(jìn)一步驗(yàn)證了三種代價(jià)敏感方法在Costn代價(jià)不斷提高的條件下,最后 達(dá)到了相當(dāng)?shù)姆诸愋Ч?。在本發(fā)明的實(shí)驗(yàn)數(shù)據(jù)基礎(chǔ)上,CSBNN-〇S、CSBNN-TM、CSBNN-US在 Recall評(píng)估標(biāo)準(zhǔn)上最后都達(dá)到了一致的水平,且平均提高了44.07%。由于當(dāng)Costn增大時(shí) 三種代價(jià)敏感方法都將把大量誤報(bào)警告分類為有效警告,同時(shí)造成誤分類率的顯著提升。 與CSBNN-〇S、CSBNN-US方法能快速達(dá)到較高且平穩(wěn)的誤分類率MR與查全率Recall不同, CSBNN-TM方法增長(zhǎng)速度更緩慢,這是因?yàn)镃SBNN-〇S、CSBNN-US方法按相應(yīng)的代價(jià)比例重新 分布訓(xùn)練樣本,能更快的將代價(jià)體現(xiàn)到分類實(shí)踐中。如當(dāng)Costn/CostSl時(shí),CSBNN-OS、 CSBNN-US方法將誤報(bào)警告和有效警告訓(xùn)練樣本數(shù)量比例變?yōu)?,勢(shì)必影響分類效果而提高 查全率Recal 1,然而CSBNN-TM的輸出仍為普通BPNN的輸出對(duì)查全率Recal 1沒有影響。相應(yīng) 的CSBNN-TM方法在Costn為20之前,誤分類期望成本ECM較之另外兩種代價(jià)敏感分類方法更 低,同時(shí)當(dāng)于一定值時(shí),BPNN方法的誤分類期望成本ECM將高于代價(jià)敏感神 經(jīng)網(wǎng)絡(luò)分類方法。
[0133]最后說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較 佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技 術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本 發(fā)明的權(quán)利要求范圍當(dāng)中。
【主權(quán)項(xiàng)】
1. 基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,其特征在于,包括如下步驟: S1:使用FindBugs工具對(duì)目標(biāo)軟件一系列版本的jar文件進(jìn)行分析,得到目標(biāo)軟件的靜 態(tài)警告; S2:對(duì)步驟S1獲得的靜態(tài)警告進(jìn)行標(biāo)注; S2a:將目標(biāo)軟件一系列版本中,相鄰兩個(gè)版本中靜態(tài)警告進(jìn)行兩兩對(duì)比,如果前一個(gè) 版本中警告在后一個(gè)版本中消失則認(rèn)為該警告是有效警告;反之,如果前一個(gè)版本中的警 告在后一個(gè)版本中仍然存在則認(rèn)為該警告是誤報(bào)警告; S2b:將有效警告中重復(fù)的有效警告剔除后,剩下的所有的有效警告構(gòu)成有效警告集, 將所有誤報(bào)警告中重復(fù)的誤報(bào)警告剔除后,剩下的所有誤報(bào)警告構(gòu)成誤報(bào)警告集,有效警 告集和誤報(bào)警告集構(gòu)成樣本集;有效警告集中的有效警告和無效警告集中的無效警告均為 樣本集中的樣本; S3:采用BP神經(jīng)網(wǎng)絡(luò),使用欠采樣的方式改變樣本集中樣本的分布得到新的樣本集,采 用新的樣本集中的樣本訓(xùn)練分類器,然后使用該分類器對(duì)樣本集中的所有樣本進(jìn)行預(yù)測(cè)分 類,將樣本集中的所有樣本預(yù)測(cè)為有效警告或誤報(bào)警告。2. 如權(quán)利要求1所述的基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,其特征 在于,所述步驟S3具體如下: 采用欠采樣的方式改變樣本集中樣本的分布,再對(duì)樣本集中的所有樣本進(jìn)行預(yù)測(cè)分 類; I) 根據(jù)公式(3)減少步驟S2b誤報(bào)警告集中的誤報(bào)警告的數(shù)量得到新的樣本集;其中,階表示樣本集中誤報(bào)警告的數(shù)量,Nn表示樣本集中有效警告的數(shù)量,階'表示新的 樣本集中誤報(bào)警告的數(shù)量,(^^:表示誤報(bào)警告被誤分類產(chǎn)生的代價(jià),Costn表示有效警告 被誤分類產(chǎn)生的代價(jià),Cosh,Costn均為自然數(shù)的取值為[1,50 ]; II) 令 k=l; III) 從新的樣本集中選取十分之九分的樣本構(gòu)成訓(xùn)練樣本集Qk,剩下十分之一的樣本 構(gòu)成測(cè)試樣本集Pk,且Qk乒Qk-1,Pk乒Pk-1; IV) 采用BP神經(jīng)網(wǎng)絡(luò)對(duì)訓(xùn)練樣本集Qk進(jìn)行訓(xùn)練得到分類器,然后使用該分類器對(duì)測(cè)試樣 本集Pk中的所有測(cè)試樣本進(jìn)行預(yù)測(cè)分類,即將測(cè)試樣本集P k中的每個(gè)測(cè)試樣本分為有效警 告或誤報(bào)警告,然后將測(cè)試樣本集Pk中所有經(jīng)過預(yù)測(cè)分類的測(cè)試樣本輸出; V) 判斷新的樣本集中所有樣本是否都經(jīng)過預(yù)測(cè)分類,如果是則結(jié)束,否則執(zhí)行下一步; ¥1)令」=」+1,并返回步驟111)。3. 如權(quán)利要求2所述的基于欠采樣操作的代價(jià)敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,其特征 在于:?的取值為[20,50]。
【文檔編號(hào)】G06N3/08GK106055483SQ201610395760
【公開日】2016年10月26日
【申請(qǐng)日】2016年6月6日
【發(fā)明人】徐玲, 潘志輝, 葛永新, 洪明堅(jiān), 楊夢(mèng)寧, 張小洪, 楊丹, 王洪星, 黃晟
【申請(qǐng)人】重慶大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新源县| 鱼台县| 福泉市| 白玉县| 汝阳县| 东源县| 霞浦县| 常宁市| 博客| 锦屏县| 织金县| 曲阳县| 革吉县| 黑龙江省| 定日县| 太仆寺旗| 扎囊县| 苗栗市| 彭水| 长白| 土默特右旗| 闻喜县| 福鼎市| 颍上县| 收藏| 肇东市| 岳阳县| 谷城县| 年辖:市辖区| 乌兰察布市| 博湖县| 建昌县| 沈阳市| 平乐县| 扎兰屯市| 茌平县| 郁南县| 泸溪县| 囊谦县| 浦城县| 通许县|