付忠旺,肖 蓉,余 嘯,谷 懿
(1.湖北大學 計算機與信息工程學院,武漢 430062; 2.軟件工程國家重點實驗室(武漢大學),武漢 430072;3.湖北省教育信息化工程技術研究中心,武漢 430062)
軟件缺陷預測指的是通過從歷史軟件數(shù)據(jù)中學習出缺陷預測的模型,然后對新的軟件模塊進行預測,預測其是否有缺陷。如果預測該軟件模塊有缺陷則對該軟件模塊分配更多的軟件測試人員,這樣可以合理地分配測試資源。研究者已經(jīng)提出了很多軟件缺陷預測的方法[1-3]:陳翔等[4]總結(jié)了國內(nèi)外在該研究領域取得的主要成果,但這些研究者提出的軟件缺陷預測方法都是基于分類模型,即預測軟件模塊是否有缺陷;文獻[5-6]指出,如果采用回歸方法預測一個軟件模塊存在多少個缺陷時,可以優(yōu)先測試缺陷個數(shù)多的模塊,這樣能夠更好地分配測試資源。
舉例來說,假如一個軟件公司開發(fā)了一個包含有100個軟件模塊的新項目。由于項目交付時間提前,測試人員有限,在項目交付之前只能測試20個軟件模塊。因此,測試人員首先基于軟件倉庫中的歷史軟件模塊數(shù)據(jù)建立了一個軟件缺陷預測模型或者軟件缺陷個數(shù)預測模型;然后利用預測模型預測這100個軟件模塊是否有缺陷或有多少個缺陷。假設缺陷預測模型預測這100個軟件模塊中30個軟件模塊有缺陷,由于在項目交付之前測試人員只能測試20個軟件模塊,因此測試人員不清楚應該測試這30個被預測為有缺陷的軟件模塊中的哪20個軟件模塊;但如果根據(jù)軟件缺陷個數(shù)預測模型的預測結(jié)果,測試人員能夠基于這100個軟件模塊的缺陷個數(shù)的預測值對這100個軟件模塊進行降序排序,優(yōu)先測試前20個軟件模塊,即優(yōu)先具有更多缺陷的軟件模塊,因此,預測軟件缺陷個數(shù)相比單純的預測軟件模塊是否有缺陷更利于優(yōu)化軟件測試資源的分配[7]。
目前在軟件缺陷個數(shù)預測方面已有大量研究。Rathore等[8]探究了決策樹回歸算法在本項目缺陷個數(shù)預測模型和跨項目缺陷個數(shù)預測模型的預測性能,實驗結(jié)果表明在采用絕對誤差和相對誤差作為評估指標時,決策樹回歸算法有很好的預測性能。Wang等[9]提出了利用歷史數(shù)據(jù)構造缺陷狀態(tài)轉(zhuǎn)換模型,然后利用馬爾可夫鏈預測將來每種狀態(tài)下的缺陷個數(shù)。Afzal等[10]提出了利用基因編程算法來預測缺陷個數(shù)。Rathore等[11]提出了利用遺傳算法和決策樹回歸算法來預測給定軟件系統(tǒng)的缺陷個數(shù)的方法,在PROMISE提供的開源數(shù)據(jù)集上的實驗結(jié)果表明該方法有較好的預測性能。
圖1 缺陷預測模型與缺陷個數(shù)預測模型的差異性 Fig. 1 Difference between a defect prediction model and a model for predicting the number of defects
Gao等[12]比較了泊松回歸算法、零膨脹泊松回歸算法和負二項回歸算法對于預測軟件缺陷個數(shù)上的能力,實驗采用平均絕對誤差(Average Absolute Error, AAE)和平均相對誤差(Average Relative Error, ARE)作為評價指標,實驗結(jié)果表明泊松回歸算法實現(xiàn)了最好的預測性能。Chen等[13]比較了線性回歸算法、貝葉斯嶺回歸算法、支持向量機回歸算法、最近鄰回歸算法、決策樹回歸算法和梯度Boosting回歸算法的預測性能;實驗采用均方回歸誤差和精度作為評價指標,實驗結(jié)果表明在本項目缺陷個數(shù)預測和跨項目缺陷個數(shù)預測兩種情形下,決策樹回歸算法都實現(xiàn)了最好的預測性能。在另一個比較相似的研究中,Rathore 等[14]基于PROMISE提供的開源數(shù)據(jù)集上比較了遺傳算法、多層感知機回歸算法、線性回歸算法、決策樹回歸算法、零膨脹泊松回歸算法和負二項回歸算法等六種回歸算法對于預測軟件缺陷個數(shù)的能力;實驗采用平均絕對誤差和平均相對誤差作為評價指標,實驗結(jié)果表明線性回歸算法和決策樹回歸算法對于大多數(shù)數(shù)據(jù)集而言產(chǎn)生的錯誤率最低并且相對于其他四種缺陷預測算法預測精準度更高。
但這些論文一般以評估回歸模型的度量指標如均方根誤差(Root Mean Square Error, RMSE)、平均絕對誤差或平均相對誤差來評價軟件缺陷個數(shù)預測模型的預測性能。這些度量指標反映了預測值偏離真實值的程度,其值越小,表示預測準確率越高。如平均絕對誤差的計算公式為:
其中:n為測試集中軟件模塊的個數(shù),yi,predicted為測試集中第i個軟件模塊的缺陷個數(shù)預測值,yi,actual為測試集中第i個軟件模塊的缺陷個數(shù)真實值。
但是由于軟件缺陷數(shù)據(jù)集是極度數(shù)據(jù)不平衡的,即大多數(shù)軟件模塊的缺陷個數(shù)為0,只有少數(shù)軟件模塊的缺陷個數(shù)大于0。僅用評價回歸模型的度量指標評估軟件缺陷個數(shù)預測模型性能的好壞是不合適的。以本文2.1節(jié)中Ant 1.3這個軟件缺陷數(shù)據(jù)集為例,該數(shù)據(jù)集包含125個軟件模塊,其中20個軟件模塊是有缺陷的,總共有33個缺陷。假如一個預測模型在預測該數(shù)據(jù)集時預測這125個軟件模塊的缺陷個數(shù)均為0,AAE值為0.264(=33/125)。這個預測模型取得了很低的AAE,但是這樣的預測模型不能應用到實際的應用場景中,因為它不能預測出任何有缺陷的軟件模塊的缺陷個數(shù)。
文獻[5]指出,由于缺乏高質(zhì)量的訓練數(shù)據(jù),準確地預測出一個模塊包含幾個缺陷是比較困難的。實際上,一般這些軟件缺陷個數(shù)預測方法都是利用預測出的缺陷個數(shù)來對軟件模塊進行排序,優(yōu)先測試包含更多缺陷的軟件模塊。因此Weyukers等[15]提出采用平均缺陷百分比(Fault Percentile Average, FPA)評價指標來評估軟件缺陷個數(shù)預測模型的性能。
針對文獻[12-14]在比較不同的回歸算法對軟件缺陷個數(shù)預測模型性能影響的研究中采用了均方根誤差、平均絕對誤差或平均相對誤差等不合適的評價指標,有可能產(chǎn)生錯誤的結(jié)論的問題,本文提出了以平均缺陷百分比為評價指標,利用PROMISE提供的6個開源數(shù)據(jù)集,分析了線性回歸、決策樹回歸、貝葉斯嶺回歸、自相關決策回歸、支持向量回歸、梯度Boosting回歸、高斯過程回歸、最近鄰回歸、隨機梯度下降回歸和Huber回歸這10個常用的回歸算法對軟件缺陷個數(shù)預測模型預測結(jié)果的影響以及各種回歸算法之間的差異。實驗結(jié)果表明:梯度Boosting回歸算法和貝葉斯嶺回歸算法預測效果最好。
本文主要工作為:
1)以平均缺陷百分比為評價指標分析了回歸算法對軟件缺陷個數(shù)預測模型預測性能的影響。
2)對比分析了10種常用的回歸算法的差異,發(fā)現(xiàn)梯度Boosting回歸算法和貝葉斯嶺回歸算法建立軟件缺陷個數(shù)預測模型時具有最好的預測效果。
軟件缺陷個數(shù)預測的流程如圖1所示。第一步為從軟件歷史數(shù)據(jù)中提取出有用的軟件模塊,然后標記這些模塊的特征和具有多少個缺陷。第二步為基于這些軟件模塊利用回歸模型建立軟件缺陷個數(shù)預測模型。第三步為對新的軟件模塊提取出特征,利用第二步中得到的軟件缺陷個數(shù)預測模型預測這個新的軟件模塊的缺陷個數(shù)。
圖2 軟件缺陷個數(shù)預測流程 Fig. 2 Flow chart of predicting the number of software defects
1.2.1 線性回歸
線性回歸(Linear Regression, LR)[16]是一種用于對因變量與一個或多個獨立變量之間的線性關系進行建模的統(tǒng)計方法。一個線性回歸方程為Y=b0+b1x1+b2x2+…+bnxn,其中:Y是因變量,x1,x2,…,xn是獨立變量,b1,b2,…,bn是獨立變量的回歸系數(shù),b0是誤差項。針對軟件缺陷個數(shù)預測模型,Y為缺陷個數(shù),x1,x2,…,xn為軟件模塊的度量元。一般來說,線性回歸都可以通過最小二乘法求出其方程。
1.2.2 決策樹回歸
決策樹回歸(Decision Tree Regression, DTR)[17]通過學習從數(shù)據(jù)特征推斷的簡單決策樹來預測目標變量的值。決策樹從根節(jié)點自上而下構建,并使用分割標準將數(shù)據(jù)分成包含具有相似值的實例的子集。選擇最大化減少預期誤差的屬性作為根節(jié)點。該過程在非葉分支上遞歸運行,直到所有數(shù)據(jù)被處理。
1.2.3 貝葉斯嶺回歸
貝葉斯嶺回歸(Bayesian Ridge Regression, BRR)[18]假設先驗概率、似然函數(shù)和后驗概率都是正態(tài)分布。先驗概率是假設模型輸出Y是符合均值為Xθ的正態(tài)分布,正則化參數(shù)α被看作是一個需要從數(shù)據(jù)中估計得到的隨機變量?;貧w系數(shù)θ的先驗分布規(guī)律為球形正態(tài)分布,超參數(shù)為λ。貝葉斯嶺回歸通過最大化邊際似然函數(shù)來估計超參數(shù)α和λ,以及回歸系數(shù)θ。
1.2.4 自相關決策回歸
自相關決策回歸(Automatic Relevance Determination Regression, ARDR)[19]和貝葉斯嶺回歸很像,唯一的區(qū)別在于對回歸系數(shù)θ的先驗分布假設。自相關決策回歸假設θ的先驗分布規(guī)律為與坐標軸平行的橢圓形高斯分布。自相關決策回歸也是通過最大化邊際似然函數(shù)來估計超參數(shù)α和λ向量,以及回歸系數(shù)θ。
1.2.5 支持向量回歸
支持向量回歸 (Support Vector Regression, SVR)[20]是支持向量在函數(shù)回歸領域的應用。支持向量回歸不同于支持向量機,支持向量回歸的樣本點只有一類,所尋求的最優(yōu)超平面不是使兩類樣本點分得“最開”,而是使所有樣本點離超平面的總偏差最小,這時樣本點都在兩條邊界線之間。
1.2.6 梯度Boosting回歸
梯度Boosting回歸(Gradient Boosting Regression, GBR)[21]以弱預測模型(通常是決策樹)的形式產(chǎn)生預測模型,類似于其他Boosting方法,都是以階段性方式構建模型,但與其他Boosting方法不一樣的是,梯度Boosting回歸在迭代時選擇的是梯度下降的方向來保證最后的結(jié)果最好。
1.2.7 高斯過程回歸
高斯過程回歸(Gaussian Process Regression, GPR)[22]與貝葉斯嶺回歸類似,區(qū)別在于高斯過程回歸中用核函數(shù)代替了貝葉斯嶺回歸中的基函數(shù)。高斯過程回歸從函數(shù)空間角度出發(fā),定義一個高斯過程來描述函數(shù)分布,直接在函數(shù)空間進行貝葉斯推理。
1.2.8 最近鄰回歸
最近鄰回歸算法(Nearest Neighbors Regression, NNR)[23]通過找出一個樣本的k個最近鄰,將這k個最近鄰的回歸值的平均值賦給該樣本,就可以得到該樣本的回歸值。更有用的方法是將不同距離的鄰居對該樣本產(chǎn)生的影響給予不同的權值(weight),如權值與距離成正比。
1.2.9 隨機梯度下降回歸
隨機梯度下降回歸(Stochastic Gradient Descent Regression, SGDR)[24]是利用隨機梯度下降的方法來最小化訓練時回歸方程中的誤差的回歸方法。
1.2.10 Huber回歸
相比線性回歸算法采用最小二乘法求出其回歸方程,異常點對回歸模型的影響會非常大,傳統(tǒng)的基于最小二乘的回歸方法將不適用。Huber回歸 (Huber Regression, HR)[25]并不會忽略異常點,而是給予它們一個很小的權重值,因此對異常點具有魯棒性。
實驗數(shù)據(jù)集為從PROMISE庫中的6個常用的項目,這6個項目的詳細信息如表1所示。對項目中的每個軟件模塊共提取了20個特征,這20個特征的具體細節(jié)參考文獻[3]。
表1 實驗數(shù)據(jù)集Tab. 1 Experimental data set
為了評估1.2節(jié)中介紹的10個回歸算法的預測性能,實驗采用10折交叉檢驗方法。進行實驗時,對于表1中的項目,是將該項目的所有版本合并為一個數(shù)據(jù)集。然后將該數(shù)據(jù)集均分為10份,輪流將其中的9份作訓練集,1作做測試集,進行實驗。每次實驗在訓練集上訓練1.2節(jié)中介紹的10個回歸算
表2 預測結(jié)果的Wilcoxon符號秩檢驗(顯著性水平0.05)Tab. 2 Wilcoxon symbol rank test of prediction results (significance level 0.05)
表3 每個項目預測結(jié)果統(tǒng)計Tab. 3 Statistics of each project’s prediction result
法,然后在測試集上測試這10個回歸算法的FPA值。最后返回10次的結(jié)果的FPA值的平均值。為了防止樣本誤差,本實驗進行20次10折交叉檢驗,最后記錄的實驗結(jié)果為20次10折交叉檢驗的FPA均值。
本文提出了以下兩個研究問題,為軟件缺陷個數(shù)預測模型中各種回歸算法的選擇提供了指導依據(jù)。
RQ1:軟件缺陷個數(shù)預測過程中,回歸算法的選取是否影響預測效果?
RQ2:采用哪一個回歸算法得到的軟件缺陷個數(shù)預測模型的預測效果更好?
圖3給出了10個回歸算法在6個數(shù)據(jù)集上的預測結(jié)果的盒圖,很容易看出預測結(jié)果分布有一定差別,其中LR、BRR、ARDR、GBR和HR這5種回歸算法的效果較好FPA中位數(shù)分別為0.764、0.763、0.763、0.761和0.744,而效果較差的GPR和SGDR其中位數(shù)僅為0.449和0.501。BRR取得了最大的FPA值為0.813,GPR取得了最低的FPA值為0.385,BRR在6個數(shù)據(jù)集上取得的最低的FPA值都比GPR在這6個數(shù)據(jù)集上取得的最高的FPA值都要高。因此從圖3的盒圖可以看出,對RQ1的回答是肯定的,即在軟件缺陷個數(shù)預測過程中,回歸算法的選取會影響預測效果。
為了進一步分析這10個回歸算法對預測效果的影響的顯著程度,本文也對這10個回歸算法的預測結(jié)果采用Wilcoxon符號秩檢驗進行了假設檢驗。在Wilcoxon符號秩檢驗中,它把觀測值和零假設的中心位置之差的絕對值的秩分別按照不同的符號相加作為其檢驗統(tǒng)計量。它檢驗成對產(chǎn)生觀測數(shù)據(jù)的總體是否具有相同的均值。本文建立原假設H0:兩種回歸算法預測結(jié)果來自同一分布,即它們之間沒有差別。因此在顯著性水平為0.05的情況下,若檢測的顯著性水平大于0.05,表示假設成立,接受H0;否則,假設不成立,拒絕H0。由表2可見,LR與除BRR、ARDR、GBR、HR外的算法顯著性水平均小于0.05,說明LR與除BRR、ARDR、GBR、HR外的算法均有較大差異。DTR 與SVR的顯著性水平為0.563,高于0.05,說明DTR與SVR沒有較大差異,但與除了SVR外的算法顯著性水平均小于0.05,說明DTR與除SVR外的算法有較大差異。BRR與除LR、ARDR、GBR外的算法顯著性水平均小于0.05,說明BRR與除LR、ARDR、GBR外的算法具有較大差異。ARDR與DTR、SVR、GPR、SGDR外的算法顯著性水平均小于0.05,說明ARDR與DTR、SVR、GPR、SGDR外的算法均有較大差異。SVR與除DTR、NNR、HR外的算法顯著性水平均小于0.05,說明SVR與除DTR、NNR、HR外的算法具有較大差異。GBR與除LR、BRR、ARDR、HR外的算法顯著性水平均小于0.05,說明GBR與除LR、BRR、ARDR、HR外的算法具有較大差異。NNR與除ARDR、SVR、HR外的算法顯著性水平均小于0.05,說明NNR與除ARDR、SVR、HR外的算法具有較大差異。GPR和SGDR與所有除自身以外的其他算法的顯著性水平均低于0.05,說明GPR和SGDR與其他算法都有較大差異。HR與LR、DTR、BRR、GPR、SGDR的顯著性水平均小于0.05,說明HR與LR、DTR、BRR、GPR、SGDR都要較大差異。因此對第一個研究問題可以得出結(jié)論,回歸算法的選取不僅對預測結(jié)果有影響,而且部分算法之間影響效果顯著。
從表2還可發(fā)現(xiàn),LR、BRR、ARDR和GBR兩兩之間沒有顯著性差異,而HR和LR、ARDR、GBR、NNR之間也沒有顯著性差異。這是從6個數(shù)據(jù)集整體分析得到的結(jié)果,但在單個數(shù)據(jù)集上10種算法對預測結(jié)果的影響是否依然如此,還需作進一步分析。因此本文統(tǒng)計了在每個數(shù)據(jù)集上10種回歸算法的預測結(jié)果。表3表明,在數(shù)據(jù)集Ant和Log4j中BRR占優(yōu)且在Log4j這個數(shù)據(jù)集上取得FPA的最大值為0.813,而在數(shù)據(jù)集Camel、Jedit、Synapse和Xalan上GBR占優(yōu),取得的FPA的最大值為Jedit的0.839。在這6個數(shù)據(jù)集上,GBR取得最優(yōu)的平均值為0.766,BRR取得第二好的平均值為0.762,但這兩個平均值相差不大。因此對第二個研究問題可以得出結(jié)論,采用梯度Boosting回歸算法和貝葉斯嶺回歸算法得到的軟件缺陷個數(shù)預測模型的預測效果更好。
針對2.4節(jié)中提出的兩個研究性問題,本文通過實驗回答了這兩個研究性問題,但實驗過程中也潛在一些有效性威脅,具體如下:
1)實驗選用的是PROMISE平臺提供的6個數(shù)據(jù)集,雖然數(shù)據(jù)提供者Jureczko[26]曾表示這些數(shù)據(jù)在數(shù)據(jù)搜集過程中可能存在不足,但這6個數(shù)據(jù)集已經(jīng)廣泛地應用于軟件缺陷個數(shù)預測的應用研究[8-13]中。因此,但本文堅信本文的實驗結(jié)果具有一定的可信性和可重復性。
2)本文研究的10個回歸算法均為較常見的回歸算法,這些算法全部基于Sklearn包實現(xiàn),算法參數(shù)使用Sklearn包中提供的默認參數(shù),即本文沒有對回歸算法進行任何優(yōu)化。
3)本文采用了平均缺陷百分比這個評價指標來評價軟件缺陷個數(shù)預測模型的性能好壞,其他的一些指標如代價有效性圖[27]也可以進行考慮。
本文圍繞軟件缺陷個數(shù)預測展開研究,針對建立軟件缺陷個數(shù)預測模型過程中回歸算法的選擇問題,分析了10個常見的回歸算法對軟件缺陷個數(shù)預測模型預測結(jié)果的影響以及各個回歸算法之間的差異。研究結(jié)果表明:使用不同的回歸算法建立的軟件缺陷個數(shù)預測模型具有不同的預測效果,其中梯度Boosting回歸算法和貝葉斯嶺回歸算法預測效果更好。
在后續(xù)的工作中,將進一步在更多的數(shù)據(jù)集上進行分析,驗證本文得出的實驗結(jié)果的一般性;此外,將理論上分析梯度Boosting回歸算法和貝葉斯嶺回歸算法建立的缺陷數(shù)目預測模型預測效果較好的原因。
參考文獻(References)
[1] RAHMAN R, POSNETT D, DEVANBU P. Recalling the “imprecision” of cross-project defect prediction [C]// FSE ’12: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering. New York: ACM, 2012: Article No. 61.
[2] SHEPPERD M, BOWES D, HALL T. Researcher bias: the use of machine learning in software defect prediction [J]. IEEE Transactions on Software Engineering, 2014, 40(6): 603-616.
[3] 王星,何鵬,陳丹,等.跨項目缺陷預測中訓練數(shù)據(jù)選擇方法[J].計算機應用,2016,36(11):3165-3169. (WANG X, HE P, CHEN D, et al. Selection of training data for cross-project defect prediction [J]. Journal of Computer Applications, 2016, 36(11): 3165-3169.)
[4] 陳翔,顧慶,劉望舒,等.靜態(tài)軟件缺陷預測方法研究[J].軟件學報,2016,27(1):1-25. (CHEN X, GU Q, LIU W S, et al. Survey of static software defect prediction [J]. Journal of Software, 2016,27(1):1-25.)
[5] YANG X, TANG K, YAO X. A learning-to-rank approach to software defect prediction [J]. IEEE Transactions on Reliability, 2015, 64(1): 234-246.
[6] FENTON N E, NEIL M. A critique of software defect prediction models [J]. IEEE Transactions on Software Engineering, 1999, 25(5): 675-689.
[7] MALHOTRA R. A systematic review of machine learning techniques for software fault prediction [J]. Applied Soft Computing, 2015, 27: 504-518.
[8] RATHORE S S, KUMAR S. A decision tree regression based approach for the number of software faults prediction [J]. ACM Sigsoft Software Engineering Notes, 2016, 41(1): 1-6.
[9] WANG J, ZHANG H. Predicting defect numbers based on defect state transition models [C]// ESEM ’12: Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement. New York: ACM, 2012: 191-200.
[10] AFZAL W, TORKAR R, FELDT R. Prediction of fault count data using genetic programming [C]// INMIC 2008: Proceedings of the 12th IEEE International Multitopic Conference. Piscataway, NJ: IEEE, 2008: 349-356.
[11] RATHORE S S, KUMAR S. Predicting number of faults in software system using genetic programming [J]. Procedia Computer Science, 2015, 62: 303-311.
[12] GAO K, KHOSHGOFTAAR T M. A comprehensive empirical study of count models for software fault prediction [J]. IEEE Transactions on Reliability, 2007, 56(2): 223-236.
[13] CHEN M, MA Y. An empirical study on predicting defect numbers [C]// Proceedings of the 27th International Conference on Software Engineering and Knowledge Engineering. Piscataway, NJ: IEEE, 2015:397-402.
[14] RATHORE S S, KUMAR S. An empirical study of some software fault prediction techniques for the number of faults prediction [J]. Soft Computing, 2016, 21(24): 7417-7434.
[15] WEYUKER E J, OSTRAND T J, BELL R M. Comparing the effectiveness of several modeling methods for fault prediction [J]. Empirical Software Engineering, 2010, 15(3): 277-295.
[16] ASAI H T S U K. Linear regression analysis with fuzzy model [J]. IEEE Transaction on System, Man and Cybernetics, 1982, 12(6): 903-907.
[17] XU M, WATANACHATURAPORN P, VARSHNEY P K, et al. Decision tree regression for soft classification of remote sensing data [J]. Remote Sensing of Environment, 2005, 97(3): 322-336.
[18] HOERL A E, KENNARD R W. Ridge regression: biased estimation for nonorthogonal problems [J]. Technometrics, 1970, 12(1): 55-67.
[19] JACOBS J P. Bayesian support vector regression with automatic relevance determination kernel for modeling of antenna input characteristics [J]. IEEE Transactions on Antennas and Propagation, 2012, 60(4): 2114-2118.
[20] BASAK D, PAL S, PATRANABIS D C. Support vector regression [J]. Neural Information Processing — Letters and Reviews, 2007, 11(10): 203-224.
[21] ELITH J, LEATHWICK J R, HASTIE T. A working guide to boosted regression trees [J]. Journal of Animal Ecology, 2008, 77(4): 802-813.
[23] ALTMAN N S. An introduction to kernel and nearest-neighbor nonparametric regression [J]. The American Statistician, 1992, 46(3): 175-185.
[24] CARPENTER B. Lazy sparse stochastic gradient descent for regularized multinomial logistic regression [R]. [S.l.]: Alias-i, Inc., 2008: 1-20.
[25] HUBER P J. Robust regression: asymptotics, conjectures and Monte Carlo [J]. The Annals of Statistics, 1973, 1(5): 799-821.
[26] JURECZKO M, MADEYSKI L. Towards identifying software project clusters with regard to defect prediction [C]// PROMISE ’10: Proceedings of the 6th International Conference on Predictive Models in Software Engineering. New York: ACM, 2010: Article No. 9.
[27] JIANG T, TAN L, KIM S. Personalized defect prediction automated software engineering [C]// ASE 2013: Proceedings of the IEEE/ACM 28th International Conference on Automated Software Engineering. Piscataway, NJ: IEEE, 2013: 279-289.
FUZhongwang, born in 1993, M. S. candidate. His research interests include data mining, software engineering.
XIAORong, born in 1980, Ph. D. candidate, lecturer. Her research interests include software engineering.
YUXiao, born in 1994, Ph. D. candidate. His research interests include software engineering, deep learning.
GUYi, born in 1996, undergraduate. His research interests include machine learning.