?

一種基于半監督集成學習的軟件缺陷預測方法?

2024-01-23 13:38朱麗娜
計算機與數字工程 2023年10期
關鍵詞:黏菌軟件缺陷特征選擇

張 瑩 朱麗娜

(1.淮北理工學院電子與信息工程學院 淮北 235000)(2.淮北師范大學物理與電子信息學院 淮北 235000)(3.廣西財經學院信息與統計學院 南寧 530003)

1 引言

近年來,隨著信息化技術的高速發展,軟件產品的數量急劇增加,在為生活帶來便利的同時,由于種種原因都可能產生軟件缺陷。軟件內部隱藏的缺陷可能導致輕則無法滿足用戶的需求,重則嚴重影響軟件質量造成經濟損失,甚至會危及到人們的生命安全。對軟件中包含的缺陷進行預測,開發人員可以基于預測結果分配有限的資源,以緩解開發過程中軟件測試的壓力,從而提高軟件質量。

軟件缺陷預測數據普遍存在著類不平衡的問題,常常造成預測結果偏向多數類,對少數類的預測精度降低。數據不平衡會導致預測模型的誤分類代價較高、模型的泛化能力較差。因此,在軟件缺陷預測中,需要重點考慮如何在一個不平衡的數據集中訓練出一個更合適的分類模型,從而提高小樣本的預測精度。

2 相關工作

針對標簽樣本不足,可以運用半監督學習的思想充實樣本集。廖勝平等[1]基于半監督學習與SVM 構建預測模型,在訓練集數據較少、無歷史數據或者標簽信息較少時都能獲得較好的預測性能。Li等[2]提出一種名為EATT 的半監督缺陷預測模型,結果表明該模型不僅可以獲得較高的分類精度,還具有很高的實用價值。

針對數據的特征冗余,目前已有很多特征處理的方法可供選擇,蔣帥[3]在實驗中選擇更具有判別性和規律性的特征,移除無關特征,具有較好的預測效果和較高的應用價值。張俐等[4]提出WMRI特征選擇算法改善特征子集的質量并提高分類精度。

針對類不平衡問題,大多數人會選擇簡單有效的數據重采樣。Malhotra等[5]通過改進SPIDER2過采樣方法提出了SPIDER3,同時還發現了在不平衡數據集中利用過采樣方法可提高機器學習分類器的缺陷預測性能。其次,也會選擇集成學習和代價敏感學習方法。如王鐵建等[6]提出基于SSEL 的軟件缺陷預測方法,預測效果良好。還有典型的代價敏感決策樹算法—ICET方法[7]。

為了構建更高性能的預測模型,人們將分類思想相互結合形成綜合方案。例如Iqbal 等[8]提出一種基于特征選擇的集成分類框架,該框架的性能優于其他分類技術,但無法解決類不平衡問題。Zhou等[9]結合核心主成分分析(KPCA)和加權極限學習機(WELM)提出了名為KPWE 的缺陷預測框架。類似還有結合多核學習的Boosting 集成方法[10]、通過平衡訓練集后使用NB算法得到映射子集最終集成的方法[11]、基于混合采樣和三種基分類器集成的SSIDP算法[12]等。

綜上,人們都會在數據的預處理階段進行數據的重采樣或特征處理,也會結合不同的分類思想來構建模型,但將半監督學習、數據重采樣、特征選擇和集成學習綜合使用的研究卻很少。針對上述軟件缺陷預測中可能存在的若干問題,本文重點關注類不平衡和特征冗余問題,借鑒目前較成熟的方法并對其綜合考慮,提出一種改進的軟件缺陷預測方法。

3 改進的軟件缺陷預測方法

改進的軟件缺陷預測方法如圖1 所示。首先,對訓練集進行混合采樣以獲取一個相對平衡的訓練集;然后,對采樣后的訓練集和測試集進行SMA特征選擇選取效果最優的若干特征,以降低數據的特征冗余;最后,使用改進的半監督Adaboost 算法進行集成,得到最終的預測結果。

3.1 采樣方法

軟件缺陷預測中的數據在分布方面很不平衡,大多數都是沒有缺陷的模塊。處理不平衡數據最直觀有效的方法就是數據分布調整,即抽樣法,實現對不平衡數據的再平衡采樣。本文對數據先欠采樣[13]后SMOTE 采樣[14]以彌補兩者的不足,達到緩解數據類不平衡的目的。

3.2 特征選擇

數據中包含大量的特征,這些特征中只有小部分特征對預測類別提供有用信息,所以若能將這些毫無用處的特征去掉,不僅可以降低計算成本,也能提高分類性能。同時各樣本之間存在相似數據,不僅會增加模型構建的時間,也會降低數據預測的準確性。因此,應進行特征選擇以減少數據中特征的冗余,形成新的數據子集。

本文采用SMA 優化算法對數據進行特征選擇,選擇效果最優的若干特征。黏菌算法(Slime Mould Algorithm,SMA)是一種通過模擬黏菌在覓食過程中的行為和形態變化得到的優化算法[15]。通過使用權重來模擬黏菌在覓食過程中產生的正反饋和負反饋,從而形成三種不同的形態,黏菌在覓食過程中發現食物時,會有振蕩收縮的特性[16]。

用數學公式表示黏菌接近食物的行為

其中,t 為當前迭代次數;Pb(t)為當前最優個體位置;PA(t)和PB(t)為從黏菌中隨機選擇的兩個個體位置;W 為權重;vb和vc為控制參數,vb?[-a,a],vc從1到0線性遞減;c為[0,1]的隨機數。

參數a、p和權重W的公式如下:

其中,SI(n)為適應度值排序,S(n)為當前個體適應度值,n=1,2,3…N,cof表示群體中適應度值排名前一半的部分,others表示余下的個體;bF為當前迭代取得的最佳適應度;WF 為當前迭代取得的最差適應度值。

即使黏菌已經找到了更好的食物來源,但仍會分離一些個體去探索其他領域試圖尋找更高質量的食物來源,黏菌位置更新公式如下:

其中,UB 和LB 分別為上界和下界;rand 和c 為[0,1]的隨機數;z為自定義參數。

3.3 集成學習

集成學習結合多個基分類器進行學習構建最終的分類模型,是目前比較熱門的分類學習方法。集成學習在一定程度上也可以緩解數據的分布不平衡。

本文提出一種基于UDEED算法[17]改進的半監督AdaBoost 算 法[18]—SUDAdaBoost(Semi-supervised AdaBoost based on unlabeled data)。UDEED算法不僅能最小化集成學習器在有標簽訓練樣本上的損失函數的,而且利用無標簽訓練樣本能最大化地提升基學習器的多樣性?;诖?,SUDAda-Boost算法在從訓練的弱分類器集合中選擇個體分類器時,同時考慮誤差和不同分類器間的多樣性。

在第t-1次迭代確定的基分類器對無標簽訓練樣本分類時,利用相關系數ρij對不同基分類器間的預測結果進行多樣性度量:

ρij?[-1,1]表示分類器,hi與hj的相似性。若hi與hj正相關,則ρij為正;若hi與hj負相關,則ρij為負;若hi與hj之間無關,則ρij為0。ρij越小,表明兩個分類器相似度越小,差異性越大。

評價n 個分類器的多樣性,需要計算每對分類器之間多樣性的平均值,其中Div 表示兩個分類器之間的多樣性。

基分類器選擇策略:

ρt-1表示候選基分類器與上一輪迭代中已確定基分類器之間的相關系數值;w1為選擇基分類器時錯誤率所占比重;w2為已進行集成的前t 個基分類器之間的平均相關系數值,且w1+w2=1。

算法SUDAdaBoost的集成步驟如下:

4 實驗與分析

4.1 數據集

選用具有代表性的NASA 數據集(清洗后)、AEEEM 數據集和MORPH 數據集開展實驗。表1列出了所用數據集的部分信息。

表1 數據集信息

4.2 實驗結果與分析

實驗設定訓練集和測試集各50%,其中有標簽訓練集和無標簽訓練集各占20%和80%,迭代次數T=100,基分類器為單層決策樹,數量50 個。實驗另選取了四種典型的機器學習分類算法(NB、RF、DT 和AdaBoost)與SSFSAdaBoost 算法作對比,選用Accuracy、Precision、Recall 和F1-measure 為評估指標。表2、表3、表4 和表5 分別為這幾種算法的Accuracy、Precision、Recall和F1-measure值。

表2 Accuracy結果比較

表3 Precision結果比較

表4 Recall結果比較

表5 F1-measure結果比較

上述數據表明,SSFSAdaBoost算法與其他四種典型算法相比具有明顯的優勢。從這四種評估指標的結果來看,SSFSAdaBoost 算法比原始的Ada-Boost算法性能更優;NB、RF和DT的某一評估指標可能會高于SSFSAdaBoost算法,但從整體而言,SSFSAdaBoost算法依然優于它們。同時也反映出SSFSAdaBoost 算法在緩解類不平衡問題上取得了優異的成績。

為了更清晰地反映出實驗的對比度,圖2 展示了上述算法評估指標的平均值。NB 算法的Accuracy、Precision、Recall 和F1-measure 平均值為84.85%、93.7%、89.51%和94.88%;RF 算法的Accuracy、Precision、Recall 和F1-measure 平均值為90.7%、92.99%、96.98%和94.53%;DT 算法的Accuracy、Precision、Recall 和F1-measure 平均值為88.33%、93.18%、93.74%和93.32%;AdaBoost 算法的Accuracy、Precision、Recall 和F1-measure 平均值為90.64%、92.89%、96.4%和93.86%;SSFSAdaBoost算法的Accuracy、Precision、Recall 和F1-measure 平均值為93.42%、94.51%、97.3%和95.86%??梢悦黠@看出,SSFSAdaBoost 算法的各項平均值均為最高,整體都要優于其他四種典型分類算法。

圖2 各算法評估指標平均值

5 結語

本文提出一種改進的基于半監督集成學習的軟件缺陷預測方法SSFSAdaBoost:利用混合采樣對訓練集進行預處理以降低數據的不平衡度;利用SMA優化算法做特征選擇以緩解特征冗余;利用改進的半監督集成算法SUDAdaBoost 提高預測精度。實驗表明該方法要比原始的AdaBoost 算法更好,對緩解類不平衡效果較好且整體預測準確度更高。下一步將繼續針對標記樣本不足的問題,探究遷移學習在半監督預測模型上的應用。

猜你喜歡
黏菌軟件缺陷特征選擇
黏糊糊的生命
黏菌觀察記
養群黏菌當寵物
基于源文件可疑度的靜態軟件缺陷檢測方法研究
黏菌一點不簡單
基于NPE-SVM的軟件缺陷預測模型
開源程序的軟件缺陷分布特征的量化分析研究
Kmeans 應用與特征選擇
聯合互信息水下目標特征選擇算法
軟件缺陷管理方案分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合