王存?zhèn)?/p>
(四川大學計算機學院,成都 610065)
基于統(tǒng)計抽樣和模糊支持向量機的缺陷分派研究
王存?zhèn)?/p>
(四川大學計算機學院,成都 610065)
傳統(tǒng)軟件缺陷分派往往將其轉化為分類問題,從歷史數(shù)據(jù)和機器學習算法的使用兩方面解決。然而,軟件缺陷報告數(shù)據(jù)經(jīng)常是非均衡的,且數(shù)據(jù)中蘊含著模糊的信息,使傳統(tǒng)的分類方法達不到好的預測效果。提出基于統(tǒng)計抽樣的方法,克服缺陷報告數(shù)據(jù)存在的非均衡性,采用模糊支持向量機處理數(shù)據(jù)中所蘊含的模糊信息。實驗表明,采用統(tǒng)計抽樣和模糊支持向量機,確實對缺陷分派是有效的,與以往的方法相比,提高缺陷分派的準確率。
軟件缺陷分派;機器學習;統(tǒng)計抽樣;模糊支持向量機
隨著軟件規(guī)模的不斷增大,軟件開發(fā)和版本的更新伴致使大量缺陷被發(fā)現(xiàn)和提交。在軟件項目中,新的缺陷被提交以后,往往需要通過人工分派的方式進行處理,即由相關人員閱讀完缺陷報告之后,根據(jù)經(jīng)驗選定合適的缺陷修復者對缺陷進行修復。但新的缺陷分派給合適的開發(fā)人員去修復,將耗費大量的人力和時間。
對軟件缺陷分派,即利用缺陷跟蹤系統(tǒng)中已解決缺陷的信息,幫助新提交的缺陷報告進行有效地分派,來幫助系統(tǒng)開發(fā)與維護人員節(jié)省更多的時間用于缺陷的修復。及時修復軟件中發(fā)現(xiàn)的缺陷來維護系統(tǒng)的正確性,是保證軟件質量和保持開發(fā)進度的重要基礎。因此,利用現(xiàn)有的缺陷跟蹤系統(tǒng)的數(shù)據(jù)所包含的有用信息,結合信息處理,數(shù)據(jù)挖掘等領域的技術,對新提交的軟件缺陷報告實施自動分派便成了需要關注和解決的問題。一般地,在對缺陷報告進行分派時,經(jīng)常將每一個缺陷報告看成一個文檔,從中提取相關缺陷描述信息,使用向量空間模型進行表征,進而將缺陷分派問題轉換為文本分類問題來解決,再使用機器學習算法作為分類器來達到分派修復者的目的[1]。
然而,以往的缺陷分派方法多數(shù)基于傳統(tǒng)分類模型,它們常常是在數(shù)據(jù)集中各類樣本數(shù)目基本均衡的前提下構建的,注重提高整體分類效果,卻不考慮類別的分布狀況,所得的最終分類模型傾向于將小類歸于大類,以此獲得最小的誤差分類率[2]。若直接將其應用到缺陷分派問題中,則會因該問題的特殊性而無法達到預期的效果。
缺陷分派有其自身的特點,缺陷報告中文本描述信息較短、類別(即缺陷報告對應的缺陷的修復者)較多、每個修復者修復缺陷數(shù)目大小分布不均勻[3]等導致了所處理的數(shù)據(jù)集的非均衡性,帶來了數(shù)據(jù)中信息的不確定性和模糊性,使得無法直接有效地將傳統(tǒng)分類模型應用于缺陷分派。
針對存在的問題,本文開展了以下工作:采用統(tǒng)計抽樣的方法在缺陷報告數(shù)據(jù)的預處理階段解決其非均衡性,使得數(shù)據(jù)集均衡化,然后使用模糊支持向量機替換常用的分類算法支持向量機來改善缺陷分派的準確率。

大型的軟件系統(tǒng)開發(fā)一般均有專門的缺陷跟蹤系統(tǒng)。它可以用來幫助開發(fā)者和質量維護人員記錄軟件缺陷,為產(chǎn)品的開發(fā)和質量維護提供數(shù)據(jù)支持,有效保證軟件質量。
缺陷報告是缺陷跟蹤系統(tǒng)中用來描述某個軟件缺陷的相關文檔。作為缺陷跟蹤系統(tǒng)中主要的數(shù)據(jù)信息,軟件缺陷報告通過多個屬性刻畫了缺陷的各維度信息。不同的缺陷跟蹤系統(tǒng)對缺陷報告的刻畫略有不同。以Eclipse的缺陷跟蹤系統(tǒng)Bugzilla中缺陷報告為例,它的缺陷報告中包含有缺陷報告編號、缺陷出現(xiàn)的平臺、對應的軟件版本、缺陷狀態(tài)(即修復情況)、缺陷嚴重程度、被分派給誰來修復以及詳細描述該缺陷的Description信息等。同時,缺陷報告中有一個相應的活動日志來保存缺陷報告信息的修改記錄。由于軟件缺陷分派問題一般都轉換為一個文本分類問題來處理,所以軟件缺陷報告中缺陷的詳細描述信息Description字段將會成為解決問題的主要數(shù)據(jù)來源[1],其他屬性將成為缺陷分派的輔助信息。

軟件缺陷分派是利用已經(jīng)修復的缺陷報告的歷史信息,通過將這些歷史數(shù)據(jù)和新提交的缺陷報告進行對比的方法,將新提交的缺陷報告分派給合適的修復人員的過程。
一般地,將軟件缺陷分派問題作為一個分類問題處理,即利用已有缺陷報告的描述信息,已修復者作為每一個缺陷報告的標簽,訓練分類器,對新進的缺陷報告進行分類,盡可能地推薦出最合適的缺陷修復人員[4]。
但缺陷分派問題作為一個具體的應用,不能將其看成一個普通的分類問題。缺陷報告數(shù)據(jù)中類別較多,每個修復者修復的缺陷數(shù)目分布很不均勻,導致了所提取數(shù)據(jù)集存在嚴重的非均衡性,以往方法中將小類別數(shù)據(jù)直接剔除導致了數(shù)據(jù)信息的缺失。軟件缺陷報告文本描述信息雜亂,完全是用戶或者開發(fā)者按照個人的習慣書寫,使數(shù)據(jù)中蘊含更多模糊性信息,為缺陷的準確分派帶來了困難。因此,直接使用傳統(tǒng)的機器學習算法作為分類器自然無法得到理想的結果。

對數(shù)據(jù)集進行統(tǒng)計抽樣是用來解決非均衡分類問題主要的解決方法之一。它通過在數(shù)據(jù)預處理階段,將相應的訓練數(shù)據(jù)類分布均衡化來建立模型,以此進行分類。目前,非均衡數(shù)據(jù)分類的相關方法從數(shù)據(jù)層面采用的策略大致分為過抽樣、欠抽樣兩種方法[6]。
過抽樣,是抽樣處理不平衡數(shù)據(jù)最常用的方法。它是通過改變訓練數(shù)據(jù)的分布來消除或減小數(shù)據(jù)的不平衡。過抽樣方法通過增加少數(shù)類樣本來提高其分類性能,最簡單的辦法是復制少數(shù)類樣本,缺點是引入了額外的訓練數(shù)據(jù),會延長構建分類器所需要時間,沒有給少數(shù)類增加任何新的信息。為克服這些問題,有些改進算法被提出,如SMOTE[8]等。
欠抽樣,該方法通過減少多數(shù)類樣本來提高少數(shù)類的分類性能。最簡單的方法是通過隨機地去掉一些多數(shù)類樣本來減少多數(shù)類的規(guī)模。
本文采用的統(tǒng)計抽樣方法便是SMOTE方法。SMOTE方法作為一種改進的過抽樣算法,全名為Synthetic Minority Over-sampling Technique,主要思想是在距離較近的少數(shù)類樣本之間插入一個人工合成的少數(shù)類樣本,以此增加少數(shù)類樣本數(shù)量,均衡化數(shù)據(jù)集。

傳統(tǒng)的支持向量機[9](Support Vector Machine,SVM)只能解決訓練集是普通集合的情形,而在實際應用中,訓練集中的元素普遍存在模糊性。在SVM中引入模糊隸屬度,可使SVM推廣到具有模糊成員訓練集的SVM,即模糊支持向量機(Fuzzy Support Vector Ma-chine,F(xiàn)SVM)。模糊支持向量機的提出是針對支持向量機對訓練樣本內(nèi)的噪音和孤立點的敏感性,在支持向量機中引入模糊參數(shù),從而減弱噪音及孤立點對分類的影響。
設訓練集為S={(x1,y1,s1),(x2,y2,s2),…,(xl,yl,sl)},其中,xj∈Rn,yj∈{-1,1},σ≤sj≤1,σ為大于0的實數(shù);sj為訓練點(xj,yj,sj)的輸出yj=1(正類)或yj=-1(負類)的模糊隸屬度(j=1,2,…,l)。顯然,F(xiàn)SVM與傳統(tǒng)SVM最大的差異就在于模糊隸屬度sj的存在。由于模糊隸屬度sj是訓練點(xj,yj,sj)隸屬于某一類的程度,而參數(shù)ξj(j=1,2,…,l)是對錯分程度的度量,因此sjξj成為衡量對重要性不同的變量錯分程度的度量。對于線性問題,求最優(yōu)分類超平面問題轉化為求解如下二次規(guī)劃問題:

這里將模糊支持向量機從二分類問題擴展到多分類問題中[8]。

據(jù)上文所說,缺陷分派問題相較于一般的分類問題有其獨有的特點。通過對缺陷報告進行數(shù)據(jù)提取得到的數(shù)據(jù)集往往存在嚴重的非均衡性。通過對數(shù)據(jù)集統(tǒng)計抽樣,可以重構分類模型所需的數(shù)據(jù)集,克服原數(shù)據(jù)集的非均衡問題,以使之后建立的分類模型擁有更好的分類性能。在數(shù)據(jù)集均衡化之后,選用模糊支持向量機算法作為分類算法構建分類器,發(fā)揮其處理數(shù)據(jù)中所蘊含不確定和模糊信息的優(yōu)勢,使得缺陷分派精度得到改善。
總的來說,基于統(tǒng)計抽樣和模糊支持向量機的缺陷分派方法從缺陷分派問題的數(shù)據(jù)預處理和使用的分類方法兩方面來解決該問題。實驗設計框架如下。

圖1
實驗選取了Eclipse的缺陷跟蹤系統(tǒng)Bugzilla中 9000個缺陷報告。然后根據(jù)以下幾條規(guī)則對缺陷報告進行篩選:若缺陷報告處于“解決”狀態(tài),是被Assignee當中的開發(fā)者修復的,那么Assignee就是最后的修復者;若是一個重復的缺陷報告,修復者就是起初被重復的那個缺陷報告的修復者;若缺陷報告的“解決狀態(tài)”是“無法重現(xiàn)”或者是“無法修復”,那么這些缺陷報告則為沒有修復標簽的數(shù)據(jù),剔除[10]。
經(jīng)過篩選剔除后,還剩7746個缺陷報告。提取每個缺陷報告中Description中信息作為文本,修復缺陷的人作為文本的類別標簽,然后用TF-IDF(Term Fre-quency-Inverse Document)構建向量空間模型,將每個缺陷報告表示成單詞空間上的向量[11],如此便將缺陷報告表征為一個可以建立分類模型的特征空間。然后,使用SMOTE方法進行統(tǒng)計抽樣,以使特征空間數(shù)據(jù)均衡化。采用10折交叉驗證(即將數(shù)據(jù)集分成10份,每次取9份做訓練集,剩下的一份作為測試集)取平均值的方法進行模型的訓練及測試驗證,避免抽樣偏差影響實驗結果[11]。度量結果的準確率定義為:

為了驗證采用抽樣方法SMOTE和模糊支持向量機對缺陷分派方法的有效性,這里在不同的特征維度[12]50、100、150、200、300、400、500、700維下做了兩組實驗。圖2為對訓練集使用抽樣方法進行數(shù)據(jù)均衡化和未使用抽樣方法,最終采用支持向量機訓練模型[13]所得結果。圖3為對訓練集使用抽樣方法SMOTE后,分別采用支持向量機和模糊支持向量機訓練模型所得結果。
實驗結果表明,在使用傳統(tǒng)的支持向量機訓練分類模型之前,對訓練集進行抽樣使數(shù)據(jù)集均衡化確實顯著地提高了缺陷分派的準確率。同時,當對訓練數(shù)據(jù)集進行SMOTE抽樣后,再使用模糊支持向量機[14]作為分類算法構建分類器,確實相較一般支持向量機提高了缺陷分派的準確率。這是因為,抽樣方法在數(shù)據(jù)預處理階段的使用,改善了數(shù)據(jù)集中存在的非均衡性,模糊支持向量機算法也通過發(fā)揮其處理數(shù)據(jù)中不確定的、模糊的信息進一步提高了缺陷分派的準確率。這里,僅是通過分類器給出了一個修復缺陷的開發(fā)者,若給出一個可能的修復者列表,將可以大幅度提高分派的準確率[11]。

圖2 支持向量機缺陷分派率

圖3 支持向量機和模糊支持向量機缺陷分派
本文提出了基于統(tǒng)計抽樣和模糊支持向量機組合的軟件缺陷分派方法,從數(shù)據(jù)預處理和使用的分類器算法兩方面來解決問題。將抽樣方法應用到缺陷分派的數(shù)據(jù)預處理階段,來克服缺陷數(shù)據(jù)的非均衡性,有效地提高了缺陷分派的準確率。其次,在構建分類器時采用模糊支持向量機來發(fā)揮其處理模糊信息的優(yōu)勢。實驗表明,基于統(tǒng)計抽樣和模糊支持向量機的軟件缺陷分派方法,確實是可行并且有效的,與傳統(tǒng)方法相比,進一步提高了缺陷分派的準確率,有助于缺陷報告更加有效地分派給合適的修復者。
[1]Cubranic D,Murphy G C.Automatic Bug Triage Using Text Categorization[C].Proc.of the 16th International Conference on Software Engineering and Knowledge Engineering.Edinburgh,UK:2004
[2]Weiss,G.M.,McCarthy,K,Zabar,B.Cost-Sensitive Learning vs.Sampling:Which is Best for Handing Unbalanced Classes with Unequal Error Costs[C].Int Conf.on Data Mining,2007:35-41
[3]Anvik J,Hiew L,Murphy G C.Who Should Fix This Bug[C].Proc.of the 28th International Conf.on Software Engineering.Shanghai,China:2006
[4]J.Anvik.Automating Bug Report Assignment.In Proceedings of the 28th International Conference on Software Engineering,Pages 937-940.ACM,2006
[5]J.Xuan,H.Jiang.Z.Ren,J.Yan,Z.Luo.Automatic Bug Triage Using Semi-Supervised Text Classification
[6]Nathalie Japkowicz.Learning from Imbalanced Data Sets:a Comparison of Various Strategies[C].AAAI Workshop on Learning from Imbalanced Data Sets,2000:10-15
[7]C.Weiss,R.Premraj,T.Zimmermann,and A.Zeller.How Long Will It Take to Fix This Bug.Mining Software Repositories,2007. ICSE Workshops MSR07.Fourth International Workshop on,May 2007
[8]F.Sebastiani.Machine Learning in Automated Text Categorization.ACM Computing surveys(CSUR),34(1):1 47,2002
[9]Hui Han,Wen-Yuan Wang,Bing-Huan Mao.Borderline-SMOTE:A New Over-Sampling Method in Imbalanced Data Sets Learning [J].Lecture Notes in Computer Science,2005,3644:878-887
[10]J.T.Y.Kwok.Automated Text Categorization Using Support Vector Machine.In Proceedings of the International Conference on Neural Information Processing,1998
[11]J.K.Anvik.Assisting Bug Report Triage Through Recommendation.PhD thesis,University of British Columbia,2007
[12]Steve R.Gunn.Support Vector Machines for Classification and Regression.Technical Report,University of Southampton,F(xiàn)aculty of Engineering,Science and Mathematics;School of Electronics and Computer Science,1998
[13]Fabrizio Sebastiani.Machine Learning in Automated Text Categorization.ACM Computing Surveys,34(1):1-47,2002
[14]K.Shima,M.Todoriki,and A.Suzuki.SVM-Based Feature Selection of Latent Ssemantic Features.Pattern Recognition Letters,2004,25(9):1051-1057
Research on Software Bug Triage Based on Statistical Sampling and Fuzzy Support Vector Machine
WANG Cun-wei
(College of Computer Science,Sichuan University,Chengdu 610065)
Traditional software bug triage will often be treated as a classification problem to solve it by the processing of historical data and the use of machine learning algorithms.However,software bug report data is often unbalanced and contains fuzzy information,so that traditional classification methods can’t achieve a good effect.Comes up with statistical sampling methods to solve unbalance data and uses fuzzy support vector machine(FSVM)to deal with fuzzy information.Finally,the experimental results show that software bug triage is effective by adopting statistical sampling and FSVM.Compared with the previous methods,it really improves the accuracy of bug triage.
Software Bug Triage;Machine Learning;Statistical Sampling;Fuzzy Support Vector Machine
1007-1423(2016)08-0046-05
10.3969/j.issn.1007-1423.2016.08.009
王存?zhèn)ィ?989-),男,山西大同人,在讀碩士研究生,研究方向為經(jīng)驗軟件工程
2016-03-01
2016-03-10