摘" 要: 針對軟件缺陷預測中數(shù)據(jù)標注代價較高及深度學習模型缺乏可解釋性的問題,提出一種面向可解釋性的軟件缺陷預測主動學習方法。首先,基于主動學習技術(shù),通過樣本選擇策略從目標項目中篩選出不確定性高的樣本進行專家標注,并將這些標注樣本放入源項目中以訓練預測器。其次,利用領(lǐng)域知識對選定樣本進行擾動,構(gòu)建局部數(shù)據(jù)集,并通過線性模型在該數(shù)據(jù)集上模擬數(shù)據(jù)選擇策略的行為,以實現(xiàn)模型的可解釋性。實驗結(jié)果顯示:該方法在數(shù)據(jù)標注方面的指標性能要優(yōu)于傳統(tǒng)的主動學習基準方法;同時,在可解釋性方面,該方法的RMSE指標也均低于LIME、全局代理模型以及RuleFit,能較好地解釋“黑盒”模型。該方法不僅可以有效提高軟件缺陷數(shù)據(jù)的標注效率,還可以實現(xiàn)模型的可解釋性。
關(guān)鍵詞: 軟件缺陷預測; 主動學習; 可解釋性; 數(shù)據(jù)標注; 數(shù)據(jù)選擇策略; 深度學習
中圖分類號: TN919?34" " " " " " " " " " " " " " "文獻標識碼: A" " " " " " " " " " " 文章編號: 1004?373X(2024)20?0101?08
Interpretability?oriented active learning approach for software defect prediction
WANG Yue1, LI Yong1, 2, ZHANG Wenjing1
(1. College of Computer Science and Technology, Xinjiang Normal University, Urumqi 830054, China;
2. Key Laboratory of Safety?Critical Software of Ministry and Information Technology, Nanjing University of Aeronautics and Astronautics, Nanjing 211106, China)
Abstract: In allusion to the problems of high cost of data annotation and lack of interpretability of deep learning model in software defect prediction, an interpretability?oriented active learning approach for software defect prediction is proposed. Based on the active learning technology, samples with high uncertainty are filtered from the target project by means of sample selection strategy for expert annotation, and these annotated samples are put into the source project to train the predictor. The selected samples are perturbed by means of domain knowledge to construct a local dataset, and the behavior of the data selection strategy is simulated on this dataset by means of the linear model to achieve the interpretability of the model. The experimental results show that this approach has better performance than the traditional active learning benchmark approach in data annotation. Meanwhile, the RMSE metrics of the method are also lower than those of LIME, Global Agent Model, and RuleFit in terms of interpretability, which can better explain the black?box model. This approach can not only effectively improve the annotation efficiency of software defect data, but also achieve the interpretability of the model.
Keywords: software defect prediction; active learning; interpretability; data annotation; data selection strategy; deep learning
0" 引" 言
軟件缺陷預測技術(shù)可以提高軟件測試效率,是保證軟件可靠性的重要途徑之一。構(gòu)建性能優(yōu)越的軟件缺陷預測模型需要足夠多的歷史標注數(shù)據(jù)[1],因此,軟件缺陷數(shù)據(jù)集的質(zhì)量至關(guān)重要。但對軟件缺陷數(shù)據(jù)進行標注時需要投入大量的人力、時間以及專業(yè)知識,代價高昂。如何在成本較低的情況下對軟件缺陷數(shù)據(jù)進行標注是一個具有挑戰(zhàn)性的問題。
主動學習可以從未標記樣本池中選擇最有價值且對模型貢獻度較高的樣本交給專家進行標注,從而在保持性能的前提下盡可能地降低標注成本[2],有效解決軟件缺陷數(shù)據(jù)標注代價高的問題。主動學習可以有效降低標注成本,而深度學習在處理高維數(shù)據(jù)和提取自動特征方面具有很強的學習能力。為了極大地擴展主動學習的應用潛力,研究者們將深度學習與主動學習結(jié)合起來,稱為深度主動學習。但在深度主動學習中,大多數(shù)的數(shù)據(jù)選擇策略都采用了深度學習技術(shù),其模型具有較高的復雜性,存在缺乏可解釋性的問題,從而會導致用戶無法了解模型內(nèi)部的決策依據(jù),嚴重限制了主動學習在軟件缺陷預測這個高風險領(lǐng)域的應用。
針對上述問題,本文提出一種面向可解釋性的軟件缺陷預測主動學習方法(Interpretability?oriented Active Learning Approach for Software Defect Prediction, IAL4SD)。首先基于跨項目技術(shù),使用主動學習從目標項目中選擇一批不確定性樣本,交給專家進行標注并放到源項目中;再使用源項目作為訓練集訓練預測器,將其用于目標項目的數(shù)據(jù)標注;之后,使用RuleFit生成該領(lǐng)域的決策規(guī)則,并在符合特定實例決策規(guī)則的特征限定條件下對該樣本進行擾動,得到一個局部數(shù)據(jù)集;最后,使用線性模型在局部數(shù)據(jù)集上近似模擬黑盒模型的行為。通過在真實公開的數(shù)據(jù)集上進行實驗,驗證主動學習的有效性,并和主流的可解釋模型進行比較。實驗結(jié)果顯示,本文提出的方法可以有效提高軟件缺陷數(shù)據(jù)標注的效率,并在降低成本的同時,提高模型的可解釋性。
1" 相關(guān)工作
1.1" 軟件缺陷預測主動學習
主動學習的目的是通過迭代抽樣來優(yōu)化模型性能,構(gòu)建有價值的訓練集,是處理樣本不足問題的一種實踐方式[3];同時,主動學習也是提高分類器[4]泛化能力的有效途徑。近年來,主動學習已被引入軟件缺陷預測領(lǐng)域,并逐漸在軟件缺陷預測領(lǐng)域嶄露頭角,成為一個備受關(guān)注的研究方向。
文獻[5]為了便于主動采樣,提出一種基于主動半監(jiān)督學習的方法ACoForest,該方法能夠選擇出對模型貢獻度高的模塊。文獻[6]引入元主動學習,利用隨機森林對歷史數(shù)據(jù)集進行主動學習,學習目標數(shù)據(jù)集的分布;應用回歸模型學習自高斯分布的非平衡數(shù)據(jù)集,來解決軟件缺陷預測中的類不平衡問題。文獻[7]提出了一種混合主動學習查詢策略,對于信息熵最低的樣本,QBC(Query By Committee)將再次使用投票熵對其進行分析。結(jié)果顯示,該方法優(yōu)于當前最先進的幾種主動學習方法。文獻[8]提出一個結(jié)合混合主動學習和核主成分分析的兩階段框架。在第一階段,采用混合主動學習方法,從當前版本中選擇具有代表性的未標記模塊進行查詢,再合并到之前版本的已標記模塊中,形成增強訓練集;在第二階段,使用核主成分分析方法將兩個版本的原始數(shù)據(jù)送到高維空間,提取具有代表性的特征,有效解決了不同版本之間的數(shù)據(jù)分布差異問題。文獻[9]將主動學習作為一種自動化模型開發(fā)的方法,以提高連續(xù)版本間缺陷預測的性能。文獻[10]利用主動學習和TrAdaBoost來緩解不同項目間數(shù)據(jù)分布差異大的問題。
為了極大地擴展主動學習的應用潛力,大多數(shù)研究者都將深度學習和主動學習結(jié)合起來,通過模型自身的能力來指導主動學習的過程,從而更有效地利用有限的標記數(shù)據(jù)來訓練模型。但也由于采用了深度學習技術(shù),存在模型缺乏可解釋性的問題。機器學習可解釋性可以幫助人們理解黑盒模型的決策過程,建立用戶與預測模型之間的信任關(guān)系。
1.2" 可解釋主動學習
由于深度主動學習的數(shù)據(jù)選擇策略采用了深度學習技術(shù),具有非常復雜的網(wǎng)絡結(jié)構(gòu),且訓練過程不透明,故本質(zhì)上可以看作是一個“黑盒”模型??山忉寵C器學習可以讓人們理解“黑盒”模型的決策依據(jù)和推理過程,從而讓人們可以更加信任“黑盒”模型并相信“黑盒”模型做出的預測。
可解釋主動學習分為事前解釋和事后解釋兩個方面。在事前解釋方面,文獻[11]受深度神經(jīng)網(wǎng)絡中分段線性可解釋性的啟發(fā),提出了一種基于模型可解釋性的深度主動學習方法,將樣本的線性可分區(qū)域引入主動學習問題。文獻[12]提出可解釋性驅(qū)動的樣本選擇方法,該方法在主動學習系統(tǒng)中使用可解釋性信息進行樣本選擇。文獻[13]提出一種可視化的可解釋主動學習方法,該方法在每次主動學習迭代時,通過詢問、解釋、推薦和回應四個動作促進人們與AI的合作,并在解釋階段使用語義圖可視化解釋機器的當前狀態(tài)。在事后解釋方面,文獻[14]在主動學習的過程中,迭代選擇代理和“黑箱”模型在預測其響應變量方面分歧最大的數(shù)據(jù)實例。這個過程能迭代地調(diào)整代理模型,以便更好地適應“黑盒”模型。文獻[15]擴展了局部可解釋模型不可知論解釋框架(LIME),為主動學習建議提供了解釋。LIME[16]是一種局部可解釋模型,屬于基于擾動的方法,通過對單個實例進行擾動形成一個局部數(shù)據(jù)集,然后訓練一個線性模型局部逼近復雜模型,從局部的角度來解釋預測結(jié)果。
LIME模型設計訓練過程簡單,但是對實例進行擾動時具有隨機性,可能會生成不符合領(lǐng)域知識的樣本,訓練出來的線性解釋模型是不穩(wěn)定的,極易造成對于相似的輸入實例解釋不一致的問題,從而影響到解釋性能。因此,本文提出一種面向可解釋性的軟件缺陷預測主動學習方法。該方法基于跨項目技術(shù),采用主動學習獲取少量有價值的高不確定性樣本,并引入領(lǐng)域知識對樣本進行擾動,從局部的角度對模型進行解釋,在提高模型解釋性能的同時降低標注成本。
2" 面向可解釋性的軟件缺陷預測主動學習
在一個大數(shù)據(jù)集中,應該標注哪些樣本是主動學習訓練中最重要的問題之一。IAL4SD提供了一種面向可解釋性的主動學習數(shù)據(jù)選擇策略,基于跨項目技術(shù),選擇一批不確定性樣本并將其交給專家進行標注,減少標注成本;并依據(jù)領(lǐng)域知識的樣本進行擾動形成局部數(shù)據(jù)集,使用線性模型從局部的角度對數(shù)據(jù)選擇策略這個“黑盒”模型進行模擬。IAL4SD整體流程如圖1所示。
在IAL4SD方法中,首先使用主動學習從目標項目(T)中挑選出不確定性樣本,并交給專家標注;再將標注后的不確定性樣本放入源項目(S)中,使用更新后的源項目訓練預測器,使用預測器對未標注的數(shù)據(jù)(即目標項目中的樣本)進行標注。之后,使用RuleFit生成該領(lǐng)域的決策規(guī)則,并在符合特定實例決策規(guī)則的特征限定條件下對該樣本進行擾動,得到具有局部標簽一致性的局部數(shù)據(jù)集。最后,在新的數(shù)據(jù)集上訓練線性模型,由此生成“黑盒”模型局部預測(在所選實例附近)的良好近似。
2.1" 基于主動學習的即時缺陷數(shù)據(jù)選擇策略
IAL4SD采用數(shù)據(jù)驅(qū)動的不確定性采樣,使用判別器和損失預測模塊從目標項目中挑選出不確定性樣本。不確定性樣本的選擇過程如圖2所示。
跨項目技術(shù)使用源項目的數(shù)據(jù)訓練模型,然后使用該模型對目標項目中的樣本進行預測。在這個過程中,會面臨源項目與目標項目之間數(shù)據(jù)分布存在差異的問題,這種數(shù)據(jù)分布的差異可能導致模型在目標項目上的性能下降,因為模型在源項目上訓練時所學到的特征可能不適用于目標項目。
判別器[17]通過從目標項目中選擇出與源項目在數(shù)據(jù)分布上不同的樣本并進行標注,從而達到減小源項目和目標項目之間的數(shù)據(jù)分布差異的目的。判別器的主要任務是對每個樣本進行預測,以確定該樣本是否來自目標項目。假設目標項目的數(shù)據(jù)規(guī)模足夠大,并且能夠代表真實的數(shù)據(jù)分布,判別器會對每個樣本進行判斷,當一個未標記的樣本很有可能來自目標項目,說明該樣本在數(shù)據(jù)分布上與源項目中的樣本是不同的。通過標注該樣本并放入源項目中可以有效降低源項目和目標項目之間的數(shù)據(jù)分布差異,讓模型更好地適應目標項目的特征,對模型是有益的。
判別器通常會根據(jù)數(shù)據(jù)分布的不確定性來選擇樣本,即那些在源項目和目標項目之間差異較大的樣本,然而,選擇出來的樣本中也會包含一些預測錯誤的樣本,導致標注過程不準確。
為了避免判別器可能出現(xiàn)的錯誤預測,本文為判別器附加一個小的損失預測模塊[18]Loss。該模塊的主要功能是預測判別器的損失值,從而識別可能被分錯類的樣本。損失預測模塊與判別器的每一層相連接,以獲取每一層的特征值,通過融合多個層次的特征并映射到一個標量值,可以得到預測的損失值。損失預測模塊輸出的預測損失值越大,說明該樣本在預測時很有可能被分錯類。標注可能被分錯類的樣本,可以有效處理判別器出現(xiàn)的錯誤預測情況,從而提高模型的穩(wěn)定性和性能,對模型也是有益的。
不確定性樣本選擇算法的偽代碼如下所示。
輸入:源項目S,目標項目T
輸出:不確定性樣本[x]
1.初始化[x]
2.P,f←trainClassifier(S,T)
//得到判別器P及判別器每一層的特征值f
3.Loss←trainLossPrediction(f)" " " " " " " //得到損失預測模塊
4.for i = 1 to n do
[x1], f ←[argmaxx∈UP(y=uψ(x))]
//得到不確定性樣本及每一層的特征值
[x2]←Loss(f)" " " " " " " " " " " " " " " " " "http://得到不確定性樣本
[x]←[x?x1?x2]" " " " " " " " " " " " " " " " " " " " " //樣本合并
5.return [x]
2.2" 基于領(lǐng)域知識的缺陷數(shù)據(jù)選擇策略可解釋性模型
在可解釋性模型中,理解模型在特定實例附近的行為是至關(guān)重要的。因此,為了減少局部擾動的隨機性,本文提出一種基于領(lǐng)域知識的數(shù)據(jù)選擇策略可解釋模型,引入領(lǐng)域知識,有效減少局部擾動的隨機性,從而更準確地理解模型在特定實例附近的行為,具體過程如圖3所示。
當對一個實例進行擾動時,假設擾動的范圍足夠小,則擾動后的樣本標簽應該與原始實例的標簽保持一致。這意味著擾動后的樣本應該與原樣本仍然屬于同一類別,即具有局部標簽一致性。
通過確保局部數(shù)據(jù)集具有標簽一致性,可以更可靠地研究模型對特定實例的行為和預測結(jié)果,從而提高模型的解釋性和可靠性。
為了得到具有局部標簽一致性的局部數(shù)據(jù)集,本文在滿足特定實例決策規(guī)則的特征限定條件下進行擾動。決策規(guī)則是一組條件語句,它們基于輸入數(shù)據(jù)的特征進行決策。每個條件語句都包含一個特征限定條件,用于確定數(shù)據(jù)點是否滿足該條件。因此,符合某個特定的決策規(guī)則意味著數(shù)據(jù)點的標簽是一致的。首先,使用RuleFit得到如圖4所示的決策規(guī)則示例。
圖4中第1列rule代表規(guī)則;第2列是其類型,一般該值為規(guī)則或者是線性變量;第3列是系數(shù);第4列是支持度,代表有多少比例的樣本滿足該規(guī)則。
給定一個實例,首先從RuleFit模型生成的規(guī)則中篩選出類型為rule的規(guī)則;之后,對這些規(guī)則進行詳細分析,找到該實例符合且具有較多限定條件的n個決策規(guī)則;最后,對這n個規(guī)則進行歸納總結(jié),以最小的取值范圍作為符合該實例決策規(guī)則的特征限定條件,并使用產(chǎn)生式規(guī)則表示法進行表示。符合特定實例決策規(guī)則的特征限定條件具體形式如圖5所示。
圖5中,if部分給出了條件,即某個實例具體的各個特征值;相對應地,then部分描述了行為,即特定實例決策規(guī)則的特征限定條件。
領(lǐng)域知識生成算法的偽代碼如下所示。
輸入:特定實例x,數(shù)據(jù)集dataset
輸出:特征的閾值條件value_ranges
1. rule←RuleFit(dataset)
2. rules_satisfies←most_satisfies_rule(x, rule)
3. min_max_values←find_min_max_values(dataset)
4. value_ranges←find_value_ranges(rules_satisfies,
min_max_ values)
5. return value_ranges
給定一個樣本x并依據(jù)特征限定條件對樣本進行擾動,生成具有局部標簽一致性的局部數(shù)據(jù)集inverse;之后,對局部數(shù)據(jù)集的連續(xù)特征進行離散化處理,將其轉(zhuǎn)換為分類特征,生成一個離散數(shù)據(jù)集Z;然后,利用“黑盒”模型f對離散數(shù)據(jù)集Z進行預測,得到其輸出f(Z);最后,將f(Z)作為解釋模型g的標簽,這個標簽用于反映模型對擾動后樣本的預測結(jié)果,從而提供關(guān)于模型在局部數(shù)據(jù)集上行為的信息。
3" 實驗設置
3.1" 數(shù)據(jù)集
為驗證IAL4SD的有效性,本文使用文獻[19]提供的數(shù)據(jù)集進行實驗。該數(shù)據(jù)集共包含6個開源項目,涵蓋了C/C++和Java兩種最流行的編程語言。本文主要選用了該數(shù)據(jù)集中規(guī)模較大的3個項目,數(shù)據(jù)集的詳細信息如表1所示。表中顯示了每個代碼變更的特征維數(shù)、代碼變更的總數(shù)以及導致缺陷的變更占所有變更的百分比。
3.2" 實驗評估
3.2.1" 即時缺陷評估指標
即時軟件缺陷預測是一個二分類問題,假設模型預測的結(jié)果為正例(有缺陷變更),記為1;預測的結(jié)果為負例(無缺陷變更)記為0,則可以得到如表2所示的混淆矩陣。其中,TP表示正確預測有缺陷變更的數(shù)量,F(xiàn)P表示將無缺陷變更預測為引入缺陷變更的數(shù)量,F(xiàn)N表示將有缺陷變更預測為無缺陷變更的數(shù)量,TN表示正確預測無缺陷變更的數(shù)量。
實驗主要采用F1和AUC兩個指標來評估本文所提出的IAL4SD方法是否有效。
F1是結(jié)合了精確率和召回率的綜合性能指標,是精確率和召回率的調(diào)和平均,計算公式如下:
[F1=2×Precision×RecallPrecision+Recall] (1)
式中:Precision代表精確率;Recall代表召回率。
AUC指受試者工作曲線(ROC Curve)下的面積,反映了模型在不同閾值下真正例率(True Positive Rate, TPR)和假正例率(False Positive Rate, FPR)之間的綜合性能。AUC的值越高,分類器將正例排在負例前面的能力越強,即分類器的性能越好。
3.2.2" 可解釋性評估指標
為驗證IAL4SD能否有效提高模型的解釋性能,本文主要使用解釋的一致性[20]、解釋的保真度[21]兩個定量評估方法對可解釋性模型進行評估。
一致性是指對于2個相似的數(shù)據(jù)點x和x′,其預測解釋也應該是接近相等的。文獻[22]使用余弦相似度來衡量解釋的一致性,余弦相似度越大,表明解釋的一致性越好。
解釋的保真度是指利用解釋方法給出的預測結(jié)果與待解釋模型預測結(jié)果之間的均方根誤差[23],主要描述解釋模型在何種程度上準確模仿原模型。解釋的保真度計算公式如下:
[RMSE=i=1n(pi-pi)n] (2)
式中:[pi]代表從“黑盒”模型中獲得的單個預測;[pi]代表從解釋方法獲得的近似預測;n是測試數(shù)據(jù)樣本的總數(shù)。RMSE的值越小,說明解釋模型的預測結(jié)果越接近“黑盒”模型的預測結(jié)果,即解釋的保真度更高。
3.3" 實驗設置
為驗證主動學習的有效性,本文將選取不使用主動學習的方法,并與Uncertainty、QBC(Query By Committee)以及Random這三個使用主動學習的方法進行對比。在使用主動學習的方法中,采用CNN作為判別器,ResNet18作為標注模型,將Epoch設置為200,在每次進行主動學習的迭代時,都從目標項目中挑選出1 280個樣本,對其進行標注后放入源項目中。相對地,對于不使用主動學習的方法(Burak?SD),本文將采用Burak過濾方法,計算目標項目中每個實例與源項目實例之間的歐氏距離,然后選擇距離最近的10個實例作為訓練集,從而達到減小跨項目之間的分布差異的目的。
為驗證IAL4SD是否能較好地解釋數(shù)據(jù)選擇策略這一“黑盒”模型,本文將選取LIME、全局代理模型以及RuleFit模型進行對比。在IAL4SD和LIME模型中,當對特定實例進行擾動時,生成5 000個樣本作為局部數(shù)據(jù)集。全局代理模型從全局的角度建立一個簡化的決策樹模型來近似“黑盒”模型的行為,并提供更容易理解的解釋。RuleFit方法是一種結(jié)合決策樹和線性模型的算法,在決策樹的基礎上生成規(guī)則,并將這些規(guī)則作為特征輸入到線性模型中,從而構(gòu)建一個同時具有高預測性能和可解釋性的模型。
3.4" 實驗結(jié)果
3.4.1" 主動學習有效性實驗結(jié)果分析
為驗證主動學習的有效性,選取不使用主動學習(Burak?SD)以及Uncertainty、QBC(Query By Committee)、Random三個不同的主動學習樣本選擇策略進行對比,F(xiàn)1指標和AUC指標實驗結(jié)果分別如表3、表4所示。
從表3中可以看出:在Eclipse JDT數(shù)據(jù)集上, IAL4SD的F1值比Burak?SD提高了0.175,比Uncertainty提高了0.11,比QBC提高了0.12,比Random提高了0.115;在Mozilla數(shù)據(jù)集上,IAL4SD的F1值比Burak?SD提高了0.275,比Uncertainty提高了0.05,比QBC提高了0.06,比Random提高了0.065。這表明,在Eclipse JDT和Mozilla數(shù)據(jù)集上,IAL4SD均能在Precision和Recall之間取得較好的平衡。在PostgreSQL數(shù)據(jù)集上,IAL4SD的F1值比Burak?SD提高了0.095,比Uncertainty提高了0.15,比QBC提高了0.11,比Random略低了0.04。這表明PostgreSQL這個特定數(shù)據(jù)集上,IAL4SD的性能介于Burak?SD、Uncertainty、QBC和Random之間。同時,IAL4SD的平均F1值比Burak?SD提高了0.182,比Uncertainty提高了0.104,比QBC提高了0.097,比Random提高了0.047。這表明從整體上看,IAL4SD也可以在Precision值和Recall值之間取得了較好的平衡,即同時具有較高的精確性和覆蓋率。
從表4中可以看出,在Eclipse JDT數(shù)據(jù)集上, IAL4SD的AUC值比Burak?SD提高了0.076,比Uncertainty提高了0.081,比QBC提高了0.063,比Random提高了0.036。在Mozilla數(shù)據(jù)集上,IAL4SD的AUC值比Burak?SD提高了0.037,比Uncertainty提高了0.029,比QBC提高了0.067,比Random提高了0.085。這表明,在Eclipse JDT和Mozilla數(shù)據(jù)集上,IAL4SD均可以更好地區(qū)分正例樣本和負例樣本。在PostgreSQL數(shù)據(jù)集上,IAL4SD的AUC值比Burak?SD提高了0.074,比Uncertainty提高了0.082,比QBC提高了0.081,比Random略低了0.052。這表明PostgreSQL這個特定數(shù)據(jù)集上,IAL4SD的性能介于Burak?SD、Uncertainty、QBC和Random之間。同時,IAL4SD的平均AUC值比Burak?SD提高了0.063,比Uncertainty提高了0.064,比QBC提高了0.071,比Random提高了0.023。這代表著IAL4SD可以更好地區(qū)分正類別和負類別樣本,整體分類效果更優(yōu)秀。
綜上所述,無論是F1指標還是AUC指標,IAL4SD的性能均高于其他四種方法。因此,IAL4SD在該標注問題上具有更好的性能,也展示了主動學習方法的潛力和有效性,為解決標注問題提供了一種有效的解決途徑。
3.4.2" 與主流可解釋模型的比較
為了測試算法的性能,選取了LIME、全局代理模型和RuleFit三個不同的可解釋模型作為對比,一致性指標和RMSE指標實驗結(jié)果分別如表5、表6所示。
從表5中可以看出,在Eclipse JDT數(shù)據(jù)集上,IAL4SD的一致性指標比LIME低了0.193 3,比全局代理模型高了0.319 5,比RuleFit高了0.221 6。在PostgreSQL數(shù)據(jù)集上,IAL4SD的一致性指標比LIME低了0.04,比全局代理模型高了0.459 6,比RuleFit高了0.327 6。這表明在Eclipse JDT和PostgreSQL數(shù)據(jù)集上,IAL4SD的性能介于全局代理模型、RuleFit和LIME之間。在Mozilla數(shù)據(jù)集上,IAL4SD的一致性指標比LIME高了0.026 7,比全局代理模型高了0.519 7,比RuleFit高了0.402。這表明在該數(shù)據(jù)集上,IAL4SD模型在解釋相似數(shù)據(jù)點時具有更好的一致性,即生成的解釋結(jié)果在相似數(shù)據(jù)點之間更加穩(wěn)定和一致。同時,IAL4SD模型的平均一致性指標比LIME低了0.068 9,比全局代理模型增加了0.432 9,比RuleFit增加了0.317。這意味著IAL4SD模型在解釋相似數(shù)據(jù)點時的一致性較差。這可能是因為使用RuleFit生成決策規(guī)則并不能全面反映數(shù)據(jù)集的特征分布和模型的行為。
從表6中可以看出,在Eclipse JDT數(shù)據(jù)集上,IAL4SD的RMSE指標比LIME低了8.774 1,比全局代理模型低了768.059 9,比RuleFit低了30.320 8。這意味著在該數(shù)據(jù)集上,IAL4SD的保真度均比LIME、全局代理模型和RuleFit這三個模型高。在Mozilla數(shù)據(jù)集上,IAL4SD的RMSE指標比LIME低了363.546 3,比全局代理模型高了102.359 3,比RuleFit低了633.592 2。這意味著在Mozilla這個特定的數(shù)據(jù)集上,IAL4SD的保真度低于全局代理模型,卻高于LIME、RuleFit模型。在PostgreSQL數(shù)據(jù)集上,IAL4SD的RMSE指標比LIME高了147.336 5,比全局代理模型低了49.377 1,比RuleFit高了115.711 6。這意味著在PostgreSQL這個特定的數(shù)據(jù)集上,IAL4SD模型的保真度高于全局代理模型,但相對于LIME、RuleFit模型卻具有較低的保真度。同時,IAL4SD的平均RMSE指標比LIME低了74.994 6,比全局代理模型減少了238.359 2,比RuleFit減少了182.733 8。由于RMSE值越低,代表著模型解釋的保真度更高,這意味著IAL4SD模型的保真度均高于其他三種方法,即該模型預測結(jié)果更接近于“黑盒”模型的預測結(jié)果,相比之下,IAL4SD模型更準確地模擬了原模型的行為。
綜上所述,IAL4SD模型雖然在解釋相似數(shù)據(jù)點時稍顯不足,但在模型解釋的保真度方面具有更低的RMSE指標,說明其預測結(jié)果更接近于“黑盒”模型的預測結(jié)果。因此,IAL4SD模型能更準確地模擬“黑盒”模型的行為,提高可解釋模型的性能。
4" 結(jié)" 語
本文提出了一種面向可解釋性的軟件缺陷預測主動學習方法IAL4SD,通過主動學習挑選出一批不確定樣本并交給專家進行標注,解決了數(shù)據(jù)標注成本過高的問題。通過使用領(lǐng)域知識對給定實例進行擾動生成局部數(shù)據(jù)集,并使用線性模型在局部數(shù)據(jù)集上模擬數(shù)據(jù)選擇策略這一“黑盒”模型的行為,解決了主動學習數(shù)據(jù)選擇策略缺乏可解釋性的問題。
本文首先分析了軟件缺陷數(shù)據(jù)標注方法代價高以及主動學習數(shù)據(jù)選擇策略缺乏可解釋性的問題;其次詳細介紹了的原理和算法;最后在公開數(shù)據(jù)集上進行實驗,驗證了主動學習的有效性,且和主流的可解釋模型進行比較。實驗結(jié)果表明,本文提出的方法可以有效提高軟件缺陷數(shù)據(jù)標注的效率,并在降低成本的同時提高模型的可解釋性。
IAL4SD采用了近似的方法來模擬模型的決策行為,從局部的角度解釋模型的單個決策結(jié)果。但IAL4SD模型只能捕獲“黑盒”模型的局部特征,無法解釋模型的整體決策行為。因此如何將局部解釋性方法與全局解釋性方法相結(jié)合,從而實現(xiàn)對模型整體決策行為的解釋,是未來的研究方向。
注:本文通訊作者為李勇。
參考文獻
[1] 田笑,常繼友,張弛,等.開源軟件缺陷預測方法綜述[J].計算機研究與發(fā)展,2023,60(7):1467?1488.
[2] MOSKOVITCH R, NISSIM N, STOPEL D, et al. Improving the detection of unknown computer worms activity using active learning [C]// KI 2007: Advances in Artificial Intelligence. Osnabrück, Germany: Springer, 2007: 489?493.
[3] LIU P, WANG L, HE G, et al. A survey on active deep learning: from model driven to data driven [EB/OL]. [2023?07?12]. https://www.xueshufan.com/publication/3164803610.
[4] COHN D, ATLAS L, LADNER R. Improving generalization with active learning [J]. Machine learning, 1994, 15: 201?221.
[5] LI M, ZHANG H, WU R, et al. Sample?based software defect prediction with active and semi?supervised learning [J]. Automated software engineering, 2012, 19(2): 201?230.
[6] QU Y, LI F, CHEN X. LAL: Meta?active learning?based software defect prediction [J]. International journal of performability engineering, 2020, 16(2): 203.
[7] QU Y, CHEN X, CHEN R, et al. Active learning using uncertainty sampling and query?by?committee for software defect prediction [J]. International journal of performability engineering, 2019, 15(10): 2701.
[8] XU Z, LIU J, LUO X, et al. Cross?version defect prediction via hybrid active learning with kernel principal component analysis [C]// 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER). [S.l.]: IEEE, 2018: 209?220.
[9] LU H, KOCAGUNELI E, CUKIC B. Defect prediction between software versions with active learning and dimensionality reduction [C]// 2014 IEEE 25th International Symposium on Software Reliability Engineering. [S.l.]: IEEE, 2014: 312?322.
[10] YUAN Z, CHEN X, CUI Z, et al. ALTRA: cross?project software defect prediction via active learning and tradaboost [J]. IEEE access, 2020, 8: 30037?30049.
[11] LIU Q, LIU Z, ZHU X, et al. Deep active learning by model interpretability [EB/OL]. [2023?04?12]. http://arxiv.org/abs/2007.12100v3.
[12] MAHAPATRA D, POELLINGER A, SHAO L, et al. Interpre?tability?driven sample selection using self supervised learning for disease classification and segmentation [J]. IEEE transactions on medical imaging, 2021, 40(10): 2548?2562.
[13] JIA S, LI Z, CHEN N, et al. Towards visual explainable active learning for zero?shot classification [J]. IEEE transactions on visualization and computer graphics, 2021, 28(1): 791?801.
[14] SAADALLAH A, MORIK K. Active sampling for learning interpretable surrogate machine learning models [C]// 2020 IEEE 7th International Conference on Data Science and Advanced Analytics. [S.l.]: IEEE, 2020: 264?272.
[15] PHILLIPS R, CHANG K H, FRIEDLER S A. Interpretable active learning [C]// Conference on Fairness, Accountability and Transparency. [S.l.]: PMLR, 2018: 49?61.
[16] RIBEIRO M T, SINGH S, GUESTRIN C. Why should i trust you?\" Explaining the predictions of any classifier [C]// Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. San Francisco, California, USA: ACM, 2016: 1135?1144.
[17] GISSIN D, SHALEV?SHWARTZ S. Discriminative active lear?ning [EB/OL]. [2023?11?27]. http://arxiv.org/abs/1907.06347v1.
[18] DONGGEUN Y, KWEON I S. Learning loss for active lear?ning [C]// Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach, CA, USA: IEEE, 2019: 93?102.
[19] YASUTAKA K, EMAD S, BRAM A, et al. A large?scale empirical study of just?in?time quality assurance [J]. IEEE transactions on software engineering, 2012(39): 757?773.
[20] 陳珂銳,孟小峰.機器學習的可解釋性[J].計算機研究與發(fā)展,2020,57(9):1971?1986.
[21] 紀守領(lǐng),李進鋒,杜天宇,等.機器學習模型可解釋性方法、應用與安全研究綜述[J].計算機研究與發(fā)展,2019,56(10):2071?2096.
[22] CHU L Y, HU X, HU J H, et al. Exact and consistent interpretation for piecewise linear neural networks: a closed form solution [C]// Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York, USA: ACM, 2018: 124?125.
[23] GUO W B, MU D L, XU J, et al. LEMNA: explaining deep learning based security applications [C]// Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security New York, USA: ACM, 2018: 364?379.
作者簡介:王" 越(1998—),女,山西運城人,碩士研究生,主要研究方向為機器學習可解釋性。
李" 勇(1983—),男,山西晉中人,博士后,副教授,主要研究方向為可信機器學習與智能軟件工程。
張文靜(1995—),女,甘肅蘭州人,碩士研究生,主要研究方向為增量預測與可解釋性學習。
DOI:10.16652/j.issn.1004?373x.2024.20.016
引用格式:王越,李勇,張文靜.面向可解釋性的軟件缺陷預測主動學習方法[J].現(xiàn)代電子技術(shù),2024,47(20):101?108.
收稿日期:2024?04?02" " " " " "修回日期:2024?05?06
基金項目:新疆自治區(qū)自然科學基金項目(2022D01A225);新疆自治區(qū)重點研發(fā)計劃項目(2022B01007?1)