基于閾值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法
【專利摘要】本發(fā)明涉及基于閾值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,包括S1使用FindBugs工具對目標軟件一系列版本的jar文件進行分析,得到目標軟件的靜態(tài)警告;S2對S1獲得的靜態(tài)警告進行標注;S3采用代價敏感的BP神經(jīng)網(wǎng)絡(luò),使用樣本集中的樣本訓練分類器,采用該分類器對樣本集中的所有樣本進行分類,計算得到用于預(yù)測有效警告或誤報警告的真實類別概率值,采用閾值操作的方式對真實類別概率值進行調(diào)整得到新類別概率值,使用該新類別概率值對樣本集中的所有樣本進行預(yù)測分類。本發(fā)明方法在有效警告查全率Recall方面平均提高了44.07%,還能快速達到較高而平穩(wěn)的查全率,同時較傳統(tǒng)神經(jīng)網(wǎng)絡(luò)方法能達到更低的分類代價。
【專利說明】
基于閾值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及軟件靜態(tài)分析,尤其涉及軟件靜態(tài)警告的分類,具體涉及基于閾值操 作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法。
【背景技術(shù)】
[0002] 在軟件開發(fā)過程中,大量資源被消耗在發(fā)現(xiàn)和解決軟件中的缺陷。除了一些大公 司在開發(fā)過程中會使用自動化測試方法,在大多數(shù)中小規(guī)模的軟件公司或項目團隊中,軟 件的測試工作仍然停留在手工處理階段。其測試任務(wù)往往繁重且低效,稍小的功能變動都 需要回歸測試其他功能,在資源有限以及時間緊迫的情況下,軟件測試工作通常不能順利 的完成,造成仍有許多未被發(fā)現(xiàn)的錯誤遺留在軟件系統(tǒng)中。測試手段的匱乏己經(jīng)成為制約 軟件產(chǎn)出效率以及軟件質(zhì)量的瓶頸。鑒于此,動態(tài)分析和靜態(tài)分析方法被分別提出,以在節(jié) 約開發(fā)資源的前提下發(fā)現(xiàn)軟件潛在的錯誤。動態(tài)分析需要編譯執(zhí)行程序,以觀察該軟件是 否滿足預(yù)先設(shè)置好的輸出結(jié)果;靜態(tài)分析通常對源代碼或其相應(yīng)的二進制文件進行分析, 在不編譯運行軟件的情況下發(fā)現(xiàn)代碼中是否存在不佳的編程實踐。靜態(tài)分析技術(shù)目標不在 于證實軟件是否輸出正確或發(fā)現(xiàn)程序中的邏輯問題,而是作為動態(tài)分析方法的一種補充, 在項目編碼階段盡可能地發(fā)現(xiàn)潛在問題,提高程序的魯棒性和可靠性。
[0003] 靜態(tài)分析技術(shù)可以自動化檢測軟件中可能造成程序崩潰的潛在異常代碼塊,如空 指針引用、下標越界、代碼風格不一致等,幫助開發(fā)人員在項目的初期階段發(fā)現(xiàn)一些可能存 在的代碼安全隱患。目前,前沿的JAVA靜態(tài)分析工具有FindBugs、PMD、Check Style等,本發(fā) 明將這些靜態(tài)分析工具分析報告的潛在異常信息統(tǒng)一稱為警告。
[0004] 與測試和代碼走查等代碼質(zhì)量控制手段不同的是,靜態(tài)分析工具往往會報告大量 的警告,平均每千行代碼中有40個警告。這些警告中,既有開發(fā)人員認為重要并將進行修復(fù) 的有效警告;也有對代碼質(zhì)量并不產(chǎn)生影響而將被忽略的誤報警告。有研究發(fā)現(xiàn),35-91 % 的警告都是無關(guān)緊要的誤報警告,而平均每個警告都需要花費有經(jīng)驗的開發(fā)人員5分鐘時 間進行評估。大量的誤報警告將耗費大量的開發(fā)資源,這一因素嚴重阻礙了靜態(tài)分析工具 在開發(fā)過程中的普及。
[0005] 為了最大效應(yīng)的利用靜態(tài)分析工具,除了分析工具限制報告預(yù)先定義的低優(yōu)先級 警告外,大量警告分類技術(shù)與排序技術(shù)被不斷提出。分類技術(shù)將警告預(yù)測為有效警告或誤 報警告;而排序技術(shù)則是根據(jù)警告被預(yù)測為有效警告的可能性對警告進行排序。通過提取 警告特征,主要包括警告本身特征(分析工具定義)、源代碼特征、代碼倉庫特征等,從簡單 的警告類型選擇到復(fù)雜的機器學習算法分別被應(yīng)用來減少誤報警告,以提高靜態(tài)分析工具 的可用性。
[0006] 然而,在警告分類過程中存在兩類問題:第一類為誤分類造成代價不等問題,將一 個誤報警告歸類為一個有效警告(誤分類I),和將一個有效警告歸類為誤報警告(誤分類 Π ),所產(chǎn)生的代價是不等的,與軟件缺陷預(yù)測類,誤分類Π 可能造成軟件的崩潰,而誤分類 I僅僅需要開發(fā)人員花費5分鐘時間進行審查,即誤分類Π 的代價會遠遠高于誤分類I;第二 類問題為類不平衡問題,如上文所述,誤報警告可能占整體警告的絕大部分,本發(fā)明的實驗 數(shù)據(jù)也是類極不平衡的。以往的警告分類技術(shù)目的往往是降低分類的錯誤率,而忽略了上 述不同分類錯誤所產(chǎn)生的不同代價,以及數(shù)據(jù)的不平衡問題。
【發(fā)明內(nèi)容】
[0007] 針對現(xiàn)有技術(shù)存在的上述問題,本發(fā)明的目的是提供一種盡可能降低警告分類后 代價的一種警告分類方法。
[0008] 為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:基于閾值操作的代價敏感神經(jīng)網(wǎng)絡(luò) 的警告分類方法,其特征在于,包括如下步驟:
[0009] S1:使用FindBugs工具對目標軟件一系列版本的jar文件進行分析,得到目標軟件 的靜態(tài)警告;
[0010] S2:對步驟S1獲得的靜態(tài)警告進行標注;
[0011] S2a:將目標軟件一系列版本中,相鄰兩個版本中靜態(tài)警告進行兩兩對比,如果前 一個版本中警告在后一個版本中消失則認為該警告是有效警告;反之,如果前一個版本中 的警告在后一個版本中仍然存在則認為該警告是誤報警告;
[0012] S2b:將有效警告中重復(fù)的有效警告剔除后,剩下的所有的有效警告構(gòu)成有效警告 集,將所有誤報警告中重復(fù)的誤報警告剔除后,剩下的所有誤報警告構(gòu)成誤報警告集,有效 警告集和誤報警告集構(gòu)成樣本集;有效警告集中的有效警告和無效警告集中的無效警告均 為樣本集中的樣本;
[0013] S3:采用BP神經(jīng)網(wǎng)絡(luò),使用樣本集中的樣本訓練分類器,采用該分類器對樣本集中 的所有樣本進行分類,計算得到用于預(yù)測有效警告或誤報警告的真實類別概率值,采用閾 值操作的方式對所述真實類別概率值進行調(diào)整得到新類別概率值,然后使用該新類別概率 值對樣本集中的所有樣本進行預(yù)測分類,將樣本集中的所有樣本預(yù)測為有效警告或誤報警 告。
[0014]作為優(yōu)化,所述步驟S3具體如下:
[0015]采用閾值操作的方式對樣本集中的所有樣本進行預(yù)測分類;
[0016] a)令 r = ]_;
[0017] b)從樣本集中選取十分之九分的樣本構(gòu)成訓練樣本集Qr,剩下十分之一的樣本構(gòu) 成測試樣本集Pr,且Qr乒Qr-1,Pr乒Pr-1;
[0018] c)采用BP神經(jīng)網(wǎng)絡(luò)對訓練樣本集Qr進行訓練得到分類器,然后將測試樣本集Pr中 的測試樣本依次輸入該分類器,計算得到用于預(yù)測有效警告或誤報警告的真實類別概率值 為014£{1,11},則2^1'11>=1且0<0 1彡1,其中,01表示測試樣本被預(yù)測為誤報警告的 真實類別概率值,On表示測試樣本被預(yù)測為有效警告的真實類別概率值;
[0019] d)對分類器預(yù)測輸出的真實類別概率值做閾值操作得到新類別概率值,如公式 (2):
[0021]其中,Cf表示經(jīng)過閾值操作后的預(yù)測有效警告或誤報警告的新類別概率值,η為 歸一化項,使得=1且^1,其中,<9^表示經(jīng)過閾值操作后測試樣本被預(yù) 測為誤報警告的新類別概率值,表示經(jīng)過閾值操作后測試樣本被預(yù)測為有效警告的新 類別概率值;
[0022] e)然后根據(jù)步驟d)得到的新類別概率對測試樣本集Pr中的測試樣本進行預(yù)測分 類,如果Gf 2(9;;則認為測試樣本集Pr中的測試樣本為誤報警告,否則為有效警報,然后將 測試樣本集中所有經(jīng)過預(yù)測分類的樣本輸出;
[0023] f)判斷樣本集中所有樣本是否都經(jīng)過預(yù)測分類,如果是則結(jié)束,否則執(zhí)行下一步;
[0024] g)令r = r+l,并返回步驟b)。
[0026]相對于現(xiàn)有技術(shù),本發(fā)明具有如下優(yōu)點:通過實驗結(jié)果對比發(fā)現(xiàn),本發(fā)明方法在有 效警告查全率Recall方面平均提高了44.07%。另外本發(fā)明方法能快速達到較高而平穩(wěn)的 查全率,且當有效警告被誤分類的代價在高于一定值時,代價敏感分類方法較傳統(tǒng)神經(jīng)網(wǎng) 絡(luò)方法,能達到更低的分類代價。
【附圖說明】
[0027]圖1為警告標注過程圖。
[0028]圖2為有效警告及誤報警告分布圖。
[0029] 圖3a為Costi = l,c〇stn = 50下MyFaces項目在本發(fā)明給出的三種與現(xiàn)有技術(shù)的實 驗效果對比圖;圖3b為Costi = 1,Costn = 50下Camel項目在本發(fā)明給出的三種與現(xiàn)有技術(shù) 的實驗效果對比圖;圖3c為Costiil,Costn = 50下CXF項目在本發(fā)明給出的三種與現(xiàn)有技 術(shù)的實驗效果對比圖。
[0030] 圖4為BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
[0031]圖5a為項目MyFaces中個版本的缺陷分布;圖5b為項目Camel中個版本的缺陷分 布;圖5c為項目CXF中個版本的缺陷分布。
[0032]圖6為變量間的單調(diào)關(guān)系。
【具體實施方式】
[0033]下面對本發(fā)明作進一步詳細說明。
[0034]基于閾值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,包括如下步驟:
[0035] S1:使用FindBugs工具對目標軟件一系列版本的jar文件進行分析,得到目標軟件 的靜態(tài)警告;本發(fā)明中的目標軟件是指準備對其警告進行分類的軟件;
[0036] FindBugs是由Bill Pugh和David Hovemeyer創(chuàng)建的開源項目,通過操作Java字節(jié) 碼來查找Java代碼中的程序錯誤。它使用匹配缺陷模式的方式來識別Java程序中超過400 種不同類型的源代碼警告。這些源代碼警告可分為四個等級,分別是恐怖的(scariest)、嚇 人的(scary)、令人困擾的(troubling)和值得關(guān)注的(of concern),該級別用來指示某警 告的存在對軟件系統(tǒng)的危害程度;且每一種警告類型都有一個預(yù)先定義的優(yōu)先級,其中共 有高、中、低三種優(yōu)先級,該優(yōu)先級用來指示警告為有效警告的可能性。FindBugs通過匹配 缺陷模式來查找代碼中的潛在錯誤,這些缺陷模式由經(jīng)驗豐富的開發(fā)人員歸納自真實的源 代碼錯誤。
[0037] S2:對步驟S1獲得的靜態(tài)警告進行標注;
[0038] S2a:將目標軟件一些列版本中,相鄰兩個版本中靜態(tài)警告進行兩兩對比,如果前 一個版本中警告在后一個版本中消失則認為該警告是有效警告;反之,如果前一個版本中 的警告在后一個版本中仍然存在則認為該警告是誤報警告;
[0039] S2b:將有效警告中重復(fù)的有效警告剔除后,剩下的所有的有效警告構(gòu)成有效警告 集,將所有誤報警告中重復(fù)的誤報警告剔除后,剩下的所有誤報警告構(gòu)成誤報警告集,有效 警告集和誤報警告集構(gòu)成樣本集;有效警告集中的有效警告和無效警告集中的無效警告均 為樣本集中的樣本;
[0040] 實現(xiàn)了基于連續(xù)的缺陷修復(fù)版本的自動化警告標注方法,能實現(xiàn)對警告快速有效 的標注,按如下基本思想進行標注:若一個警告在某個版本中被引入,而在后續(xù)的版本中消 失,則該警告被標注為有效警告;若后續(xù)的版本中,該警告仍然存在,則該警告被標注為誤 報警告。如圖1所示,在警告標注的過程中,在版本1.1.1中存在,而在版本1.1.2中消失的警 告(黑色)標注為有效警告;在版本1.1.2中仍然存在標注為誤報警告。最后綜合所有選擇的 版本數(shù)據(jù),得到本發(fā)明后續(xù)的實驗數(shù)據(jù)集。
[0041] S3:采用BP神經(jīng)網(wǎng)絡(luò),使用樣本集中的樣本訓練分類器,并在形成分類器的過程中 引入代價,然后使用該分類器對樣本集中的所有樣本進行預(yù)測分類,將樣本集中的所有樣 本預(yù)測為有效警告或誤報警告。
[0042]對于步驟S3,可以采用如下三種基于PB神經(jīng)網(wǎng)絡(luò)的代價敏感預(yù)測分類方法,具體 如下:
[0043]第一種:采用過采樣的方式改變樣本集中樣本的分布,再對樣本集中的所有樣本 進行預(yù)測分類;
[0044] 1)根據(jù)公式(1)增加步驟S2b有效警告集中的有效警告的數(shù)量得到新的樣本集;過 采樣的方法通過增加代價較高類別的樣本數(shù)量,改變訓練數(shù)據(jù)的分布,將代價直接反應(yīng)到 樣本數(shù)據(jù)中。
[0046]其中,階表示樣本集中誤報警告的數(shù)量,ΝΠ 表示樣本集中有效警告的數(shù)量,表 不新的樣本集中有效警告的數(shù)量,Cos ti表不誤報警告被誤分類產(chǎn)生的代價,Cos tn表不有 效警告被誤分類產(chǎn)生的代價,Cost,Costn均為自然數(shù)
·的取值為[1,50];所述
?的取值最好為[20,50 ]
的比值在[20,50 ]范圍時,基于過采樣的代價敏感 神經(jīng)網(wǎng)絡(luò)的警告分類方法比BP神經(jīng)網(wǎng)絡(luò)的ECM值更低,即基于過采樣的代價敏感神經(jīng)網(wǎng)絡(luò) 的警告分類方法能得到更低的分類代價。
[0047] 數(shù)量的樣本將通過隨機復(fù)制的方式使誤報警告I及有效警告Π 兩類樣 本數(shù)目與其代價成比例,從而達到代價敏感的目的。即通過公式(1 ),為過采樣后有效警 告集中的樣本數(shù)量,而原先僅有階數(shù)量的有效警告,因此(Ai-TVu:)數(shù)量的有效警告樣本 需要增加。與代價成比例
,這樣通過樣本的改變會影響分類效果,從而將 實現(xiàn)了代價敏感。
[0048] 2)令j = l;
[0049] 3)從新的樣本集中選取十分之九分的樣本構(gòu)成訓練樣本集Qj,剩下十分之一的樣 本構(gòu)成測試樣本集匕,且Q#Qh,P#Ph;即每次所選的訓練樣本集都不相同;
[0050] 4)采用BP神經(jīng)網(wǎng)絡(luò)對訓練樣本集(^進行訓練得到分類器,然后使用該分類器對測 試樣本集匕中的所有測試樣本進行預(yù)測分類,即將測試樣本集匕中的每個測試樣本分為有 效警告或誤報警告,然后將測試樣本集匕中所有經(jīng)過預(yù)測分類的測試樣本輸出;
[0051] 5)判斷新的樣本集中所有樣本是否都經(jīng)過預(yù)測分類,如果是則結(jié)束,否則執(zhí)行下 一步;
[0052] 6)令j = j+l,并返回步驟3)。
[0053]第二種:采用閾值操作的方式對樣本集中的所有樣本進行預(yù)測分類;閾值操作的 方法將神經(jīng)網(wǎng)絡(luò)的判決邊界向代價較低類別的邊界偏移,從而降低代價較高一類樣本被分 錯類的風險。該方法使用BPNN對原始樣本進行訓練,通過在預(yù)測階段引入代價信息,實現(xiàn)分 類的代價敏感效果;
[0054] a)$r = i;
[0055] b)從樣本集中選取十分之九分的樣本構(gòu)成訓練樣本集Qr,剩下十分之一的樣本構(gòu) 成測試樣本集Pr,且仏辛(^么^^- 1;即每次所選的訓練樣本集都不相同;
[0056] C)采用BP神經(jīng)網(wǎng)絡(luò)對訓練樣本集Qr進行訓練得到分類器,然后將測試樣本集Pr中 的測試樣本依次輸入該分類器,計算得到用于預(yù)測有效警告或誤報警告的真實類別概率值 為Oi,i e {I,Π },則Ij UI1 q =1且〇<〇< 1,其中,〇1表示測試樣本被預(yù)測為誤報警告的 真實類別概率值,On表示測試樣本被預(yù)測為有效警告的真實類別概率值;
[0057] d)對分類器的預(yù)測輸出做閾值操作得到新類別概率輸出,如公式(2):
[0059]其中,Cf表示經(jīng)過閾值操作后的預(yù)測有效警告或誤報警告的新類別概率值,η為 歸一化項,使得H =1且0 < Of S 1,其中,6^表示經(jīng)過閾值操作后測試樣本被預(yù) 測為誤報警告的新類別概率值,表示經(jīng)過閾值操作后測試樣本被預(yù)測為有效警告的新 類別概率值;所述步驟d)中,最好限定
-的比值在[25, 50]范圍時,基于閾值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法比BP神經(jīng)網(wǎng)絡(luò)進行分類的 ECM值更低,即基于閾值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法能得到更低的分類代價。
[0060] e)然后根據(jù)步驟d)得到的新類別概率對測試樣本集Pr中的測試樣本進行預(yù)測分 類,如果2 (?則認為測試樣本集Pr中的測試樣本為誤報警告,否則為有效警報,然后將 測試樣本集中所有經(jīng)過預(yù)測分類的樣本輸出;
[0061] f)判斷樣本集中所有樣本是否都經(jīng)過預(yù)測分類,如果是則結(jié)束,否則執(zhí)行下一步;
[0062] g)令r = r+l,并返回步驟b)。
[0063] 第三種:采用欠采樣的方式改變樣本集中樣本的分布,再對樣本集中的所有樣本 進行預(yù)測分類;
[0064] I)根據(jù)公式(3)減少步驟S2b誤報警告集中的誤報警告的數(shù)量得到新的樣本集;欠 采樣的方法通過減少代價較低類別的樣本數(shù)量,改變訓練數(shù)據(jù)的分布,將代價反應(yīng)到樣本 數(shù)據(jù)中;
[0066] 其中,階表示樣本集中誤報警告的數(shù)量,Νπ表示樣本集中有效警告的數(shù)量,階'表示 新的樣本集中誤報警告的數(shù)量,Cos ti表不誤報警告被誤分類產(chǎn)生的代價,Cos tn表不有效 警告被誤分類產(chǎn)生的代價,Cost,Costn均為自然數(shù)
的取值為[1,50];所述
的取值最好為[20,50 ]
的比值在[20,50 ]范圍時,基于欠采樣操作的代價 敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法比BP神經(jīng)網(wǎng)絡(luò)進行分類的ECM值更低,即基于欠采樣操作的 代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法能得到更低的分類代價。
[0067] 由式(3)可計算代價較低誤報警告I樣本的數(shù)量將為階',且移除CM -iVf)個類I 的樣本數(shù)量,使不同類別的樣本數(shù)目與代價成比例。通過公式(3),階'為欠采樣后誤報警告 的數(shù)量,而原先僅有他數(shù)量的誤報警告,因此(階'-階)數(shù)量的誤報警告樣本需要增加,與代 價成比例
,這樣樣本數(shù)量就與樣本類型對應(yīng)的代價成比例,從而將代價 引入到分類中。
[0068] Π )令 k = l;
[0069] III)從新的樣本集中選取十分之九分的樣本構(gòu)成訓練樣本集Qk,剩下十分之一的 樣本構(gòu)成測試樣本集Pk,且Qk辛Qk-1,Pk辛Pk-Ι;即每次所選的訓練樣本集都不相同;
[0070] IV)采用BP神經(jīng)網(wǎng)絡(luò)對訓練樣本集Qk進行訓練得到分類器,然后使用該分類器對 測試樣本集Pk中的所有測試樣本進行預(yù)測分類,即將測試樣本集p k中的每個測試樣本分為 有效警告或誤報警告,然后將測試樣本集Pk中所有經(jīng)過預(yù)測分類的測試樣本輸出;
[0071] V)判斷新的樣本集中所有樣本是否都經(jīng)過預(yù)測分類,如果是則結(jié)束,否則執(zhí)行下 一步;
[0072] VI)令j = j+l,并返回步驟m)。
[0073] 神經(jīng)網(wǎng)絡(luò)學習算法為現(xiàn)有技術(shù),其目標是尋找一個函數(shù),該函數(shù)能把一組輸入映 射到其相應(yīng)的輸出。例如一個簡單的分類問題,輸入是某種鳥類的圖片,正確的輸出將是該 鳥類的名稱。對于某些相對簡單的輸入輸出模式可以輕易地使用單層神經(jīng)網(wǎng)絡(luò)學習,但是 這些單層神經(jīng)網(wǎng)絡(luò)不能學習比較復(fù)雜的模式,例如非線性可分的情況。單層神經(jīng)網(wǎng)絡(luò)只能 利用圖片中像素的某種特征來學習一種輸出以及一種標簽函數(shù);因為它被限制為僅具有一 個層,所以沒有辦法從輸入中學習到任何抽象特征;而多層神經(jīng)網(wǎng)絡(luò)通過刻畫特征的內(nèi)部 表示,并且在每一層中學習不同的特征從而消除了單層網(wǎng)絡(luò)的限制因素。多層神經(jīng)網(wǎng)絡(luò)采 用的學習過程如下:第一層用來處理圖片中的單個像素輸入以學習鳥類輪廓線條走向;第 二層就可以通過結(jié)合第一層的學習結(jié)果,進一步處理簡單的鳥類形狀問題;通過每向上提 升一層就學習更多的抽象特征的特點,而達到對復(fù)雜模式進行分類的目的。
[0074]如前文提及的對鳥類圖片分類情況,每一層都是通過其下方層的學習結(jié)果來學習 新的模式,也正是這種多層次的學習能力使多層神經(jīng)網(wǎng)絡(luò)能夠刻畫獨立于外界輸入的內(nèi)部 表示形式。反向傳播算法的發(fā)展目標和動機正是找到這樣一種訓練多層神經(jīng)網(wǎng)絡(luò)的方法, 該方法能夠通過學習任意輸入到輸出的映射關(guān)系得到適當?shù)膬?nèi)部表示機制,最終能夠?qū)?fù) 雜的映射模式進行分類。
[0075] BP (Back Propagation)神經(jīng)網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)學習算法的一個變種,它能夠?qū)W習和 存儲大量的輸入輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學方程。它的 學習規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差 平方和最小。BP神經(jīng)網(wǎng)絡(luò)模型拓撲結(jié)構(gòu)包括輸入層(input)、一個或多個隱含層(hide layer)和輸出層(output layer),參見圖4。
[0076] BP神經(jīng)網(wǎng)絡(luò)主要有兩個階段:激勵傳播和權(quán)重更新[。每次迭代中的傳播環(huán)節(jié)包含 兩步:(前向傳播階段)將訓練輸入送入網(wǎng)絡(luò)以獲得激勵響應(yīng);(反向傳播階段)將激勵響應(yīng) 同訓練輸入對應(yīng)的目標輸出求差,從而獲得隱含層和輸出層的響應(yīng)誤差。對于每個節(jié)點上 的權(quán)重,按照以下步驟進行更新:將輸入激勵和響應(yīng)誤差相乘,從而獲得權(quán)重的梯度;將這 個梯度乘上一個比例并取反后加到權(quán)重上。這個比例將會影響到訓練過程的速度和效果, 因此稱為"訓練因子"。梯度的方向指明了誤差擴大的方向,因此在更新權(quán)重的時候需要對 其取反,從而減小權(quán)重引起的誤差。激勵傳播和權(quán)重更新兩個階段可以反復(fù)循環(huán)迭代,直到 網(wǎng)絡(luò)對輸入的響應(yīng)達到滿意的預(yù)定的目標范圍為止。
[0077] 代價敏感神經(jīng)網(wǎng)絡(luò)算法的基本思想是:誤將一個存在缺陷的模塊預(yù)測為一個沒有 缺陷的模塊將造成軟件系統(tǒng)不可預(yù)知的后果,同樣在判斷一個病人是否為重癥時,將其判 斷為健康的代價將會遠遠高于將其判斷為存在健康隱患的代價,前者可能因誤診而耽誤了 病人的最佳治療時間。在本發(fā)明在對源代碼進行警告分類中,就是基于這種代價敏感的思 想,因為將誤報警告歸類為有效警告的代價會遠遠小于將有效警告歸類為誤報警告的代 價。本發(fā)明的分類方法中,基礎(chǔ)分類器采用的是經(jīng)典的BP神經(jīng)網(wǎng)絡(luò)。
[0078] 本發(fā)明提供的方法與現(xiàn)有方法的比對:
[0079]采用過采樣進行預(yù)測分類以下記為CSBNN-0S,采用閾值操作進行預(yù)測分類記為 CSBNN-TM,采用欠采樣進行預(yù)測分類以下記為CSBNN-US,現(xiàn)有神經(jīng)網(wǎng)絡(luò)進行預(yù)測分類記為 BPNN。
[0080] 實驗數(shù)據(jù)
[0081] 在三個開源Apache項目下,共選擇了 38個連續(xù)缺陷修復(fù)版本作為警告獲取對象, 表1展示了這三個項目的詳細信息。由表1可知,這三個實驗項目具有中大型項目代表性,另 外連續(xù)的缺陷修復(fù)版本及兩年左右的時間周期,能防止因代碼重構(gòu)等非缺陷修復(fù)因素而造 成警告的消失,從而保證自動化有效警告標注的正確性。
[0082] 表 1
[0084] 本發(fā)明使用FindBugs作為靜態(tài)分析工具,由于已有研究證實默認配置下FindBugs 警告與軟件缺陷具有更強的相關(guān)性,本發(fā)明在實驗中使用了 FindBugs的默認配置對上述三 個項目下的38個版本進行分析。經(jīng)過標注有效警告,得到各個項目下有效警告及誤報警告 的分布,如圖2所示。從標注結(jié)果可以看出,有效警告在所有警告中的比例極低,在MyFaces、 Came 1和CXF三個項目下,有效警告的比重分別為3.7%,6.0%,8.3%。由于數(shù)據(jù)存在類極不 平衡的原因,許多分類器在做有效警告分類時效率極低,而代價敏感神經(jīng)網(wǎng)絡(luò)能很好地處 理類不平衡問題。
[0085]( - )對發(fā)明步驟S2限定的對靜態(tài)警告進行標注的方法分析:
[0086] 1、缺陷數(shù)據(jù)抽取
[0087]在Jira缺陷跟蹤系統(tǒng)中,一條缺陷有表1.1所示的一系列標簽,這些標簽記錄了這 條缺陷的類型、狀態(tài)、優(yōu)先級、受影響版本等一系列的信息。本發(fā)明所定義的缺陷在Jira系 統(tǒng)中的類型為"Type = BUg",同時為了確保某條缺陷的真實存在,該缺陷必須被開發(fā)人員在 某個版本上進行了修復(fù),其狀態(tài)應(yīng)為"Resolution = Fixed"。本發(fā)明使用一定的檢索策略, 在Jira缺陷跟蹤系統(tǒng)中獲取實驗數(shù)據(jù)中各個版本的缺陷數(shù)據(jù)。該檢索策略使用緊接著的發(fā) 布版本中被修復(fù)的缺陷數(shù)量,作為當前版本中的缺陷數(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. Γ。迭代三個實驗項目中的所有40個版本,我們便得到了驗證實驗所需的軟件缺陷數(shù) 據(jù)。
[0088]表1.1 Jira系統(tǒng)中一條缺陷記錄的標簽
[0090]通過上述的缺陷檢索方法,本發(fā)明得到如下圖5a、5b和5c所示的在實驗項目中各 個版本的缺陷分布圖。在MyFaces項目中,平均每個版本會產(chǎn)生15.6個缺陷;平均每個版本 會有36.3個缺陷出現(xiàn)在Camel項目中;而在CXF項目中,每個缺陷修復(fù)版本平均也會有31.3 個缺陷。從每個版本平均出現(xiàn)的缺陷數(shù)量可以看出,MyFaces項目相對其他兩個項目來說更 加穩(wěn)定些,當然其項目規(guī)模較小是很重要的一方面。另外,從圖中可以看出缺陷分布規(guī)律 為:隨著越來越多的缺陷修復(fù)版本的發(fā)布,軟件系統(tǒng)的缺陷數(shù)量越來越少,越加趨于穩(wěn)定。
[0091] 2、相關(guān)性分析
[0092]經(jīng)過警告標注過程及抽取出各版本的缺陷數(shù)量,本發(fā)明還使用了 JavaNCSS工具獲 取每個版本的代碼行數(shù)。JavaNCSS是一款開源的代碼度量工具,它可以在項目、包、類等層 面上計算Java代碼行數(shù)及圈復(fù)雜度等度量單元。在除以各版本的代碼行數(shù)(KL0C)后,得到 了各個版本中警告、有效警告及缺陷的密度。
[0093]另外在三個實驗項目上,本發(fā)明對警告密度、有效警告密度及缺陷密度這三個變 量進行了分析。本發(fā)明統(tǒng)計了這些變量的最大值、最小值、平均值、中位數(shù)、標準差、偏度系 數(shù)、及標準誤。偏度系數(shù)及標準誤可以有利于我們選擇正確的相關(guān)系數(shù)計算方法,表1.2展 示的統(tǒng)計結(jié)果如下:
[0094]表1.2缺陷密度、警告密度、有效警告密度分析
[0096] 1)在各缺陷修復(fù)版本統(tǒng)計中,MyFaces、Camel、CXF的缺陷密度范圍分別為:0.249 ± 0.272,0.302 ± 0.211,和0.154 ± 0.094。CXF項目中平均每千行代碼有0.154個缺陷,而 Camel項目幾乎是其的兩倍,MyFaces每千行代碼中有0.249個缺陷。相對來說,CXF項目最為 穩(wěn)定,不僅缺陷密度最小,其浮動的范圍也不大,僅為0.094個缺陷每千行代碼。
[0097] 2)警告的密度相對來說很平滑,在MyFaCeS、Camel、CXF三個項目中警告的密度分 別為5.46 ± 0.554,4.4 ± 0.045,5.204± 0.048。也就是說每千行代碼中,各項目平均會有4 ~5個FindBugs中等優(yōu)先級警告。
[0098] 3)經(jīng)過自動化警告標注后,各項目中有效警告的密度極低,僅有平均0.196 土 0·64,0·037±0·047,0·03±0·036個有效警告,分布在在MyFaces、Came 1、CXF三個項目中。
[0099] 通常在相關(guān)性分析時,我們可以使用Spearman等級相關(guān)系數(shù)或皮爾遜相關(guān)系數(shù)方 法,皮爾遜相關(guān)系數(shù)計算方法較為嚴格,要求在變量間呈線性關(guān)系,而Spearman系數(shù)僅要求 變量間存在單調(diào)關(guān)系。另外,當偏度系數(shù)兩倍于標準誤時,使用Spearman系數(shù)效果更好,本 發(fā)明正是通過計算偏度系數(shù)及標準誤來確定使用哪類系數(shù)的。在有效警告密度這一變量的 分析中,三個實驗項目下其偏度系數(shù)都超出了兩倍的標準誤,因此本發(fā)明使用了Spearman 相關(guān)系數(shù)來作為驗證自動化警告標注可行性的指標。
[0100] 3、可行性評估指標
[0101]本發(fā)明使用了SPSS工具計算Spearman等級相關(guān)系數(shù)對警告標注的正確性進行驗 證。統(tǒng)計學中經(jīng)常用P或者^表示該相關(guān)系數(shù),它是衡量兩個變量是否相互依賴的非參數(shù)指 標。該系數(shù)使用單調(diào)方程評價兩個統(tǒng)計變量的相關(guān)性,如果數(shù)據(jù)中沒有重復(fù)值,并且兩個變 量完全單調(diào)相關(guān)時,則Spearman相關(guān)系數(shù)值為+1或-1,且其中+ 1表示兩組變量完全正相 關(guān),_ 1表不其完全負相關(guān)[。
[0102] 我們可以使用有序的、區(qū)間的或比例數(shù)據(jù)變量來計算Spearman等級相關(guān)系數(shù),然 而這兩個統(tǒng)計變量之間需要滿足單調(diào)關(guān)系。單調(diào)關(guān)系表現(xiàn)為:一個變量遞增時,另一個變量 也遞增;或兩個變量同時遞減。如圖6所示.
[0103] 計算Spearman等級相關(guān)系數(shù)前,首先需要對數(shù)據(jù)按等級進行排序,如表1.3所示, 原始數(shù)據(jù)XnYi被轉(zhuǎn)換成等級數(shù)據(jù) Xl,yi。轉(zhuǎn)換過程為將變量中最大的數(shù)標記為1,按遞減序 列依次將其他數(shù)向后排,如Υ:變量經(jīng)過等級排序后得到 yi。需要注意的是,在Χ:變量中存在 連結(jié)數(shù)據(jù),該變量中包含兩個61,按等級排序時,不能確定哪個排3,哪個排4,此時將其排序 都取均值3.5。
[0104] 表1.3數(shù)據(jù)等級計算案例
[0106]經(jīng)過上述排序后,有兩種方法計算Spearman等級相關(guān)系數(shù),一種為有數(shù)據(jù)連結(jié)的 情況,其計算公式為(la)。
[0108]其中cU表示兩變量排序后的差值Xl-yi,n為變量的個數(shù)。另一種計算公式為沒有數(shù) 據(jù)連結(jié)的情況,其計算公式為(lb)。
[0110] 4、有效性結(jié)果分析
[0111] 表1.4展示了三個實驗項目中,警告密度與缺陷密度,以及有效警告密度與缺陷密 度的Spearman等級相關(guān)系數(shù)(P)和其顯著性水平(p-value)。在警告密度與缺陷密度的相關(guān) 系數(shù)中,項目Camel具有最高的系數(shù)值0.783且顯著性水平p-value〈0.05,說明在該項目中 警告的密度對于缺陷來說有很強的指示作用。然而,在項目CXF中該系數(shù)值僅為0.316,該值 并沒有很強的指導(dǎo)意義。另外,項目MyFaces在該系數(shù)上的值為-0.132,這一值違反了開發(fā) 人員的直覺。平均來說,警告密度與缺陷密度的相關(guān)系數(shù)為0.322,顯著性水平為0.298,該 值對于項目或其開發(fā)人員來說,并沒有實際意義。
[0112] 下面分析有效警告密度與缺陷密度相關(guān)性,確認本發(fā)明使用的自動化警告標注方 法的可行性。在該系數(shù)計算中,項目Camel的有效警告密度與缺陷密度的Spearman等級相關(guān) 系數(shù)值最高,達到了〇. 814,且其顯著性水平為0.014遠遠小于0.05,該值說明在Camel項目 中有效警告與軟件的發(fā)布后缺陷存在很強的關(guān)聯(lián),減少或升高有效警告的數(shù)量,都將引起 較大的軟件缺陷數(shù)量上的浮動。同樣,該值在項目MyFaces上為0.782,同樣說明有效警告與 軟件缺陷在MyFaces項目中有很強的聯(lián)系。即使該值最低的項目CXF,也達到0.599,說明有 效警告與缺陷存在強關(guān)聯(lián)。綜合三個實驗項目,有效警告密度與缺陷密度Spearman等級相 關(guān)系數(shù)值為〇. 732,顯著性水平為0.009,該值可以有力地說明經(jīng)過自動化標注的有效警告 與軟件缺陷有很強的內(nèi)在關(guān)聯(lián),消除掉著部分警告將大大減少軟件中缺陷的數(shù)量。同時也 證明了本發(fā)明使用的自動化警告標注方法是正確可行的。
[0113] 表1.4實驗項目下的Spearman等級相關(guān)系數(shù)結(jié)果P
[0115] (二)本發(fā)明給出的靜態(tài)警告分類方法與現(xiàn)有分類方法的有效性評價標準:
[0116] 在有效警告分類應(yīng)用中,分類結(jié)果可由表2.1所示的混淆矩陣表示,其中TP為有效 警告的正確分類數(shù)目,F(xiàn)N為有效警告的誤分類數(shù)目,F(xiàn)P誤報警告的誤分類數(shù)目,TN為誤報警 告的正確分類數(shù)目。在警告分類過程中有兩種類型的誤分類,分別對應(yīng)兩種誤分類代價:誤 分類I將誤報警告分類為有效警告造成的代價Cost:;以及誤分類Π 將有效警告分類為誤報 警告造成的代價Costn,且Costn遠遠大于Cost:。本發(fā)明使用了多種分類度量指標。誤分類 率MR式(2a),該指標用來衡量整體的分類錯誤率;以及有效警告的召回率Recall式(2b),衡 量被正確分類有效警告占所有有效警告的比例。
[0117]表2.1警告分類混淆矩陣
[0121] 同時由于本發(fā)明處理的是代價敏感的分類問題,將誤分類代價考慮在內(nèi)的度量指 標非常必要。本發(fā)明使用式(2c)所示的誤分類期望成本ECM來評估上述三種代價敏感分類 方法以及傳統(tǒng)反向傳播神經(jīng)網(wǎng)絡(luò)在警告分類上的效率。在式(2c)中,Cost^Costn分別表示 兩種誤分類的代價;ErrA將誤報警告分類為有效警告的比例FP/(TN+FP);Er rn為將有效 警告分類為誤報警告的比例FN/(TP+FN);另外在ECM指標中,P〗為誤報警告在測試集中所占 的比例,Ρ Π 有效警告在測試集中所占的比例。
[0122] ECM = CostiErriPi+CostnErrnPn(2c);
[0123] 結(jié)果分析
[0124] 本發(fā)明設(shè)計了兩組對比實驗,且實驗過程中均采用十折交叉驗證取均值的方式來 獲取更精確的分類結(jié)果。為了方便實驗的進行,同時不影響實驗效果的情況下,本發(fā)明將 Cosh取為固定值1,
·取值為固定的范圍[1,50]來進行實驗。該取值能充分反應(yīng)有效 警告及誤報警告被誤分類時,產(chǎn)生的不等代價的問題。
[0125]在第一組實驗中,本發(fā)明設(shè)定Costi = l,Costn = 40,將傳統(tǒng)反向傳播神經(jīng)網(wǎng)絡(luò) BPNN,及三種代價敏感神經(jīng)網(wǎng)絡(luò)CSBNN-〇S、CSBNN-TM、CSBNN-US應(yīng)用到本發(fā)明的三個開源項 目數(shù)據(jù)中,并比較他們的誤分類率MR、有效警告召回率Recall及誤分類期望成本ECM。在第 二組實驗中,設(shè)定Costi = 1,Costn = 50,應(yīng)用上述評價標準,分別比較CSBNN-0S、CSBNN-TM、 CSBNN- US算法在有效警告分類問題上的效率,同時還比較了BPNN方法與三種代價敏感方法 在誤分類期望成本ECM指標上的差異。
[0126] 表2.2為第一組實驗Costi = 1,Costn = 40下的實驗結(jié)果。在本發(fā)明類極不平衡的 數(shù)據(jù)條件下,較BPNN方法而言,三種代價敏感神經(jīng)網(wǎng)絡(luò)方法都能大幅提高有效警告的查全 率Recal 1;而其分類錯誤率MR也相應(yīng)的大幅增加;在誤分類期望成本ECM方面,代價敏感分 類方法在Camel、CXF兩個項目上都優(yōu)于BPNN方法,而在MyFaces項目上確相反;另外從實驗 結(jié)果來看,CSBNN- 0S、CSBNN- TM、CSBNN- US方法在分類效果方面相當。
[0127] 表2.2第一組實驗對比結(jié)果
[0130] 圖3a為MyFaces項目下Costi = l,c〇stn = 50對三種代價敏感方法的比較,實驗結(jié) 果進一步驗證了三種代價敏感方法在Costn代價不斷提高的條件下,最后達到了相當?shù)姆?類效果。CSBNN-〇S、CSBNN-US方法都能快速的將代價信息體現(xiàn)到分類效果中,從圖來看 MyFaces項目在代價Costn = 4左右時,便將有效警告的查全率Recall提高到穩(wěn)定的水平 0.575;而基于閾值操作的方法038順11則要在(:〇8如=25左右時,才能將代價信息引入到 源代碼警告分類中。在分類錯誤率MR評價指標上,三種代價敏感方法都大幅將其提升,這是 誤分類代價更低的誤報警告I被大量歸類為有效警告造成的。三種代價敏感方法在ECM指標 上都高于BPNN方法,但從其走勢上來看,當Costn的值繼續(xù)增長時,代價敏感方法將得到更 低的ECM值。
[0131 ] 圖3b為在Camel項目下Costi = 1,Costn = 50對三種代價敏感方法的比較,其結(jié)果 與項目MyFaces類似,三種代價敏感方法在Costn代價不斷提高的條件下,最后達到了相當 的分類效果。Camel項目下,CSBNN-〇S、CSBNN-US方法同樣在代價Cost n = 4左右時,便將有效 警告的查全率Recall以及誤分類率MR提高到穩(wěn)定的水平,其值分別為0.7057和0.9179。同 樣的,CSBNN-TM方法在Cost n = 15左右時,才將代價信息體現(xiàn)到分類效果中。三種代價敏感 方法在ECM指標上都在Costn = 25左右時,優(yōu)于BPNN方法。
[0132] 圖3c為在項目CXF下Costi = l,Costn = 50對三種代價敏感方法的比較,與之前討 論的兩個實驗項目結(jié)果相似,三種代價敏感方法在Costn代價不斷提高時,最后達到了相當 的分類效果。在代價Cost n = 4左右,CSBNN-〇S、CSBNN-US方法的有效警告分類查全率Recall 以誤分類率MR就達到了穩(wěn)定的水平,且其值分別穩(wěn)定在0.88和0.9091 XSBNN-TM方法則在 Costn = 8左右時,才將代價信息體現(xiàn)到分類效果中;并且在Costn = 15左右時,有效警告分 類查全率Recall以誤分類率MR達到了穩(wěn)定的水平。在ECM指標上,當Costn = 13左右時,三種 代價敏感神經(jīng)網(wǎng)絡(luò)方法相對于普通BPNN方法來說得到了更優(yōu)秀的結(jié)果。
[0133] 實驗結(jié)果進一步驗證了三種代價敏感方法在Costn代價不斷提高的條件下,最后 達到了相當?shù)姆诸愋ЧT诒景l(fā)明的實驗數(shù)據(jù)基礎(chǔ)上,CSBNN-〇S、CSBNN-TM、CSBNN-US在 Recall評估標準上最后都達到了一致的水平,且平均提高了44.07%。由于當Costn增大時 三種代價敏感方法都將把大量誤報警告分類為有效警告,同時造成誤分類率的顯著提升。 與CSBNN-〇S、CSBNN-US方法能快速達到較高且平穩(wěn)的誤分類率MR與查全率Recall不同, CSBNN-TM方法增長速度更緩慢,這是因為CSBNN-〇S、CSBNN-US方法按相應(yīng)的代價比例重新 分布訓練樣本,能更快的將代價體現(xiàn)到分類實踐中。如當Costn/CostiSl時,CSBNN-OS、 CSBNN-US方法將誤報警告和有效警告訓練樣本數(shù)量比例變?yōu)?,勢必影響分類效果而提高 查全率Recal 1,然而CSBNN- TM的輸出仍為普通BPNN的輸出對查全率Recal 1沒有影響。相應(yīng) 的CSBNN-TM方法在Costn為20之前,誤分類期望成本ECM較之另外兩種代價敏感分類方法更 低,同時當于一定值時,BPNN方法的誤分類期望成本ECM將高于代價敏感神 經(jīng)網(wǎng)絡(luò)分類方法。
[0134]最后說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較 佳實施例對本發(fā)明進行了詳細說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解,可以對本發(fā)明的技 術(shù)方案進行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本 發(fā)明的權(quán)利要求范圍當中。
【主權(quán)項】
1. 基于闊值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,其特征在于,包括如下步驟: S1:使用FindBugs工具對目標軟件一系列版本的jar文件進行分析,得到目標軟件的靜 態(tài)警告; S2:對步驟S1獲得的靜態(tài)警告進行標注; S2a:將目標軟件一系列版本中,相鄰兩個版本中靜態(tài)警告進行兩兩對比,如果前一個 版本中警告在后一個版本中消失則認為該警告是有效警告;反之,如果前一個版本中的警 告在后一個版本中仍然存在則認為該警告是誤報警告; S2b:將有效警告中重復(fù)的有效警告剔除后,剩下的所有的有效警告構(gòu)成有效警告集, 將所有誤報警告中重復(fù)的誤報警告剔除后,剩下的所有誤報警告構(gòu)成誤報警告集,有效警 告集和誤報警告集構(gòu)成樣本集;有效警告集中的有效警告和無效警告集中的無效警告均為 樣本集中的樣本; S3:采用BP神經(jīng)網(wǎng)絡(luò),使用樣本集中的樣本訓練分類器,采用該分類器對樣本集中的所 有樣本進行分類,計算得到用于預(yù)測有效警告或誤報警告的真實類別概率值,采用闊值操 作的方式對所述真實類別概率值進行調(diào)整得到新類別概率值,然后使用該新類別概率值對 樣本集中的所有樣本進行預(yù)測分類,將樣本集中的所有樣本預(yù)測為有效警告或誤報警告。2. 如權(quán)利要求1所述的基于闊值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,其特征在 于,所述步驟S3具體如下: 采用闊值操作的方式對樣本集中的所有樣本進行預(yù)測分類; a) 令 r=l; b) 從樣本集中選取十分之九分的樣本構(gòu)成訓練樣本集Qr,剩下十分之一的樣本構(gòu)成測 試樣本集Pr,且Qr聲Qr-l,Pr聲Pr-l; c) 采用BP神經(jīng)網(wǎng)絡(luò)對訓練樣本集Qr進行訓練得到分類器,然后將測試樣本集Pr中的測 試樣本依次輸入該分類器,計算得到用于預(yù)測有效警告或誤報警告的真實類別概率值為 化,i e {I,Π },見ao《化《1,其中,Οι表示測試樣本被預(yù)測為誤報警告的真 實類別概率值,On表示測試樣本被預(yù)測為有效警告的真實類別概率值; d) 對分類器預(yù)測輸出的真實類別概率值做闊值操作得到新類別概率值,如公式(2):其中,(y表示經(jīng)過闊值操作后的預(yù)測有效警告或誤報警告的新類別概率值,η為歸一化 項,使福10 <0,4 < 1,其中,表示經(jīng)過闊值操作后測試樣本被預(yù)測為誤 報警告的新類別概率值,表示經(jīng)過闊值操作后測試樣本被預(yù)測為有效警告的新類別概 率值; e) 然后根據(jù)步驟d)得到的新類別概率對測試樣本集Pr中的測試樣本進行預(yù)測分類,如 果> (?則認為測試樣本集P沖的測試樣本為誤報警告,否則為有效警報,然后將測試 樣本集中所有經(jīng)過預(yù)測分類的樣本輸出; f) 判斷樣本集中所有樣本是否都經(jīng)過預(yù)測分類,如果是則結(jié)束,否則執(zhí)行下一步; g)令r = r+l,并返回步驟b)。3.如權(quán)利要求2所述的基于闊值操作的代價敏感神經(jīng)網(wǎng)絡(luò)的警告分類方法,其特征在 Costu 于,所述步驟d)中,限定的取值為[25,50 ]。 Cost^
【文檔編號】G06K9/62GK106096635SQ201610392772
【公開日】2016年11月9日
【申請日】2016年6月6日 公開號201610392772.3, CN 106096635 A, CN 106096635A, CN 201610392772, CN-A-106096635, CN106096635 A, CN106096635A, CN201610392772, CN201610392772.3
【發(fā)明人】葛永新, 潘志輝, 徐玲, 洪明堅, 楊夢寧, 張小洪, 楊丹, 王洪星, 黃晟
【申請人】重慶大學