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

基于聯(lián)合特征分布匹配的跨項(xiàng)目缺陷預(yù)測

2024-01-22 06:04:24邱少健鄒全義
關(guān)鍵詞:語義特征方法

邱少健,陸 璐,鄒全義

(1.華南農(nóng)業(yè)大學(xué) 數(shù)學(xué)與信息學(xué)院,廣東 廣州 510640;2.華南理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣東 廣州 510006;3.華南理工大學(xué) 現(xiàn)代產(chǎn)業(yè)技術(shù)研究院,廣東 中山 528400;4.華南理工大學(xué) 軟件學(xué)院,廣東 廣州 510006)

0 引 言

隨著現(xiàn)代軟件的規(guī)模和復(fù)雜性不斷增加,軟件質(zhì)量保障團(tuán)隊(duì)的任務(wù)變得更加繁重。因此,研究人員開始探索軟件缺陷預(yù)測方法,將歷史缺陷數(shù)據(jù)與機(jī)器學(xué)習(xí)相結(jié)合,訓(xùn)練缺陷預(yù)測模型,分析軟件缺陷分布[1-3]。在實(shí)際軟件缺陷預(yù)測場景中,由于標(biāo)注數(shù)據(jù)稀缺,新的缺陷預(yù)測任務(wù)容易遇到訓(xùn)練數(shù)據(jù)不足的問題[4],因此學(xué)者們提出更具實(shí)用價(jià)值的跨項(xiàng)目缺陷預(yù)測方法,將成熟項(xiàng)目(源項(xiàng)目)中較為豐富的標(biāo)注數(shù)據(jù)作為訓(xùn)練集,用于構(gòu)建新項(xiàng)目(目標(biāo)項(xiàng)目)缺陷預(yù)測模型[5,6]。

目前,多數(shù)跨項(xiàng)目缺陷預(yù)測方法采用的代碼特征是基于人為選擇的Handcrafted特征[6-9]和基于深度學(xué)習(xí)提取的代碼語義特征[10-12],前者主要涵蓋代碼的靜態(tài)統(tǒng)計(jì)信息,后者主要涵蓋代碼的結(jié)構(gòu)語義信息。若單獨(dú)使用上述兩類特征進(jìn)行缺陷預(yù)測模型構(gòu)建,可能存在信息不完備問題。此外,多數(shù)跨項(xiàng)目缺陷預(yù)測研究引入了遷移學(xué)習(xí)方法,通過減少源項(xiàng)目和目標(biāo)項(xiàng)目之間的分布差異提高缺陷預(yù)測性能[13-18]。然而,如圖1舉例所示(圖中虛線和空心圖形表示為源項(xiàng)目及其實(shí)例,實(shí)線和實(shí)心形狀表示為目標(biāo)項(xiàng)目及其實(shí)例;加號為正標(biāo)記實(shí)例,橫線為負(fù)標(biāo)記實(shí)例。),目前多數(shù)研究只考慮源項(xiàng)目和目標(biāo)項(xiàng)目的實(shí)例分布相似性,當(dāng)經(jīng)過實(shí)例分布適配的源項(xiàng)目和目標(biāo)項(xiàng)目實(shí)例混合時(shí),不同類別實(shí)例仍可能很接近,導(dǎo)致模型決策邊界的模糊預(yù)測,使得預(yù)測效果無法提高。

圖1 項(xiàng)目數(shù)據(jù)混合時(shí)模型決策邊界的模糊

如上所述,目前基于跨項(xiàng)目缺陷預(yù)測方法存在數(shù)據(jù)特征不完備和數(shù)據(jù)分類邊界模糊的問題。針對這兩個(gè)問題,提出一種基于聯(lián)合特征的雙編碼器分布匹配方法DeDM-JF(joint feature-based dual-encoder distribution matching method),首先利用深度學(xué)習(xí)從項(xiàng)目代碼抽象語法樹中提取結(jié)構(gòu)語義特征,并將其與Handcrafted特征結(jié)合,形成聯(lián)合特征。在此基礎(chǔ)上,構(gòu)建包含分布差異匹配層的雙自編碼器,分別學(xué)習(xí)跨項(xiàng)目的全局和局部可遷移特征表示,并通過迭代式的差異匹配,增強(qiáng)跨項(xiàng)目代碼特征的可遷移性,提高跨項(xiàng)目軟件缺陷預(yù)測模型準(zhǔn)確性。實(shí)驗(yàn)結(jié)果表明,DeDM-JF較于最新算法相比,具備更好的缺陷預(yù)測準(zhǔn)確性。

1 相關(guān)工作

1.1 代碼特征提取技術(shù)

不同類型的軟件特征度量元所蘊(yùn)含的數(shù)據(jù)信息不同,構(gòu)建軟件缺陷預(yù)測模型時(shí),根據(jù)使用不同的特征集合,將對模型的性能有著直接的影響。目前多數(shù)跨項(xiàng)目缺陷預(yù)測方法采用的特征是人為選擇的Handcrafted特征[7-9],如基于運(yùn)算符和操作數(shù)的Halstead特征、基于代碼依賴特性的McCabe特征[8]和基于面向?qū)ο蟾拍畹腃K特征等。近年來,有學(xué)者提出軟件代碼中的結(jié)構(gòu)語義特征與缺陷緊密相關(guān),可被用于構(gòu)建軟件缺陷預(yù)測模型[10-12]。滑鐵盧大學(xué)的Wang等[10]和香港中文大學(xué)的Li等[11]分別嘗試通過深度置信網(wǎng)絡(luò)DBN(deep belief network)和卷積神經(jīng)網(wǎng)絡(luò)CNN(convolutional neural network),從軟件代碼形成的抽象語法樹中提取代碼的結(jié)構(gòu)語義特征,并將其應(yīng)用到軟件缺陷預(yù)測模型的構(gòu)建當(dāng)中。Omri等[12]綜合分析了深度學(xué)習(xí)技術(shù)對代碼特征提取的作用,解釋了深度學(xué)習(xí)提取的信息如何彌合代碼結(jié)構(gòu)語義和缺陷特征之間的鴻溝。上述基于人為選擇的Handcrafted特征主要涵蓋了代碼的靜態(tài)統(tǒng)計(jì)信息,基于深度學(xué)習(xí)提取的特征主要涵蓋了代碼的結(jié)構(gòu)語義信息,單獨(dú)使用一類時(shí)可能存在特征不完備的問題,將兩者相結(jié)合所形成聯(lián)合特征的效果,值得進(jìn)一步探索。

1.2 基于分布適配的跨項(xiàng)目缺陷預(yù)測

在進(jìn)行跨項(xiàng)目缺陷預(yù)測時(shí),多數(shù)研究引入了遷移學(xué)習(xí)方法,嘗試通過減少源項(xiàng)目和目標(biāo)項(xiàng)目之間的分布差異提高跨項(xiàng)目缺陷預(yù)測性能,此類方法是基于分布適配的跨項(xiàng)目缺陷預(yù)測方法[13-18]。為了探索基于分布適配的跨項(xiàng)目缺陷預(yù)測方法有效性,Nam等[15]提出了一種基于遷移成分分析的方法TCA(transfer component analysis),將源項(xiàng)目和目標(biāo)項(xiàng)目的數(shù)據(jù)映射到再生核希爾伯特空間當(dāng)中,尋找項(xiàng)目數(shù)據(jù)分布差異最小的空間,實(shí)現(xiàn)了跨項(xiàng)目間數(shù)據(jù)的分布適配。Li等[16]在跨項(xiàng)目缺陷預(yù)測中的遷移和分類環(huán)節(jié)分別實(shí)現(xiàn)參數(shù)的自動優(yōu)化,從而提高遷移適配的效果和預(yù)測的準(zhǔn)確度;Qiu等[17]引入了基于聯(lián)合分布的核均值匹配方法,探索同時(shí)減少源項(xiàng)目和目標(biāo)項(xiàng)目之間的邊緣和條件概率分布的方法,提高缺陷預(yù)測性能。Xu等[18]提出基于BDA(balanced distribution adaptation)的跨項(xiàng)目缺陷預(yù)測方法,在減少聯(lián)合分布差異的同時(shí),自適應(yīng)地為數(shù)據(jù)分配了不同的權(quán)重。上述基于概率分布適配的方法中,往往只考慮源項(xiàng)目和目標(biāo)項(xiàng)目的實(shí)例分布相似性(全局分布),然而,當(dāng)經(jīng)過全局分布適配的源項(xiàng)目和目標(biāo)項(xiàng)目實(shí)例混合時(shí),很可能出現(xiàn)不同類別實(shí)例很接近的情況[19],導(dǎo)致模型決策邊界的模糊預(yù)測,使得預(yù)測效果無法提高。因此源項(xiàng)目和目標(biāo)項(xiàng)目數(shù)據(jù)同類別的局部分布也應(yīng)進(jìn)行適配。

2 聯(lián)合特征分布匹配方法

為了解決現(xiàn)有基于跨項(xiàng)目缺陷預(yù)測方法中存在的數(shù)據(jù)特征不完備和數(shù)據(jù)分類邊界模糊的問題,提出了DeDM-JF方法。方法首先利用CNN從項(xiàng)目代碼中提取與缺陷有關(guān)的結(jié)構(gòu)語義特征,并將其與項(xiàng)目Handcrafted特征結(jié)合形成聯(lián)合特征;進(jìn)一步地,構(gòu)建兩個(gè)自編碼器分別學(xué)習(xí)跨項(xiàng)目的全局和局部可遷移特征;最后利用聯(lián)合可遷移特征訓(xùn)練模型并開展缺陷預(yù)測。

圖2為DeDM-JF方法框架示意圖,框架輸入為源項(xiàng)目和目標(biāo)項(xiàng)目的代碼實(shí)例,輸出為對目標(biāo)項(xiàng)目中的代碼實(shí)例進(jìn)行有無缺陷的預(yù)測。DeDM-JF框架整體進(jìn)行端到端的預(yù)測任務(wù),依次包括6個(gè)步驟:代碼解析、向量轉(zhuǎn)換、結(jié)構(gòu)語義特征提取、聯(lián)合特征構(gòu)建、全局和局部可遷移特征學(xué)習(xí),模型訓(xùn)練及缺陷預(yù)測。

圖2 基于聯(lián)合特征的雙編碼器分布匹配方法DeDM-JF的框架

2.1 代碼解析

在諸如文本分類的自然語言處理任務(wù)中[21],單詞被視為句子中的基本單位,句子是多個(gè)單詞的序列。但是,在編程語言的處理場景中,用對待自然語言相同的方式分析文件和代碼往往效果不佳:首先,編程語言執(zhí)行順序不一定是順序結(jié)構(gòu),文件頭部編寫的函數(shù),可能在文件最末尾才被執(zhí)行;其次,編程語言中的變量、方法和類的命名相對自由,命名內(nèi)容是無限多的(例如,表示“最大值”變量可以命名為“max”或“maxValue”),相比之下,自然語言的單詞數(shù)量通常是有限的。上述兩點(diǎn)體現(xiàn)了編程語言和自然語言的差異,因此需要找到一種合理的代碼表示方法用以編程語言中結(jié)構(gòu)語義特征的提煉。目前,抽象語法樹被驗(yàn)證是較為可行的代碼表示方法,將抽象語法樹節(jié)點(diǎn)視為代碼片段中的基本單位,可進(jìn)行代碼的結(jié)構(gòu)語義進(jìn)行分析。在此步驟中,方法應(yīng)用基于Python的Javalang工具包對Java文件進(jìn)行解析,得到抽象語法樹。Java代碼片段中的每個(gè)結(jié)構(gòu)元素都表示為了抽象語法樹的節(jié)點(diǎn),遍歷抽象語法樹可將其轉(zhuǎn)換為節(jié)點(diǎn)序列。

需要注意的是,抽象語法樹內(nèi)部有多種類型的樹節(jié)點(diǎn),但并非所有節(jié)點(diǎn)類型都與代碼缺陷有關(guān),參考文獻(xiàn)[11],對節(jié)點(diǎn)類型進(jìn)行了選擇和歸類,表1顯示了方法使用節(jié)點(diǎn)的類別和類型。通過此步驟中代碼解析操作后,可得到與輸入代碼文件數(shù)量一致的節(jié)點(diǎn)Token向量。

表1 方法采用的AST節(jié)點(diǎn)類型

2.2 向量轉(zhuǎn)換

神經(jīng)網(wǎng)絡(luò)模型要求輸入的訓(xùn)練數(shù)據(jù)為數(shù)字向量,因此Token向量并不能直接作為神經(jīng)網(wǎng)絡(luò)的輸入。在此步驟中,需將Token節(jié)點(diǎn)序列轉(zhuǎn)換為數(shù)字向量的格式。方法首先將源項(xiàng)目和目標(biāo)項(xiàng)目的節(jié)點(diǎn)和整數(shù)值之間構(gòu)建統(tǒng)一的“節(jié)點(diǎn)-整數(shù)映射“的字典,以實(shí)現(xiàn)同一類節(jié)點(diǎn)可以具有相同的整數(shù)值。此外,神經(jīng)網(wǎng)絡(luò)要求輸入的向量都具有相同的長度,參考文獻(xiàn)[10]的方法,此步驟中使用數(shù)字零填充每個(gè)向量到最長向量的長度,保證向量長度的一致性。最終形成的整數(shù)向量集合作為神經(jīng)網(wǎng)絡(luò)的輸入。

2.3 結(jié)構(gòu)語義特征提取

方法基于深度神經(jīng)網(wǎng)絡(luò)提取數(shù)據(jù)非結(jié)構(gòu)化信息的特性,利用CNN挖掘代碼語法樹中與缺陷相關(guān)的結(jié)構(gòu)語義特征。

此步驟構(gòu)建的CNN模型接收由代碼抽象語法樹轉(zhuǎn)化而成的整數(shù)向量作為輸入數(shù)據(jù),其包括一層嵌入層,一層一維卷積層,一層最大池化層,一層全連接隱含層和一層單元輸出層。其中嵌入層的作用是將輸入的整數(shù)向量中的整數(shù)元素轉(zhuǎn)換成向量,進(jìn)而得到代表代碼片段的矩陣,一組矩陣之間的距離反映對應(yīng)代碼片段的相似程度;卷積層和池化層的作用是挖掘代碼中的局部特征;隱含層和輸出層用以判斷當(dāng)前輪次迭代的有效性。方法實(shí)現(xiàn)使用Pytorch[22]構(gòu)建CNN模型,除了輸出層使用Sigmoid函數(shù)作為激活函數(shù)以外,其它層都使用ReLU函數(shù)作為激活函數(shù)。方法以小批量隨機(jī)梯度下降作為優(yōu)化策略,使用Adam算法作為優(yōu)化器調(diào)整特征學(xué)習(xí)的曲線。最終,此步驟所構(gòu)建的CNN模型可將源項(xiàng)目和目標(biāo)項(xiàng)目中的實(shí)例轉(zhuǎn)化為由代碼結(jié)構(gòu)語義特征表示的形式。

2.4 聯(lián)合特征構(gòu)建

為了保留Handcrafted特征集合中所攜帶的代碼復(fù)雜度相關(guān)信息,方法將CNN生成的結(jié)構(gòu)語義特征和Handcrafted特征相結(jié)合形成聯(lián)合特征。通過基于Python的concrete方法進(jìn)行結(jié)合操作,獲得的聯(lián)合特征作為下一步驟的輸入。

2.5 全局和局部可遷移特征學(xué)習(xí)

邊緣化去噪自動編碼器通過破壞原始特征空間后重新構(gòu)建新的特征空間,學(xué)習(xí)一個(gè)映射矩陣W從數(shù)據(jù)集合獲得更高級別的特征表示。此步驟中,分別構(gòu)建全局特征學(xué)習(xí)自編碼器和局部特征學(xué)習(xí)自編碼器。在自編碼器堆棧層學(xué)習(xí)層中,兩個(gè)自編碼器分別實(shí)現(xiàn)了跨項(xiàng)目數(shù)據(jù)全局和局部的匹配分布。全局特征學(xué)習(xí)自編碼器用于獲得可遷移的全局特征表示,局部特征學(xué)習(xí)自編碼器用于獲得可遷移的局部特征表示。

DeDM-JF方法采用最大均值差異(maximum mean discrepancy,MMD)進(jìn)行分布差異的度量[24],且在匹配分布差異時(shí),同時(shí)考慮了邊緣和條件分布概率差異。

基于邊緣條件概率分布的MMDmar計(jì)算方式如下

(1)

基于條件概率分布差異的MMDcon計(jì)算方式如下

(2)

MMDcon解析方式同MMDmar。 其中l(wèi)∈C, 為計(jì)算條件概率分布差異時(shí)的標(biāo)注取值。值得注意的是,由于在實(shí)際場景中,目標(biāo)項(xiàng)目的標(biāo)注是未知的,DeDM-JF方法引入偽標(biāo)注的方法[17]輔助計(jì)算條件概率分布差異。

具體地,根據(jù)源項(xiàng)目中的標(biāo)注知識和目標(biāo)項(xiàng)目中的偽標(biāo)注知識將源項(xiàng)目和目標(biāo)項(xiàng)目劃分為不同的局部子集,進(jìn)而引入標(biāo)注信息進(jìn)行特征表示優(yōu)化和概率分布匹配。方案假設(shè)使用偽標(biāo)注計(jì)算的條件概率分布與真實(shí)的條件概率分布接近,并在實(shí)現(xiàn)過程中通過迭代的形式,優(yōu)化偽標(biāo)注的有效性,從而提高分布匹配的準(zhǔn)確性。最后,兩個(gè)自編碼器生成的全局和局部特征表示組合形成了聯(lián)合可遷移特征,在該特征上,跨項(xiàng)目數(shù)據(jù)的全局特征和局部特征的分布差異被最小化。全局和局部特征學(xué)習(xí)自編碼器相關(guān)說明如下。

(1)全局特征學(xué)習(xí)自編碼器

全局特征學(xué)習(xí)自編碼器旨在學(xué)習(xí)映射矩陣W, 用以構(gòu)建全局可遷移特征空間。依據(jù)自編碼器構(gòu)建方法,結(jié)合邊緣概率分布和條件概率分布的MMD差異度量,自編碼器構(gòu)建的目標(biāo)函數(shù)為

(3)

(2)局部特征學(xué)習(xí)自編碼器

在傳統(tǒng)基于跨項(xiàng)目缺陷知識遷移研究中沒有考慮屬于同一類別但來自不同的項(xiàng)目的實(shí)例分布差異。為了減小此差異并促進(jìn)跨項(xiàng)目預(yù)測模型的性能,DeDM-JF方法在全局特征學(xué)習(xí)自編碼器的基礎(chǔ)上,同時(shí)構(gòu)建局部特征學(xué)習(xí)自編碼器提取局部子集的特征表示。首先,方法根據(jù)標(biāo)注和偽標(biāo)注將源項(xiàng)目實(shí)例和目標(biāo)項(xiàng)目實(shí)例劃分為不同的局部子集。其次,通過匹配局部子集分布并重構(gòu)局部子空間的特征學(xué)習(xí)自編碼器,獲得不同子集的可遷移局部特征表示。關(guān)于標(biāo)注l的局部特征學(xué)習(xí)自編碼器目標(biāo)函數(shù)為

(4)

2.6 模型訓(xùn)練及缺陷預(yù)測

通過上述步驟,每個(gè)代碼文件可形成相應(yīng)的可遷移聯(lián)合特征實(shí)例。由于DeDM-JF方法重點(diǎn)關(guān)注聯(lián)合特征和全局和局部可遷移特征對跨項(xiàng)目缺陷預(yù)測有效性的影響,參考文獻(xiàn)[10,11],選用邏輯回歸作為基分類器進(jìn)行軟件缺陷預(yù)測。在上述步驟基礎(chǔ)上,將源項(xiàng)目生成的實(shí)例作為訓(xùn)練集訓(xùn)練邏輯回歸分類器,用于預(yù)測目標(biāo)項(xiàng)目的實(shí)例是否有缺陷。

3 實(shí) 驗(yàn)

3.1 數(shù)據(jù)集

為了評估DeDM-JF的有效性,基于公開軟件數(shù)據(jù)庫PROMISE[20]中的10個(gè)Java開源項(xiàng)目(合計(jì)30個(gè)項(xiàng)目版本)開展實(shí)驗(yàn),表2列出了10個(gè)項(xiàng)目和對應(yīng)版本的基本信息,這些項(xiàng)目在近年來的軟件缺陷預(yù)測研究中被廣泛使用。PROMISE數(shù)據(jù)庫中,每個(gè)項(xiàng)目都包含Java文件的集合,它們分別具有20個(gè)Handcrafted代碼特征(其詳細(xì)說明可以在文獻(xiàn)[20]中查看)和一個(gè)標(biāo)注(有無缺陷的標(biāo)注)。而每個(gè)項(xiàng)目的源代碼都從對應(yīng)項(xiàng)目的官方網(wǎng)站進(jìn)行下載。為了盡可能驗(yàn)證實(shí)驗(yàn)結(jié)論的通用性,數(shù)據(jù)集由不同大小(實(shí)例數(shù)范圍從109到965個(gè))和缺陷率(缺陷率最小值為2.24%,最大值為98.79%)的10個(gè)項(xiàng)目組成。在跨項(xiàng)目缺陷預(yù)測任務(wù)中,給定一個(gè)目標(biāo)版本項(xiàng)目作為測試數(shù)據(jù),分別使用其它9個(gè)項(xiàng)目的不同版本作為源項(xiàng)目(例如,使用ivy-1.4項(xiàng)目的數(shù)據(jù)作為訓(xùn)練集,使用camel-1.2的數(shù)據(jù)作為測試集)。在實(shí)驗(yàn)中一共可執(zhí)行798對跨項(xiàng)目缺陷預(yù)測任務(wù)。

表2 實(shí)驗(yàn)數(shù)據(jù)集

事實(shí)上,軟件缺陷數(shù)據(jù)的類不平衡問題是跨項(xiàng)目缺陷預(yù)測任務(wù)中的一個(gè)典型特征[25]。如表2中平均缺陷率所示,軟件項(xiàng)目作為訓(xùn)練數(shù)據(jù)時(shí)存在類不平衡問題。如果分類器是在高度不平衡的數(shù)據(jù)集上訓(xùn)練的,則預(yù)測模型往往支持多數(shù)類,而檢測少數(shù)類的能力較弱。為此,有必要處理類不平衡問題。由于類不平衡學(xué)習(xí)僅為實(shí)驗(yàn)中的一個(gè)應(yīng)用,方法采用標(biāo)準(zhǔn)的隨機(jī)過采樣來避免類別不平衡問題。

3.2 評價(jià)標(biāo)準(zhǔn)

實(shí)驗(yàn)采用F-measure和馬修斯相關(guān)系數(shù)MCC(matthews correlation coefficient)評定各模型的性能。目前,F(xiàn)-measure和MCC被廣泛地應(yīng)用于軟件缺陷預(yù)測研究中,其相關(guān)定義如下。

在二分類軟件缺陷預(yù)測任務(wù)中,模型對無標(biāo)注實(shí)例是否具有缺陷進(jìn)行預(yù)測,可以得到4種實(shí)驗(yàn)結(jié)果:將真正有缺陷的實(shí)例分類為有缺陷(真陽性,TP);將真正無缺陷的實(shí)例分類為有缺陷(假陽性,F(xiàn)P);將真正有缺陷的實(shí)例分類為無缺陷(假陰性,F(xiàn)N);將真正無缺陷的實(shí)例分類為無缺陷(真陰性,TN)。基于這4個(gè)結(jié)果,F(xiàn)-measure和馬修斯相關(guān)系數(shù)定義如下:

F-measure,是精確率Precision和召回率Recall的調(diào)和評估指標(biāo)。其中,精確率表示正確標(biāo)記為有缺陷的數(shù)量占那些真正有缺陷的實(shí)例數(shù)量的比例,召回率是正確標(biāo)記的缺陷實(shí)例的比例。F-measure是精確率和召回率的雙重評估,以評估實(shí)驗(yàn)中的各種方法

(5)

(6)

(7)

MCC評定性能時(shí),綜合考慮TP、TN、FP和FN,是一個(gè)較為均衡的指標(biāo),其通過考慮所有真假的有缺陷和無缺陷預(yù)測結(jié)果,衡量預(yù)測結(jié)果和實(shí)際結(jié)果之間的關(guān)系。它的取值范圍在[-1,1],取值為1表示預(yù)測與實(shí)際完全一致,取值為-1表示預(yù)測與實(shí)際完全不一致

(8)

3.3 實(shí)驗(yàn)設(shè)置

為了評估DeDM-JF的性能,探討以下兩個(gè)研究問題:

(1)研究問題1:在跨項(xiàng)目缺陷預(yù)測任務(wù)中,DeDM-JF能否比基于Handcrafted和結(jié)構(gòu)語義特征,以及傳統(tǒng)遷移學(xué)習(xí)的方法表現(xiàn)更好?

(2)研究問題2:聯(lián)合特征和全局局部分布匹配這兩種機(jī)制每一種對DeDM-JF的性能有多大貢獻(xiàn)?

因此,選擇兩類的比較方法:

(1)使用Handcrafted特征的跨項(xiàng)目缺陷預(yù)測的方法:

Baseline:傳統(tǒng)的缺陷預(yù)測方法,僅使用Handcrafted特征構(gòu)建分類器。

KMM(kernel mean matching):基于核均值匹配的遷移學(xué)習(xí)算法[25],通過對源項(xiàng)目實(shí)例進(jìn)行權(quán)重調(diào)整以減少源組件和目標(biāo)項(xiàng)目之間的分布差異。

DG(data gravitation):預(yù)測模型是基于加權(quán)訓(xùn)練數(shù)據(jù)建立的,源項(xiàng)目數(shù)據(jù)權(quán)重通過數(shù)據(jù)引力計(jì)算[14]。

TCA:一種經(jīng)典的可遷移特征學(xué)習(xí)方法[12],被廣泛運(yùn)用于近年基于分布適配的跨項(xiàng)目缺陷預(yù)測研究中。

SSTCA:TCA算法的變體,引入半監(jiān)督學(xué)習(xí)方法改進(jìn)可遷移成分的分析過程[16]。

(2)基于結(jié)構(gòu)語義特征的跨項(xiàng)目缺陷預(yù)測方法:

DBN:通過標(biāo)準(zhǔn)DBN模型提取項(xiàng)目代碼中的結(jié)構(gòu)語義特征。DBN的實(shí)現(xiàn),采用了與文獻(xiàn)[10]中相同的網(wǎng)絡(luò)架構(gòu)和參數(shù),即10個(gè)隱藏層和每個(gè)隱藏層中的100個(gè)節(jié)點(diǎn)。

CNN:通過標(biāo)準(zhǔn)CNN提取結(jié)構(gòu)語義特征的跨項(xiàng)目缺陷預(yù)測方法。實(shí)現(xiàn)CNN時(shí),參考文獻(xiàn)[11],設(shè)置batch size為32,epoch數(shù)為15,embedding維數(shù)為30,隱藏節(jié)點(diǎn)數(shù)為100,過濾器數(shù)為10,過濾器長度為5。

CNN-TL:通過CNN提取特征后,通過TCA算法減少跨項(xiàng)目數(shù)據(jù)的分布差異。

DPCNN(defect prediction via CNN):CNN的一種變體,它將 CNN 學(xué)習(xí)到的特征與Handcrafted特征結(jié)合起來。

DPCNN-TL:通過DPCNN實(shí)現(xiàn)特征提取,通過TCA算法減少跨項(xiàng)目數(shù)據(jù)分布差異。

在實(shí)驗(yàn)中,統(tǒng)一使用邏輯回歸作為所有模型的基本分類器。在Matlab中使用了基于Linlinear庫的邏輯回歸實(shí)現(xiàn)方法,采用了默認(rèn)參數(shù)設(shè)置。考慮到過采樣的過程涉及隨機(jī)性,因此每種方法執(zhí)行了30次,并記錄了平均結(jié)果。

此外,在實(shí)驗(yàn)比較中由于某些數(shù)據(jù)集傾向于生成性能過好或性能不佳的模型,因此實(shí)驗(yàn)采用了Scott-Knott ESD(Scott-Knott effect size difference)測試[26]比較不同的模型性能。Scott-Knott ESD測試是一種基于均值的統(tǒng)計(jì)分析和比較方法,它使用聚類將一組指標(biāo)(例如實(shí)驗(yàn)的評價(jià)指標(biāo)F-measure和MCC)劃分為具有不可忽略差異的統(tǒng)計(jì)差異組。Scott-Knott ESD測試包括兩個(gè)步驟:①查找一個(gè)分區(qū),使測量值最大化組之間的測量值;②將兩個(gè)組劃分為兩個(gè)組或合并為一個(gè)組。有關(guān)Scott-Knott ESD測試的詳細(xì)流程描述,請參閱文獻(xiàn)[26]。

3.4 實(shí)驗(yàn)結(jié)果和分析

圖3展示了實(shí)驗(yàn)中Scott-Knott ESD測試結(jié)果(由包括10個(gè)項(xiàng)目所形成的798組跨項(xiàng)目軟件缺陷預(yù)測任務(wù)結(jié)果形成)。通過綜合觀察,DeDM-JF在實(shí)驗(yàn)中優(yōu)于其它10種對比方法。以下是兩個(gè)研究問題的回答。

圖3 方法比較的Scott-Knott ESD測試結(jié)果

(1)研究問題1的回答:在跨項(xiàng)目缺陷預(yù)測任務(wù)中,DeDM-JF能否比基于Handcrafted和語義特征,以及傳統(tǒng)遷移學(xué)習(xí)的方法表現(xiàn)更好?

從圖3中可以觀察到,無論是F-measure指標(biāo)還是MCC指標(biāo),在大多數(shù)預(yù)測任務(wù)中DeDM-JF模型的預(yù)測性能都優(yōu)于其它方法。利用DeDM-JF時(shí),實(shí)驗(yàn)中798組跨項(xiàng)目缺陷預(yù)測任務(wù)的F-measure(MCC)指標(biāo)平均值為0.493(0.274)之間。較于Baseline、KMM、DG、TCA、SSTCA、DBN、CNN、CNN-TL、DPCNN和DPCNN-TL分別高出了12.9%(67.5%)、10.7%(39.3%)、6.2%(27.3%)、6.3%(51.7%)、6.2%(53.1%)、23.8%(230.3%)、7.1%(28.6%)、3.8%(13.1%)、10.8%(56.4%)和3.3%(22.7%)。由此可見,在軟件缺陷預(yù)測任務(wù)中,通過聯(lián)合特征的構(gòu)建,以及全局及局部分布匹配機(jī)制,可提高跨項(xiàng)目缺陷預(yù)測模型的準(zhǔn)確性。

(2)研究問題2的回答:聯(lián)合特征和全局及局部分布匹配這兩種機(jī)制對DeDM-JF的性能有多大貢獻(xiàn)?

為了比較這兩個(gè)機(jī)制對跨項(xiàng)目缺陷預(yù)測的貢獻(xiàn),構(gòu)建了基于傳統(tǒng)Handcrafted特征的跨項(xiàng)目缺陷預(yù)測的模型用作對比基線Base-tra,基于深度神經(jīng)網(wǎng)絡(luò)從抽象語法樹結(jié)構(gòu)中提取代碼特征的跨項(xiàng)目缺陷預(yù)測的模型作為另一對比基線Base-AST。+JF表示進(jìn)行了聯(lián)合特征構(gòu)建的機(jī)制,+DeDM表示在Base-tra基礎(chǔ)上增加了全局及局部分布匹配的機(jī)制。在此回答中,實(shí)驗(yàn)從798組跨項(xiàng)目缺陷預(yù)測任務(wù)中選取具有代表性的15項(xiàng)任務(wù),表3列出15項(xiàng)任務(wù)在不同的機(jī)制下的預(yù)測結(jié)果,最優(yōu)結(jié)果被加粗,表中倒數(shù)第二行顯示了各機(jī)制下的結(jié)果與DeDM-JF方法的win/tie/loss(W/T/L)計(jì)數(shù)。由表中可以觀察到,結(jié)合+JF機(jī)制和+DeDM機(jī)制可以分別提高缺陷預(yù)測的性能,綜合了兩個(gè)機(jī)制的DeDM-JF方法,在全方面上有所提高。

表3 兩種機(jī)制對缺陷預(yù)測的貢獻(xiàn)

4 結(jié)束語

提出基于代碼聯(lián)合特征全局及局部分布匹配的跨項(xiàng)目缺陷預(yù)測方法DeDM-JF,將傳統(tǒng)的Handcrafted特征和結(jié)構(gòu)語義特征結(jié)合形成聯(lián)合特征,通過構(gòu)建兩個(gè)自編碼器同時(shí)學(xué)習(xí)跨項(xiàng)目全局和局部可遷移特征,提升跨項(xiàng)目缺陷預(yù)測模型的性能。在10個(gè)開源項(xiàng)目構(gòu)建的798組跨項(xiàng)目缺陷預(yù)測任務(wù)開展實(shí)驗(yàn),較于運(yùn)用遷移學(xué)習(xí)TCA的跨項(xiàng)目缺陷預(yù)測方法,DeDM-JF在F-measure和MCC指標(biāo)上分別提高了6.3%和51.7%;較于利用CNN提取代碼結(jié)構(gòu)語義特征后進(jìn)行缺陷預(yù)測的方法,DeDM-JF在F-measure和MCC指標(biāo)上分別提高了7.1%和28.6%。在未來的研究工作中,將進(jìn)一步探索適合代碼缺陷信息挖掘的深度神經(jīng)網(wǎng)絡(luò)模型,改進(jìn)神經(jīng)網(wǎng)絡(luò)的嵌入層,提升結(jié)構(gòu)語義特征提取的有效性。

猜你喜歡
語義特征方法
語言與語義
如何表達(dá)“特征”
不忠誠的四個(gè)特征
抓住特征巧觀察
“上”與“下”語義的不對稱性及其認(rèn)知闡釋
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
認(rèn)知范疇模糊與語義模糊
線性代數(shù)的應(yīng)用特征
河南科技(2014年23期)2014-02-27 14:19:15
主站蜘蛛池模板: 国产女人喷水视频| 亚洲系列无码专区偷窥无码| 欧洲精品视频在线观看| 亚洲激情99| 欧美国产日韩在线| 欧美啪啪精品| 97在线国产视频| 99精品在线视频观看| 日韩av无码DVD| 九九香蕉视频| 手机看片1024久久精品你懂的| 91色综合综合热五月激情| a级毛片网| 日韩人妻少妇一区二区| 精品欧美视频| 国产人碰人摸人爱免费视频| 人妻丰满熟妇AV无码区| 亚洲国产精品一区二区第一页免| 青青草国产在线视频| 国产精品毛片一区视频播| 国产欧美日韩一区二区视频在线| 老色鬼久久亚洲AV综合| 丰满的少妇人妻无码区| 午夜激情婷婷| 欧美午夜一区| 国产男女免费完整版视频| 91在线激情在线观看| 内射人妻无码色AV天堂| 亚洲最大情网站在线观看| 国产精品入口麻豆| 伊人激情综合网| 亚洲免费人成影院| 久久人与动人物A级毛片| 欧美成人免费午夜全| 黄网站欧美内射| 精品视频91| 国产在线高清一级毛片| 波多野结衣一区二区三视频| 秘书高跟黑色丝袜国产91在线| 情侣午夜国产在线一区无码| 国产精品分类视频分类一区| 福利国产在线| 国产免费网址| 91九色视频网| 欧美午夜在线视频| 人妻精品久久久无码区色视| 激情综合网址| 久久亚洲天堂| aa级毛片毛片免费观看久| 乱码国产乱码精品精在线播放| 91av国产在线| 欧美成人精品一区二区| 成人午夜网址| 中文字幕 日韩 欧美| 免费中文字幕一级毛片| lhav亚洲精品| 欧美一级大片在线观看| 国产成人精品一区二区| 毛片基地美国正在播放亚洲| 国产swag在线观看| 青青草原偷拍视频| 黄色网在线| 中文字幕乱码中文乱码51精品| 国产精品99久久久久久董美香| 亚洲浓毛av| 亚洲第一成网站| 国产特级毛片aaaaaaa高清| 91探花国产综合在线精品| 狠狠色综合网| 欧美成人手机在线视频| 99精品视频播放| 福利在线不卡| 婷婷六月在线| 四虎成人在线视频| 色天堂无毒不卡| 亚洲一区二区成人| 国产成人免费| 2020最新国产精品视频| 国产波多野结衣中文在线播放| 国产91在线|中文| 国产精品一区在线麻豆| 99精品国产电影|