譚 波 潘慶雯 程 雯
(武漢郵電科學(xué)研究院 武漢 430074)
個體收入水平評估任務(wù)常見于那些依賴于捐款而存在的非營利性組織。了解個體的收入情況可以幫助一個非營利性的機構(gòu)更好地了解他們要捐贈多少,或他們是否應(yīng)該接觸這些人。近年來,許多機器學(xué)習算法被用于個體收入水平的評估中,比如高斯樸素貝葉斯(GaussianNB)[1],支撐向量機(SVM)[2],決策樹(DecisionTree)等。決策樹模型對缺失值不敏感,易于實現(xiàn)和理解,數(shù)據(jù)預(yù)處理簡單[3],但在處理特征關(guān)聯(lián)性強的數(shù)據(jù)表現(xiàn)不好,如果有時間順序的數(shù)據(jù),需要大量的預(yù)處理,同時容易出現(xiàn)過擬合現(xiàn)象;支撐向量機在樣本數(shù)據(jù)較小時可以有效地處理高緯度[4]的數(shù)據(jù),由于只使用一部分子集進行模型訓(xùn)練,不需要太大內(nèi)存,但是當數(shù)據(jù)集中缺少較多數(shù)據(jù),模型對于數(shù)據(jù)缺失敏感。然而這些算法在數(shù)據(jù)缺省,數(shù)據(jù)樣本比例不均衡,數(shù)據(jù)集存在異常值的情況下,模型預(yù)測的準確率會受到影響。GBDT 通過將多個基學(xué)習器組合提升模型的預(yù)測性能。同時GBDT 可以處理混合類型的數(shù)據(jù)[5],也能處理非平衡數(shù)據(jù)和缺省數(shù)據(jù),通過選取適當?shù)膿p失函數(shù),可以提升模型在輸出空間存在異常值情況下的健壯性。在UCI 公開的人口普查數(shù)據(jù)集中,驗證了GBDT 在個體收入評估上的實用性和準確性。
GBDT屬于Boosting算法[6]的一種,這類算法的工作機制都比較類似,首先需要從初始的訓(xùn)練集中訓(xùn)練出一個基學(xué)習器,再根據(jù)基學(xué)習器的表現(xiàn)對樣本的權(quán)重進行調(diào)整,使得先前基學(xué)習器中的誤分類訓(xùn)練樣本在后續(xù)的訓(xùn)練中得到更多的關(guān)注,然后用調(diào)整后的樣本分布來訓(xùn)練下一個基學(xué)習器。經(jīng)過反復(fù)地進行這個過程,會產(chǎn)生指定個數(shù)為N個的基學(xué)習器,最終將這N 個基學(xué)習器進行加權(quán)結(jié)合,得到最終的模型。
為了對回歸和分類問題進行非線性擬合,可以創(chuàng)建一種自適應(yīng)基函數(shù)模型,它有如下形式:是第 m 個基函數(shù)[7],該基函數(shù)形式可以通過輸入的數(shù)據(jù)確定。通常而言,基函數(shù)是參數(shù)化的,可以寫成其中vm是基函數(shù)自身的參數(shù),通過將表示整個參數(shù)集,這樣得到的模型參數(shù)就不再是線形化的。因此我們只能計算出估計值θ的局部最優(yōu)值,然而這樣的模型在性能方面通常比線形模型表現(xiàn)更好。
Boosting 是一種貪心算法,用來擬合自適應(yīng)基模型,φm為基函數(shù)/弱學(xué)習器。通過將弱學(xué)習器循環(huán)作用于加權(quán)的數(shù)據(jù)中,每次循環(huán)后提高誤分樣本的分布概率,誤分樣本在訓(xùn)練集中所占權(quán)重增大,使得下一次循環(huán)弱學(xué)習器能集中對誤分樣本進行判斷。該弱學(xué)習器可以是任意分類器或者回歸器,但是通常使用CART 模型。在1998 年,Leo Breiman 提出在boosting中淺層的決策樹是最佳的弱學(xué)習器。這一觀點在2006 年Caruana 和Niculescu-Mizil 的實驗中通過將10 種不同分類器進行廣泛的試驗比較后得到證實的[9],同時該實驗通過ROC 曲線顯示提升決策樹在降低分類誤差和產(chǎn)生良好校準概率兩方面均表現(xiàn)最佳。
Boosting最初是在計算機學(xué)習理論中推導(dǎo)出來的,主要解決二分類問題。將分類準確率高于0.5的學(xué)習器作為弱分類器。在訓(xùn)練集上,可以通過組合任意多個弱學(xué)習器進而獲得分類準確率性能的提升。1998 年,Breiman 提出 boosting 可以通過函數(shù)空間的梯度下降方式解釋的觀點,這一觀點通過Friedman在2000年得到進一步擴展,F(xiàn)riedman提出boosting是可用于處理各種各樣的損失函數(shù)包括魯棒回歸,泊松回歸等[10]。
通過將boosting 方法推廣到更加一般的情況,可以得到梯度提升方法(grading boosting),當我們的目標是最小化公式(1):
其中f=(f(x1),…,f(xN))是參數(shù),將通過梯度下降的方式得到最佳解。在第m步時,令gm是在f=fm-1時刻L(f)的梯度,如式(2):
對fm進行更新,fm=fm-1-ρmgm,其中ρm是步長。以上就是函數(shù)式梯度下降。在當前形式中,該算法只是在N個數(shù)據(jù)點上優(yōu)化f,通過修改算法,將一個弱學(xué)習器近似為負梯度,如式(3)。
整個算法流程可以總結(jié)如下:
如果squared loss 作為該算法的損失函數(shù),那么可以得到L2Boosting,如果log-loss作為該算法的損失函數(shù),可以得到BinomialBoost。該算法相比LogitBoost 的優(yōu)勢在于,可以相對容易地能擴展到多分類的問題[11],同時該算法對于許多損失函數(shù)都適用。
該實驗將使用1994 年美國人口普查收集的數(shù)據(jù),數(shù)據(jù)集來自UCI機器學(xué)習知識庫。這個數(shù)據(jù)集是由 Ron Kohavi 和 Barry Becker 在發(fā)表文章“Scaling Up the Accuracy of Naive-Bayes Classifiers:A Decision-Tree Hybrid”之后捐贈的,這里探索的數(shù)據(jù)集相比于原有的數(shù)據(jù)集有一些小小的改變,比如說移除了特征“fnlwgt”以及一些遺失的或者是格式不正確的記錄。通過選用幾個監(jiān)督學(xué)習算法來準確建模被調(diào)查者的收入。然后根據(jù)初步結(jié)果從中選擇出最佳的候選算法,并進一步優(yōu)化該算法從而更好地建模這些數(shù)據(jù)。目標是建立一個能夠準確預(yù)測被調(diào)查者年收入是否超過50000 美元的模型。通過使用高斯樸素貝葉斯、隨機森林以及GBDT 方法,進行收入分類性能比較實驗。為了保證GBDT 的最佳分類預(yù)測性能,采取5 折交叉驗證方法。交叉驗證法可以提升訓(xùn)練樣本和測試樣本的多樣性,同時降低模型偏差。通過將數(shù)據(jù)集隨機劃分為同等規(guī)模的五份,輪流地將四份數(shù)據(jù)作為訓(xùn)練集,剩余一份作為驗證集。在訓(xùn)練集上得到訓(xùn)練的參數(shù),在驗證集上計算分類誤差。通過最小化分類誤差,得到模型的最佳參數(shù)。
該實驗期望模型具有準確預(yù)測那些能夠年收入大于$50,000 的能力比模型具有高的查全率更重要,于是使用F-beta score 作為評價指標,這樣能夠同時考慮查準率和查全率如式(4)所示:
尤其是,當β=0.5 的時候更多強調(diào)查準率,該指標稱為F0.5score。通過對多個模型的實驗結(jié)果比較如表1所示。
表1 Naive-Bayes、Random Forest、GBDT模型結(jié)果
由表1 中實驗數(shù)據(jù)可以看出,GBDT 模型有最佳的精度和F 得分結(jié)果,隨機森林[12]模型效果次之,樸素貝葉斯模型[13]效果最不佳。GBDT 唯一的缺點是模型需要更多的訓(xùn)練時間,但是在本文中,訓(xùn)練時間并不是問題,因為GBDT只需要9s左右的訓(xùn)練時間,訓(xùn)練時間在合理范圍內(nèi)。
將GBDT 作為最佳的候選模型,利用網(wǎng)格搜索(GridSearchCV)方法進行模型調(diào)優(yōu)。在GBDT的提升過程中主要調(diào)整基分類器個數(shù),以及學(xué)習率;對每個樹基分類器調(diào)整最大深度和最小樣本分割數(shù)目;最后通過最小化學(xué)習率來提高模型健壯性。模型參數(shù)調(diào)優(yōu)完成后,在測試集上完成模型的評估。模型在測試集上效果如表2所示。
表2 測試集上模型結(jié)果對比
由表2 可以看出,經(jīng)過優(yōu)化的GBDT 模型比未優(yōu)化的模型在精確率方面提升了0.7%,在F-score方面提升了1.1%。而經(jīng)過優(yōu)化的GBDT 比基準水平在精確度上提高350.73%,在F-score 方面提升了大概256.26%。通過交叉驗證和網(wǎng)格搜索,得到的優(yōu)化后的模型準確率和F-score比基準預(yù)測器高的多,但是比未優(yōu)化的模型比,提升不大。因為GBDT 算法自適應(yīng)性已經(jīng)很強大了,增加弱學(xué)習器的數(shù)量并不能大幅度地提高算法的準確度和F-score。
在數(shù)據(jù)上(比如這里使用的人口普查的數(shù)據(jù))使用監(jiān)督學(xué)習算法的一個重要的任務(wù)是決定哪些特征能夠提供最強的預(yù)測能力。專注于少量的有效特征和標簽之間的關(guān)系,能夠更加簡單地理解這些現(xiàn)象,這在很多情況下都是十分有用的。在本文的情境下期望選擇一小部分特征,這些特征能夠在預(yù)測被調(diào)查者是否年收入大于$50,000 這個問題上有很強的預(yù)測能力。通過提取五個用于預(yù)測被調(diào)查者年收入是否大于$50,000 最相關(guān)的特征信息。主成分特征如圖1所示。
圖1 主成分特征
可以看出年齡和工時這兩個特征對收入的影響最大,而學(xué)歷和職業(yè)反而不是影響收入的較大因素。通過觀察圖1 展示五個用于預(yù)測被調(diào)查者年收入是否大于$50,000 最相關(guān)的特征的可視化圖像,可以看到前五個最重要的特征貢獻了數(shù)據(jù)中所有特征中超過一半的重要性。這提示我們可以嘗試去減小特征空間,簡化模型需要學(xué)習的信息。通過使用更少的特征來訓(xùn)練,在評價指標的角度來看,本文的期望是訓(xùn)練和預(yù)測的時間會更少。最終將模型在只使用五個特征的數(shù)據(jù)上和使用所有的特征數(shù)據(jù)上的F-score 和Accuracy 進行比較,結(jié)果如表3全量特征與部分特征結(jié)果對比所示。
表3 全量特征與部分特征結(jié)果對比
通過表3 發(fā)現(xiàn)使用部分特征會導(dǎo)致Accuracy和F-score都略有下降。一般而言會考慮部分特征作為一種備選方案,可以看出精確度降低的并不多,而F-score 反映地是查準率/查全率的不同偏好。有些場景比如商品推薦系統(tǒng),更希望推薦內(nèi)容確實是用戶感興趣的,那么查準率更重要一些,那么需要的特征需要多一點。又比如逃犯信息檢索系統(tǒng)中,盡可能地少漏掉逃犯,那么查全率希望高一些。如果是第二種情況,那么適當?shù)臏p少點特征值相對影響較小。最后通過選擇已訓(xùn)練的GBDT模型在測試集上完成模型效果評估,在測試集上Accuracy是0.8648,F(xiàn)-score是0.7443。
本文針對當前收入水平預(yù)估算法只應(yīng)用于某種類型單一且數(shù)據(jù)比例平衡的問題,提出基于Gradient Boosted Decision Tree(GBDT)的個體收入水平預(yù)估方法,實驗表明GBDT 算法相對工業(yè)常用隨機森林[14],樸素貝葉斯算法保持較高分類準確率[15],以及更好的穩(wěn)定性和普適性。