賈焱鑫,林 浩,陳 翔*,濮雪蓮,葛 驊
(1.南通大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南通 226019;2.南通大學(xué) 經(jīng)濟(jì)與管理學(xué)院,江蘇 南通 226019)
軟件內(nèi)存在的缺陷會(huì)給項(xiàng)目帶來不可預(yù)知的風(fēng)險(xiǎn)。當(dāng)前,項(xiàng)目通常會(huì)利用缺陷跟蹤系統(tǒng)(bug tracking system)來搜集和維護(hù)缺陷報(bào)告。其中,按照缺陷報(bào)告的嚴(yán)重程度進(jìn)行優(yōu)先級(jí)排序,并盡早修復(fù)高風(fēng)險(xiǎn)缺陷是降低項(xiàng)目風(fēng)險(xiǎn)的一種可行手段。然而,精準(zhǔn)設(shè)置缺陷報(bào)告所對應(yīng)的嚴(yán)重程度并不容易。由于受到缺陷報(bào)告提交者的能力和經(jīng)驗(yàn)等多方面因素的影響,當(dāng)提交者對嚴(yán)重程度的設(shè)置不重視,或者沒有足夠的信心時(shí),在提交缺陷報(bào)告時(shí)經(jīng)常會(huì)選擇默認(rèn)取值(即normal),因此,normal 取值并不能真實(shí)反映缺陷報(bào)告所對應(yīng)的實(shí)際嚴(yán)重程度。除此之外,由于不同提交者對缺陷報(bào)告嚴(yán)重程度的理解并不完全相同[1],因此即使是遇到了同一缺陷,不同提交者在提交缺陷報(bào)告時(shí)也可能會(huì)設(shè)置不同的嚴(yán)重程度。上述問題的存在,使得提交者不得不人工審查項(xiàng)目缺陷報(bào)告嚴(yán)重程度的準(zhǔn)確性。而缺陷報(bào)告嚴(yán)重程度的評(píng)估工作專業(yè)性較強(qiáng),需要有經(jīng)驗(yàn)的提交者投入大量的時(shí)間和精力,因此,構(gòu)建高質(zhì)量的缺陷報(bào)告嚴(yán)重程度預(yù)測模型[2],對節(jié)約人力和提高軟件項(xiàng)目質(zhì)量具有重要的研究意義。
目前,研究人員針對缺陷報(bào)告嚴(yán)重程度預(yù)測問題,一般將其建模為粗粒度分類問題(即二分類問題)或細(xì)粒度分類問題(即多分類問題)。具體來說,二分類問題是以嚴(yán)重程度normal 為界限,將超過normal 程度的類型歸為一類;低于normal 程度的類型歸為另一類。由于二分類問題的粒度較粗,因此構(gòu)建出的分類模型通??梢匀〉貌诲e(cuò)的分類性能。而多分類問題則可以直接預(yù)測出缺陷報(bào)告所對應(yīng)的具體嚴(yán)重程度類型,因此可以根據(jù)多分類的預(yù)測結(jié)果,更準(zhǔn)確地確定缺陷修復(fù)的優(yōu)先級(jí)[3]。但多分類問題一般受到訓(xùn)練數(shù)據(jù)集規(guī)模的不足、數(shù)據(jù)集內(nèi)存在的類不平衡問題等因素影響,導(dǎo)致構(gòu)建出的分類模型的分類性能不理想?;谏鲜龇治?,不難看出粗粒度分類與細(xì)粒度分類各有優(yōu)勢和不足,并互為補(bǔ)充,因此本文提出變粒度預(yù)測(variable granularity bug report severity prediction,VG-BSP)方法。變粒度指隨著預(yù)測階段的改變,對模型預(yù)測粒度和預(yù)測性能的需要產(chǎn)生的變化,對在不同階段中所采用的預(yù)測粒度進(jìn)行的改變。具體來說:首先對新缺陷報(bào)告進(jìn)行基于二分類的粗粒度劃分,然后根據(jù)二分類的結(jié)果進(jìn)一步細(xì)分(即基于多分類的細(xì)粒度劃分)。即先使用粗粒度二分類預(yù)測模型將缺陷報(bào)告所對應(yīng)的嚴(yán)重程度分為嚴(yán)重或不嚴(yán)重兩大類,然后使用細(xì)粒度多分類預(yù)測模型在已預(yù)測出的兩大類嚴(yán)重程度結(jié)果基礎(chǔ)上,繼續(xù)細(xì)分嚴(yán)重程度的類別。與已有的多分類方法相比,VG-BSP 方法的優(yōu)勢在于可以利用粗粒度二分類的高準(zhǔn)確性,并在一定程度上緩解直接使用細(xì)粒度多分類所帶來的低準(zhǔn)確性問題。
本文選擇來自實(shí)際開源項(xiàng)目的缺陷報(bào)告(來自Eclipse 的兩個(gè)子項(xiàng)目JDT 與CDT 的缺陷報(bào)告和來自Mozilla 項(xiàng)目的缺陷報(bào)告)[2,4],并分別設(shè)置了粗粒度類別和細(xì)粒度類別,與邏輯回歸(logistic regression,LR)方法、K 近鄰(K-nearest neighbors,KNN)方法、決策樹(decision tress,DT)方法、隨機(jī)森林(randon forest,RF)方法、支持向量機(jī)(support vector machine,SVM)方法等經(jīng)典細(xì)粒度分類方法進(jìn)行比較?;趍acro-F1 指標(biāo),VG-BSP 方法的性能平均可提升19.6%。除此之外,研究還發(fā)現(xiàn),采用LR 方法作為VG-BSP 方法的分類方法、采用Spacy 詞向量作為文本建模方法,可以使得VG-BSP 方法取得最好的預(yù)測性能。
Tan 等[5]通過從Stack Overflow 網(wǎng)站中提取缺陷相關(guān)問題貼和回復(fù)貼,來對缺陷報(bào)告的內(nèi)容進(jìn)行擴(kuò)充,在此基礎(chǔ)上使用邏輯回歸算法預(yù)測缺陷報(bào)告所對應(yīng)的嚴(yán)重程度,最終在預(yù)測性能上超過了基準(zhǔn)方法中效果最好的樸素貝葉斯方法。Sharma 等[4]認(rèn)為模型性能可能會(huì)因?yàn)槿毕輬?bào)告的嚴(yán)重程度在修復(fù)過程中產(chǎn)生的變化而受到影響,同時(shí)認(rèn)為缺陷報(bào)告的優(yōu)先級(jí)、評(píng)論數(shù)量等屬性也應(yīng)當(dāng)被納入考慮范圍,最終基于上述兩點(diǎn)提出了基于支持向量機(jī)、樸素貝葉斯和k 近鄰等算法的分類模型;Chaturvedi等[6]嘗試分析了樸素貝葉斯、K 近鄰、支持向量機(jī)等算法在NASA 項(xiàng)目中的缺陷報(bào)告嚴(yán)重程度預(yù)測的適用性,并使用各種性能評(píng)測指標(biāo)進(jìn)行了驗(yàn)證。Lamkanfi 等[7]比較了4 種著名的文本挖掘算法(樸素貝葉斯、樸素貝葉斯多項(xiàng)式、K 近鄰和支持向量機(jī))之間的準(zhǔn)確性及所需訓(xùn)練集的規(guī)模。Menzies 等[8]則基于標(biāo)準(zhǔn)的文本挖掘方法和機(jī)器學(xué)習(xí)方法提出了一種高效的缺陷報(bào)告嚴(yán)重程度預(yù)測方法SEV ERIS。Lamkanfi 等[9]則利用來自Mozilla、Eclipse 和GNOME 3 個(gè)開源項(xiàng)目的缺陷報(bào)告,驗(yàn)證了在規(guī)模足夠大的訓(xùn)練集上,使用文本挖掘方法是行之有效的。Tian 等[10]則轉(zhuǎn)換了研究思路,嘗試預(yù)測缺陷報(bào)告所對應(yīng)的具體嚴(yán)重程度,提出了一種基于BM-25 文本相似度計(jì)算公式的自動(dòng)化預(yù)測方法,并在細(xì)粒度嚴(yán)重性預(yù)測方面超越了基準(zhǔn)方法。劉文杰[11]針對嚴(yán)重性實(shí)證分析問題和嚴(yán)重性預(yù)測問題,分別提出了缺陷報(bào)告嚴(yán)重性影響分析框架、面向領(lǐng)域特征的粗粒度嚴(yán)重性預(yù)測方法和基于特征序列重構(gòu)的細(xì)粒度嚴(yán)重性預(yù)測方法,提升了細(xì)粒度嚴(yán)重性定量預(yù)測方法的性能。王婧宇等[12]則在相關(guān)工作的基礎(chǔ)上對基于分類的嚴(yán)重程度預(yù)測方法進(jìn)行了總結(jié),提煉了技術(shù)框架,并對框架中的主要步驟進(jìn)行了介紹。
缺陷報(bào)告的摘要是一種非結(jié)構(gòu)化文本,目前將非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)為機(jī)器學(xué)習(xí)方法可處理的數(shù)據(jù)格式,需要對文本內(nèi)容進(jìn)行建模,常用的文本建模方法有以下4 種:1)Spacy 詞向量,由Python 第三方工業(yè)級(jí)自然語言處理庫Spacy 支持,基于OntoNotes 5和GloVe Common Crawl 數(shù)據(jù)集訓(xùn)練生成的685 000個(gè)300 維詞向量;2)Word2Vec 詞向量,是使用Word2Vec 模型中的Skip-gram 模型訓(xùn)練生成的,可用來表示單詞對之間的關(guān)系的詞向量;3)BOW 詞向量,是使用詞袋模型表示法,通過構(gòu)建基于數(shù)據(jù)集的不重復(fù)單詞集合,從而將每句話表示成單詞集合中各單詞在該句子內(nèi)的出現(xiàn)次數(shù)所組成的向量;4)TF-IDF 詞向量,是根據(jù)一個(gè)詞在單份語料中出現(xiàn)的次數(shù)與在語料庫中出現(xiàn)的頻率來判斷一個(gè)詞語的重要性,并在此基礎(chǔ)上生成的詞向量。
本文分析的開源項(xiàng)目都使用Bugzilla 這一缺陷跟蹤系統(tǒng)來維護(hù)缺陷報(bào)告。與已有研究工作[9]保持一致,在粗粒度二分類問題中,我們將blocker、critical、major 這3 種缺陷報(bào)告嚴(yán)重程度歸為嚴(yán)重類別;將minor、trivial、enhancement 這3種缺陷報(bào)告嚴(yán)重程度歸為不嚴(yán)重類別。
在細(xì)粒度多分類問題中,在粗粒度二分類得到的預(yù)測結(jié)果為嚴(yán)重程度時(shí),則將借助對應(yīng)細(xì)粒度多分類模型,進(jìn)一步細(xì)分為blocker、critical 或major 類型。在粗粒度二分類得到的預(yù)測結(jié)果為不嚴(yán)重程度時(shí),則將借助對應(yīng)的細(xì)粒度多分類模型,進(jìn)一步細(xì)分為minor、trivial 或enhancement 類型。
本節(jié)首先給出了文本預(yù)處理方法,隨后給出本文所提出的變粒度缺陷報(bào)告嚴(yán)重程度預(yù)測(variable granularity bug report severity prediction,VG-BSP)方法的實(shí)現(xiàn)細(xì)節(jié),包含了變粒度操作的實(shí)施流程與具體操作規(guī)則。
缺陷報(bào)告的摘要是文本,因此需要對其進(jìn)行文本預(yù)處理。首先將文本進(jìn)行分詞;其次借助停用詞列表過濾掉停用詞,停用詞是指在文本中經(jīng)常出現(xiàn),但含有極少文本信息的高頻詞(例如英語中的the,at,which,on 等);然后對分詞進(jìn)行規(guī)范化,即去除詞綴得到單詞對應(yīng)的詞根,例如,將effective 規(guī)范為effect;最后利用Spacy 詞向量文本建模方法針對該摘要信息進(jìn)行文本建模。
2.2.1 訓(xùn)練粗粒度二分類預(yù)測模型
根據(jù)文本預(yù)處理后生成的詞向量和缺陷報(bào)告中的嚴(yán)重程度粗粒度類別,采用二分類算法,構(gòu)建粗粒度預(yù)測模型MC,預(yù)測缺陷報(bào)告對應(yīng)的嚴(yán)重程度是否為嚴(yán)重。
2.2.2 訓(xùn)練細(xì)粒度多分類預(yù)測模型
通過訓(xùn)練粗粒度二分類預(yù)測模型,預(yù)測并得到準(zhǔn)確度較高的粗粒度類型結(jié)果,以此為基礎(chǔ)進(jìn)一步訓(xùn)練細(xì)粒度多分類預(yù)測模型,即本文所提方法中的變粒度操作,從而保證在預(yù)測準(zhǔn)確度較高的前提下進(jìn)一步細(xì)化預(yù)測粒度。首先根據(jù)粗粒度類型將訓(xùn)練數(shù)據(jù)集細(xì)分為兩個(gè)數(shù)據(jù)集,其中第一個(gè)數(shù)據(jù)集包含了blocker、critical、major 等3 種類型的缺陷報(bào)告,并基于多分類方法構(gòu)建出細(xì)粒度分類模型MF1;第二個(gè)數(shù)據(jù)集包含了minor、trivial、enhancement 等3 種類型的缺陷報(bào)告,并基于多分類方法構(gòu)建出細(xì)粒度分類模型MF2。
2.2.3 模型組合
將粗粒度預(yù)測模型MC 與兩個(gè)細(xì)粒度預(yù)測模型MF1、MF2 進(jìn)行組合,構(gòu)成最終的缺陷報(bào)告嚴(yán)重程度預(yù)測模型。VG-BSP 方法的整體框架如圖1 所示。當(dāng)面對新的缺陷報(bào)告時(shí),先使用粗粒度預(yù)測模型MC預(yù)測其所對應(yīng)的粗粒度類別,若粗粒度類別為不嚴(yán)重,則進(jìn)入粗粒度為不嚴(yán)重所對應(yīng)的細(xì)粒度預(yù)測模型MF1 進(jìn)行細(xì)粒度的分類;若粗粒度類別為嚴(yán)重,則進(jìn)入粗粒度為嚴(yán)重所對應(yīng)的細(xì)粒度預(yù)測模型MF2 進(jìn)行細(xì)粒度的分類。
圖1 VG-BSP 方法的整體框架圖Fig.1 Overall framework of the VG-BSP method
為了驗(yàn)證本文所提VG-BSP 方法的有效性和方法內(nèi)部設(shè)置的合理性,提出以下3 個(gè)研究問題:
RQ1 變粒度缺陷報(bào)告嚴(yán)重程度預(yù)測方法的性能是否優(yōu)于現(xiàn)有的基準(zhǔn)方法?
RQ2 不同分類算法對變粒度缺陷報(bào)告嚴(yán)重程度預(yù)測方法的性能影響如何?
RQ3 與其他文本建模方法相比,使用Spacy詞向量是否能提高變粒度缺陷報(bào)告嚴(yán)重程度預(yù)測方法的性能?
為了驗(yàn)證VG-BSP 方法的有效性,選擇來自實(shí)際開源項(xiàng)目的缺陷報(bào)告數(shù)據(jù)集,包括來自Eclipse 的兩個(gè)子項(xiàng)目JDT 和CDT 的缺陷報(bào)告及來自Mozilla項(xiàng)目的缺陷報(bào)告。其中JDT 子項(xiàng)目是Java 開發(fā)工具的簡稱,其作用是為高級(jí)用戶提供工具插件;CDT 子項(xiàng)目是C/C++開發(fā)工具的簡稱,其提供了一個(gè)基于Eclipse 平臺(tái)的功能完整的C 和C++集成開發(fā)環(huán)境。Mozilla 項(xiàng)目包含Core、Firefox、Thunderbird 等。
以上3 個(gè)項(xiàng)目采用Bugzilla 進(jìn)行缺陷報(bào)告的管理,我們首先從Bugzilla 中搜集這些項(xiàng)目的歷史缺陷報(bào)告,針對每一個(gè)缺陷報(bào)告,抽取該缺陷報(bào)告的摘要信息(summary)和嚴(yán)重程度(severity)這兩個(gè)屬性的信息,并構(gòu)成數(shù)據(jù)集。數(shù)據(jù)集的統(tǒng)計(jì)特征如表1所示,包括項(xiàng)目的名稱、總的缺陷報(bào)告數(shù),以及不同缺陷嚴(yán)重程度對應(yīng)的缺陷報(bào)告數(shù)。在以前的研究過程中,研究人員發(fā)現(xiàn)由于normal 被設(shè)置為缺陷報(bào)告嚴(yán)重程度標(biāo)簽的默認(rèn)取值,因此一些對自己的經(jīng)驗(yàn)和能力缺乏信心的提交者會(huì)將不符合normal 取值標(biāo)準(zhǔn)的缺陷報(bào)告默認(rèn)標(biāo)注為normal 類型[1]。在本研究工作中,我們認(rèn)為引入normal 取值的數(shù)據(jù)很容易為數(shù)據(jù)集引入噪音,所以在數(shù)據(jù)集中去除了所有嚴(yán)重程度標(biāo)簽為normal 的缺陷報(bào)告。
表1 研究工作中使用的缺陷報(bào)告數(shù)據(jù)集的統(tǒng)計(jì)特征Tab.1 Statistical characteristics of the bug report datasets used in the study
由于本文關(guān)注的問題是多分類問題,因此采用macro-F1 作為模型性能的評(píng)測指標(biāo)。
macro-F1 指分別計(jì)算每個(gè)類別的F1 值,然后求均值。假設(shè)計(jì)算類別A 的F1 值,在屬于類別A 的實(shí)例為正例,不屬于類別A 的實(shí)例為反例的情況下,F(xiàn)1 值的計(jì)算公式為
其中:P 為查準(zhǔn)率(Precision);R 為查全率(Recall)。計(jì)算公式為
該情況下對應(yīng)的混淆矩陣,如表2 所示。
表2 分類結(jié)果混淆矩陣Tab.2 Confusion matrix of classification results
本文所提方法通過粗粒度預(yù)測階段得到二元分類結(jié)果,隨后細(xì)化預(yù)測粒度,最終得到細(xì)粒度嚴(yán)重程度預(yù)測結(jié)果。因此本文主要選擇已有的細(xì)粒度預(yù)測方法作為基準(zhǔn)方法。在軟件缺陷預(yù)測嚴(yán)重程度預(yù)測問題中,若建模為多分類問題時(shí),邏輯回歸[13]、K近鄰[14]、決策樹[15]等機(jī)器學(xué)習(xí)方法是目前主流的建模方法[16]。除此之外,額外考慮了隨機(jī)森林[17]、支持向量機(jī)[18]等其他經(jīng)典的多分類方法。
多分類任務(wù)的拆分策略有如下3 種:一對一、一對其余和多對多。在本文中,我們采用基于一對其余方式的多分類方法[19]。
除此之外,論文使用了第三方提供的成熟框架[16],主要基于Python 機(jī)器學(xué)習(xí)包scikit-learn 對如下基準(zhǔn)方法進(jìn)行了實(shí)現(xiàn):
1)邏輯回歸(logistic regression,LR)[13]一種對數(shù)幾率模型,是離散選擇法模型之一,屬于多重變量分析范疇,是社會(huì)學(xué)、生物統(tǒng)計(jì)學(xué)、臨床、數(shù)量心理學(xué)、計(jì)量經(jīng)濟(jì)學(xué)、市場營銷等統(tǒng)計(jì)實(shí)證分析的常用方法。
2)K 近鄰(K-nearest neighbors,KNN)[14]一種用于分類和回歸的非參數(shù)統(tǒng)計(jì)方法,在這兩種情況下,輸入包含特征空間中的k 個(gè)最接近的訓(xùn)練樣本?;谙嗤悇e案例彼此相似度高這一原理并采用向量空間模型來實(shí)現(xiàn)分類的效果,借由計(jì)算與已知類別案例之間的相似度來評(píng)估未知類別案例的分類。
3)決策樹(decision tree,DT)[15]在決策論中,決策樹由一個(gè)決策圖和可能的結(jié)果(包括資源成本和風(fēng)險(xiǎn))組成,用來規(guī)劃到達(dá)目標(biāo)的路徑。決策樹是一種特殊的樹結(jié)構(gòu),是一個(gè)包括隨機(jī)事件結(jié)果、資源代價(jià)和實(shí)用性的利用了像樹一樣的圖形或決策模型的決策支持工具,主要被用來輔助決策。決策樹經(jīng)常在運(yùn)籌學(xué)中使用,特別是在決策分析中,它能幫助確定一個(gè)最可能達(dá)到目標(biāo)的策略。
4)隨機(jī)森林(random forest,RF)[17]在機(jī)器學(xué)習(xí)中,隨機(jī)森林是一個(gè)包含多個(gè)決策樹的分類器,并且其輸出的類別由個(gè)別樹輸出的類別的眾數(shù)而定。隨機(jī)森林天然可用來對回歸或分類問題中變量的重要性進(jìn)行排序。。
5)支持向量機(jī)(support vector machine,SVM)[18]在機(jī)器學(xué)習(xí)中,支持向量機(jī)是在分類與回歸分析中分析數(shù)據(jù)的監(jiān)督式學(xué)習(xí)模型與相關(guān)的學(xué)習(xí)算法。給定一組訓(xùn)練實(shí)例,每個(gè)訓(xùn)練實(shí)例被標(biāo)記為屬于兩個(gè)類別中的一個(gè)或另一個(gè),SVM 訓(xùn)練算法將創(chuàng)建一個(gè)將新的實(shí)例分配給兩個(gè)類別之一的模型,使其成為非概率二元線性分類器。除了進(jìn)行線性分類之外,SVM 還可以使用所謂的核技巧有效地進(jìn)行非線性分類,將其輸入隱式映射到高維特征空間中。
為了合理評(píng)估本文所提VG-BSP 方法的預(yù)測性能,我們將數(shù)據(jù)集進(jìn)行隨機(jī)分層抽樣,即針對事先已經(jīng)標(biāo)注好相應(yīng)缺陷報(bào)告嚴(yán)重程度標(biāo)簽的數(shù)據(jù)集,依據(jù)各類數(shù)據(jù)在整體中所占的比例,確定從各類中抽取的數(shù)據(jù)數(shù)量,并進(jìn)一步從中隨機(jī)抽取樣本數(shù)據(jù),最終劃分出整個(gè)數(shù)據(jù)集中70%的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),并將剩余30%數(shù)據(jù)作為測試數(shù)據(jù),以防止訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)產(chǎn)生數(shù)據(jù)重疊問題。為避免數(shù)據(jù)集劃分過程的隨機(jī)性,重復(fù)上述數(shù)據(jù)集劃分方法10 次。為了確保實(shí)證研究的可重現(xiàn),使用相同的隨機(jī)種子,來完成數(shù)據(jù)集的10 次劃分。
在3 個(gè)數(shù)據(jù)集上分別使用基準(zhǔn)方法進(jìn)行預(yù)測,計(jì)算得到macro-F1 值,并與本文提出的方法結(jié)果進(jìn)行比較,統(tǒng)計(jì)結(jié)果如表3 所示。與LR、KNN、DT、RF 和SVM 方法相比,在數(shù)據(jù)集JDT 上,本文提出的VG-BSP 方法在macro-F1 指標(biāo)上最高可提升37.8%,最低可提升12.5%,平均可提升26.6%;在數(shù)據(jù)集CDT 上,VG-BSP 方法最高可提升33.5%,最低可提升4.6%,平均可提升18.7%;在數(shù)據(jù)集Mozilla上,VG-BSP 方法最高可提升19.9%,最低可提升7.4%,平均可提升13.3%?;谏鲜龇治觯梢钥闯觯琕G-BSP 方法的性能明顯優(yōu)于LR、KNN、DT、RF、SVM 方法,平均可提升19.6%。從原理上來解釋,本文所提的VG-BSP 方法,首先應(yīng)用預(yù)測性能較好而預(yù)測粒度較粗的粗粒度預(yù)測方法對數(shù)據(jù)集進(jìn)行分類,在很大程度上確保了預(yù)測性能后又應(yīng)用細(xì)粒度預(yù)測方法進(jìn)一步地細(xì)化了預(yù)測粒度,最終得到了細(xì)粒度嚴(yán)重程度預(yù)測結(jié)果。本文所提VG-BSP 方法結(jié)合了粗粒度方法與細(xì)粒度方法的優(yōu)點(diǎn),彌補(bǔ)了各自的不足,因而整體表現(xiàn)優(yōu)于直接采用細(xì)粒度預(yù)測策略的基準(zhǔn)方法。
表3 VG-BSP 方法與基準(zhǔn)方法的性能比較Tab.3 Performance comparison between the method VG-BSP and baselines
在3 個(gè)數(shù)據(jù)集上分別使用6 種常用機(jī)器學(xué)習(xí)方法作為粗細(xì)粒度預(yù)測模型的分類算法,目的是驗(yàn)證并探尋是否存在一個(gè)分類方法,可以在本文提出的VG-BSP 方法中取得最好的預(yù)測性能,最終結(jié)果如表4 所示??傮w來說LR 分類算法在VG-BSP 方法上可以取得最好的預(yù)測性能,盡管在Mozilla 數(shù)據(jù)集上,其性能稍弱于SVM 方法,但差距幾乎可以忽略不計(jì)。因此,當(dāng)VG-BSP 方法選擇LR 分類算法時(shí),模型的預(yù)測性能最好。
表4 不同分類算法對變粒度缺陷報(bào)告嚴(yán)重程度預(yù)測方法的性能影響Tab.4 Performance influence of different classifiers on variable granularity bug report severity prediction method
由針對RQ2 的分析結(jié)果可知,基于LR 分類算法可使變粒度缺陷報(bào)告嚴(yán)重程度預(yù)測方法取得最好的性能。針對RQ3,我們嘗試分析文本建模方法對VG-BSP 方法性能的影響。在3 個(gè)數(shù)據(jù)集上分別使用4 種常用文本建模方法對數(shù)據(jù)集的文本進(jìn)行建模,并隨后基于LR 分類算法來構(gòu)建缺陷報(bào)告嚴(yán)重程度預(yù)測模型并計(jì)算得到macro-F1 值。最終結(jié)果如表5 所示,不難看出,Spacy 詞向量在所有數(shù)據(jù)集上都可以取得最好的性能,因此我們選取Spacy詞向量作為VG-BSP 方法的文本建模方法。
表5 不同文本建模方法對變粒度缺陷報(bào)告嚴(yán)重程度預(yù)測方法的性能影響Tab.5 Performance influence of different text modeling methods on variable granularity bug report severity prediction method
通過構(gòu)建缺陷報(bào)告嚴(yán)重程度預(yù)測模型,可以有效地降低項(xiàng)目開發(fā)人員和用戶面臨的風(fēng)險(xiǎn),節(jié)省提交者在缺陷報(bào)告嚴(yán)重程度設(shè)置上所花費(fèi)的時(shí)間和精力。本文提出一種變粒度缺陷報(bào)告嚴(yán)重程度預(yù)測方法VG-BSP,嘗試通過融合細(xì)粒度分類與粗粒度分類來兼顧預(yù)測的準(zhǔn)確性與預(yù)測粒度,并基于實(shí)際大規(guī)模開源項(xiàng)目的缺陷報(bào)告,在macro-F1 指標(biāo)上對VG-BSP 方法的有效性進(jìn)行了驗(yàn)證。除此之外,還探討了VG-BSP 方法內(nèi)最優(yōu)分類方法和文本建模方法的設(shè)置。
該方法仍然存在以下工作有待于今后繼續(xù)研究:
1)嘗試搜集來自其他開源項(xiàng)目的缺陷報(bào)告數(shù)據(jù)集,對論文結(jié)論的一般性進(jìn)行進(jìn)一步的探索和驗(yàn)證;
2)當(dāng)前數(shù)據(jù)集內(nèi),不同嚴(yán)重程度類型的缺陷報(bào)告分布不均衡,即一些嚴(yán)重程度類型的缺陷報(bào)告數(shù)量很少。因此,如何引入類不平衡學(xué)習(xí)方法[20]來進(jìn)一步提升模型的預(yù)測性能值得關(guān)注。