李 琦,孫 詠,焦艷菲,高 岑,王美吉
1(中國科學院大學,北京 100049)
2(中國科學院 沈陽計算技術研究所,沈陽 110168)
3(沈陽高精數(shù)控智能技術股份有限公司,沈陽 110168)
隨著高校的不斷擴招,畢業(yè)生就業(yè)形勢愈加嚴重,面對日益嚴重的就業(yè)壓力,很多高校都開展了就業(yè)指導活動,但是大部分就業(yè)輔導工作都普遍存在著缺乏針對性和流于形式等問題,并不能讓真正需要幫助的學生受益.很多高校都有著完善的學生學籍管理系統(tǒng),畢業(yè)生信息管理系統(tǒng)等各種學生系統(tǒng),存儲了大量的學生數(shù)據(jù),但這些系統(tǒng)目前還只是用于存檔查詢,如果可以充分利用這些系統(tǒng)包含的信息,找到影響就業(yè)的主要因素,就可以為就業(yè)指導提供更有針對性的指導工作.
關于畢業(yè)生就業(yè)問題,為了有效提升就業(yè)質量,國內外教育專家都從不同角度做過各種類型的分析統(tǒng)計.例如,文獻[1]利用基于信息增益比的決策樹方法來對就業(yè)情況進行分析,抽取規(guī)則知識來分類預測.在文獻[2]中,作者通過分析總結,發(fā)現(xiàn)中醫(yī)藥院校畢業(yè)生的就業(yè)渠道狹窄,就業(yè)偏向較為嚴重,該文獻中作者首先采用了C4.5 決策樹算法構造決策樹,然后通過隨機森林建立多棵樹來提高預測準確率,但是其每棵樹之間仍然是獨立的,導致模型偏差較大.
在預測問題方面,很多學者都做了各種嘗試,預測用過的算法有以下幾種,包括文獻[3]的神經(jīng)網(wǎng)絡模型,文獻[4]的自然鄰居分類模型等.文獻[5,6]分析了影響畢業(yè)生的因素.文獻[7]介紹了大型數(shù)據(jù)集上建模的一些可供參考的思路方法.上述文獻大多采用單個全局優(yōu)化模型,單分類器模型性能有限,存在泛化能力弱和容錯性較差等問題.本文提出采用集成學習模型,即通過多個分類器的結果得到更為準確的預測結果.集成學習模型一般預測準確性和模型穩(wěn)定性都較高.集成學習最常見的是文獻[8]的隨機森林模型以及梯度提升模型.隨機森林是采用Bagging取樣,模型的方差較小,但是偏差較大,所以需要基分類器具有相對較高的準確性.Boosting 策略則可以降低模型偏差.原理上講,即使采用了準確度相對較低的基學習器,也可以通過逐步提升的方式,提高整個模型的準確性.而且Boosting 策略可以看作串行化學習過程,如果數(shù)據(jù)量比較大且屬性比較復雜,會出現(xiàn)數(shù)據(jù)不能全部加載,模型計算的復雜度高,預測結果精度不夠等一系列問題,所以考慮采用基于Boosting 策略的XGBoost 算法.XGBoost 支持在特征粒度上進行多線程并行,有效提高模型運算效率,實現(xiàn)上在目標函數(shù)里面引入了正則項,進一步提高模型泛化能力,文獻[10]詳細說明了XGBoost 的優(yōu)點.
針對以上問題,本文提出一種基于特征選擇和集成學習算法的預測建模方法,其中,特征選擇步驟可以有效消除冗余特征,得到最優(yōu)特征子集,進而提高模型準確率;使用XGBoost 能有效提高分類模型的容錯性和泛化能力,從而降低模型的誤判率.然后將此模型應用于畢業(yè)生就業(yè)預測,對就業(yè)指導工作具有積極作用.
在文獻[9]的基礎上,針對畢業(yè)生數(shù)據(jù)的特點,以互信息和權重為基礎,綜合過濾式和包裹式特征選擇算法的優(yōu)點,本文提出一種基于互信息及權重的混合特征選擇算法,即HMIGW 特征選擇算法,該方法包括過濾(Filter)和包裹(Wrapper)兩個階段,分別如下:
(1)針對冗余的無關特征進行過濾,對于每個特征,依次計算其信息度量,求出相關性估值Ix.
對于數(shù)據(jù)序列X=(x1,x2,…,xi,…,xm),求熵公式如下:
其中,p(xi)表示xi在X中的概率密度.兩個變量聯(lián)合熵大小表示兩個變量在一起的不確定性度量.條件信息熵表示已知其中一個變量情況下求另一變量Y=(y1,y2,…,yi,…,ym)情況下信息熵大小,兩者公式如下:
其中,式(2)中p(xi,yi)表示兩個變量組合概率密度函數(shù),式(3)中p(xi,yi)表示在已知yj情況下p(xi)的條件概率密度.由式(1)和式(3)可得式(4)表示如下:
熵大小表示變量之間的穩(wěn)定性,而互信息大小能夠表示變量之間的相互依賴程度,互信息定義如式(5):
其中,I(X;Y)表示X,Y兩者之間的共享信息度量.I(X;C)越大說明X,Y相關性越強.式(5)通過式(1)、(2)轉換,互信息可表示為熵的形式如式(6):
記I(X;Y)為特征X的相關性估值Ix.
(2)采用前向特征添加后向遞歸刪除策略進行特征選擇
根據(jù)(1)中求得的相關性估值Ix對特征空間的特征降序排序,使用前向添加策略對特征空間進行遍歷,每次都增加一個特征,逐次增加相應的特征集合為X1,X2,…,Xm(m為特征子集所包含的特征數(shù)目),然后通過XGBoost 算法對當前特征集合進行分類精度計算,求出分類精度為ai.如果ai<ai-1,那么從特征集合X中去除特征xi,依次循環(huán)往復直至結束.
上述策略的優(yōu)點是:通過先求出相關性估值Ix,然后基于Ix值,再使用分類精度來二次對每個特征對預測結果的貢獻權重進行評估,這樣就能有效降低特征波動性而且不犧牲預測精度,根據(jù)評估結果刪除權重較小的特征.每次有特征被刪除以后,都會對特征集合進行重新遍歷生成新的特征集合,重復上述步驟,就可以得到冗余最小、性能最優(yōu)的特征集合.
與單純向前、向后查找相比,上述方法首先對特征進行降序排序,并在其基礎上以當前特征子集分類預測精度為評價指標,遞歸去除掉冗余和分類精度較低的特征,有效降低了特征波動性.與單純使用Filter 或者Wrapper 方法相比,HMIGW 算法在過程上先進行過濾然后根據(jù)過濾結果遞歸包裹,保證了所選出的特征子集冗余最少性能最優(yōu).
算法1.HMIGW 算法輸入:數(shù)據(jù)集D,特征集合X={xi|i=1,…,v},rmax=0,Xbest=Φ.輸出:最優(yōu)特征子集Xbest.1)分別計算特征xi關于類別特征的Ii,若Ii=0,則刪除特征xi,X=X-{xi};2)將上一步計算得到的Ii值記為綜合評估值,根據(jù)綜合評估值Ii對特征進行降序排序;3)使用XGBoost 算法綜合評估,對步驟2)降序排序后的特征子集采用前向特征添加策略,即子集搜索策略遍歷特征空間,然后計算出算法在該特征子集Xi上的精確度ai,其中i表示特征子集中元素的個數(shù):boolean flag=false;for (ai(i=1,…,v))do if (ai<ai-1)flag= true;從集合中刪除特征xi,并記錄刪除特征xi以后算法精度為atmp;if(amax<atmp)thenamax=atmp,xbest=X;end if;break;end if;
end for utilflag=false 達到終止條件
集成學習的主要策略有Bagging 與Boosting,兩種策略都有各自的優(yōu)缺點.隨機森林模型采用Bagging取樣策略,模型方差較小,但是偏差較大,因此要求基學習器具有相對較高的準確性.Boosting 策略則可以降低模型偏差.原理上講,即使采用了準確度不高的基學習器,也可以通過逐步提升來提高整個模型的準確性.XGBoost 算法是通過一組分類器的串行迭代計算實現(xiàn)更高精度的分類效果,其基學習器是分類回歸樹(CART),在預測時將多個基學習器的預測結果綜合考慮得出最終的結果.假設有K個樹,樹集成模型為:
其中,fk是函數(shù)空間F里的一個函數(shù),F是包含所有回歸樹的函數(shù)空間.
集成模型的參數(shù)有每棵樹各自的結構以及葉的分數(shù),可抽象得使用函數(shù)fk作為參數(shù),Θ={f1,f2,… ,fk}.目標函數(shù)包含損失函數(shù)和正則化項,損失函數(shù)評估每個真實類別yi和診斷類別的差異,正則化也就是對于模型進行懲罰,如果模型越復雜,它的懲罰就越大.
其中,T是葉子節(jié)點數(shù)量,||ω||2表示L2正則,ω表示需要正則的參數(shù),γ和λ是系數(shù).
正則化項可以使得模型結構和函數(shù)更為簡單.更具體地說,第一項用來懲罰樹的復雜結構(葉子越少則Ω 越小),然而,第二項懲罰項則懲罰單棵樹,使得單棵樹不過重,以防失去平衡的樹去支配模型.因此,第二項會使得學習樹的權重更平滑,泛化能力更強.
對訓練數(shù)據(jù)進行學習的時候,每次都會在原有模型不變的基礎上,加上一個新的函數(shù)f,并觀察當前目標函數(shù),如果新加入的函數(shù)會使目標函數(shù)的值比加入前更小,那么就將該函數(shù)加入到模型中.
XGBoost 采用Boosting 策略均勻取樣,同時XGBoost在迭代優(yōu)化的時候使用了目標函數(shù)的泰勒展開的二階近似因此基于Boosting 的XGBoost 精度更高[10].XGBoost 在進行節(jié)點的分裂時,支持各個特征利用CPU 開多線程進行并行計算,因此計算速度也更快.
構建的預測模型在畢業(yè)生就業(yè)預測中實現(xiàn).就業(yè)預測建??梢苑譃? 個步驟來實現(xiàn),如下圖1所示,首先是數(shù)據(jù)采集,對數(shù)據(jù)進行預處理,主要包括缺失值、異常值的處理、數(shù)據(jù)清洗規(guī)約等過程.通過預處理成功構建數(shù)據(jù)集,將數(shù)據(jù)集通過上述建模算法進行建模,本文先采用了HMIGW 特征選擇算法選擇出最優(yōu)特征子集,然后基于XGBoost 算法進行預測,最后進行結果分析,驗證本文所采用方法的有效性.
圖1 基于畢業(yè)生就業(yè)預測模型構建
實驗數(shù)據(jù)來源于實驗室項目“沈陽航空航天大學實踐教學管理系統(tǒng)”就業(yè)管理平臺,數(shù)據(jù)集包含了2016年到2018年三年的畢業(yè)生信息.
畢業(yè)生就業(yè)數(shù)據(jù)包含來自學籍管理系統(tǒng)以及畢業(yè)生就業(yè)管理系統(tǒng)等多個數(shù)據(jù)庫來源的數(shù)據(jù),需要對影響就業(yè)的學生基本屬性及就業(yè)單位屬性進行篩選和歸納,將學生的高考類別、入學成績、學生地域、應往屆、年齡、性別、綜合素質評價、是否順利畢業(yè)、企業(yè)單位地址、單位性質等信息進行數(shù)據(jù)清理轉換和整合,對缺失值進行刪除插補等處理,針對異常值進行填充或者刪除.
畢業(yè)生數(shù)據(jù)的信息量大而復雜,特征維度較高,而且各屬性之間趨向離散,且既有離散型特征也有連續(xù)型特征,且冗余特征較多,而在高維數(shù)據(jù)分析過程中,當樣本存在冗余特征時會大大增加問題分析復雜難度,因此數(shù)據(jù)分析前從中剔除冗余特征尤為重要.特征選擇是指在保證特征集合分類性能的前提下,通過一定方法從原始特征集合中選出具有代表性的特征子集,從而將特征空間變?yōu)樽钚∪哂?、決定最優(yōu)性能的過程.根據(jù)依賴于模型與否,特征選擇方法有兩種,分別為過濾式(Filter)和包裹式(Wrapper).過濾式是根據(jù)數(shù)據(jù)本身的特性對當前特征子集進行評估,獨立于模型,該方法一般運行效率較高,但分類性能較差;包裹式將模型分類精度同步于特征選擇過程,精度相對較高但是運行效率低下.因此傳統(tǒng)的特征選擇方法不適用于這種情況.
根據(jù)本文提出的HMIGW 算法,分別計算每個特征和類別的相關性估值I如表1.
表1 各特征和類別相關性估值
根據(jù)HMIGW 算法,在選擇最優(yōu)特征子集的時候,首先基于表1各特征的相關性估值可以看出每個特征和類別的相關程度,再通過計算特征之間的相關性估值去除了和特征7 冗余的特征16 以及和特征5 冗余的特征17,然后采用前向特征添加后向遞歸刪除策略即子集搜索策略去除特征15 和特征18,最后選出最優(yōu)特征子集如下:獲獎學金次數(shù)、實習次數(shù)、綜合成績、專業(yè)成績、參加社團個數(shù)、專業(yè)熱門程度、擔任學生干部次數(shù)、擔任學生干部級別、政治面貌、計算機水平、大學英語等級、戶口、托福/雅思/GMAT、性別.
對于就業(yè)情況需要進行量化,本文基于該應用建立了一個二級分類模型,首先根據(jù)是否就業(yè)分為就業(yè)、未就業(yè)兩類,然后對類別為就業(yè)的數(shù)據(jù)集進行二級分類,該類別根據(jù)就業(yè)單位進行劃分,包括國企、外企和私企三類.對類別為未就業(yè)的數(shù)據(jù)集進行二級分類,類別包括升學以及未找到工作兩類.
驗證由兩部分組成:驗證HMIGW 算法的有效性和驗證本文模型的有效性.
(1)驗證HMIGW 算法的有效性
本實驗中選用CFS (Correlation-based Feature Selection)和WFS (Wrapper Feature Selection)算法與本文提出的HMIGW 算法進行性能對比.使用XGBoost集成學習算法對上述三種特征選擇算法選出的特征子集進行分類預測,隨后采用交叉驗證方法計算分類模型的分類精度.對實驗結果進行分析比較,驗證本文特征選擇方法的有效性.
(2)驗證本文模型的有效性
在數(shù)據(jù)集上首先使用HMIGW 特征選擇算法選出最優(yōu)特征子集,然后分別使用XGBoost 算法和隨機森林算法進行分類預測,同樣使用交叉驗證計算模型的精確度.對比實驗結果,驗證本文采用XGBoost 算法建模的有效性.
通過計算評價指標來評價預測模型的質量是實驗部分的重要環(huán)節(jié),本文選取的評價指標有準確率(Precision)、召回率(Recall)、F1值.評價指標定義如下:
其中,p為陽性樣本總數(shù),Tp為正確預測的陽性樣本數(shù)量,Np為錯誤預測的陽性樣本數(shù)量,F1分數(shù)是精度和召回的調和平均值,達到最優(yōu)值為1,最差值為0.
此外,如果樣本數(shù)據(jù)量比較大,計算速度也應該作為一個評價指標.本實驗使用python 的time.clock()來記錄模型計算時間.
(1)實驗中,CFS 和WFS 算法分別采用最佳優(yōu)先搜索(Best First,BF)和貪心單步搜索(Greedy Stepwise,GS)算法進行特征子集選擇;而HMIGW 則采用前向特征添加后向遞歸刪除策略進行特征選擇.
表2列出了在數(shù)據(jù)集上上述3 種算法來特征選擇,然后將得到的特征子集使用XGBoost 算法來訓練,并且進行5 次交叉驗證后結果比較.其中,Fnum表示特征的個數(shù).
表2 基于不同特征選擇算法構建畢業(yè)生預測模型對比
圖2 不同特征選擇算法分類精度對比
從表2中可以看出,本文提出的FMIGW 特征選擇方法分類精度為97.324%,召回率為97.0%,均優(yōu)于其他特征選擇方法.CFS 在降維方面表現(xiàn)較優(yōu),但分類精度較低;WFS 在特征降維方面性能低于其他方法,然而與本文提出的HMIGW 算法相比綜合性能較差且時間代價較大.
在冗余特征判斷準確性方面,根據(jù)表1,HMIGW算法篩選出了個別的相關特征,例如屬性“是否擔任學生干部”和屬性“是否參加社團”,他們分別與“擔任學生干部次數(shù)”和“參加社團個數(shù)”兩個屬性相關,而CFS 和WFS 方法均沒有去掉這兩個相關屬性,但是HMIGW 可以成功地選擇出這些數(shù)據(jù)屬性,對冗余特征判斷的準確性好于另外兩種方法.
在對特征信息完整度影響方面,根據(jù)表1的相關性估值排名以及可以看出,15 以后的特征相關性估值I 遠遠低于175,在HMIGW 算法的前向特征添加后向遞歸刪除過程中得出添加對應特征得出的精確度ai小于等于不添加其的精確度,且冗余信息不影響有效特征信息完整度,所以使用HMIGW 算法可以準確判斷特征集合中的冗余信息,且得出的特征子集能夠最大程度保留有效特征信息完整度.
通過對比表明,本文HMIGW 特征選擇方法能夠選出特征維度相對較低,分類性能最優(yōu)的特征子集.
(2)用測試集對XGBoost 算法建立的預測模型進行性能評價.為了比較更加直觀,添加了隨機森林算法作為比較.隨機森林是通過建立多棵決策樹,每棵樹單獨對樣本進行分類,最終分類結果由每棵樹各自的分類結果通過投票決定.
圖3 基于HMIGW 的XGBoost 和隨機森林性能對比
結合表3中2 個模型下的各項性能指標,可以看出,XGBoost 模型在預測準確率,召回率,F1 值方面均優(yōu)于隨機森林模型.在模型訓練時間方面,XGBoost 也優(yōu)于隨機森林.
表3 XGBoost 和隨機森林模型預測結果對比
(3)綜合以上,本文采用的畢業(yè)生就業(yè)預測方法通過先求出特征相關性估值I,在其基礎上再使用分類精度來二次對每個特征對預測結果的貢獻權重進行評估得出最優(yōu)特征子集,這樣做有效降低征的波動性,且不會降低預測精度.然后采用XGBoost 算法對得出的最優(yōu)特征子集數(shù)據(jù)集進行分類預測,通過串行迭代計算實現(xiàn)更高精度的分類效果,在預測方面達到了97.34%的準確率,在進行節(jié)點的分裂時利用CPU 開多線程進行并行計算,有效提升計算速度,訓練時間控制在了0.03s,比文中討論的別的預測方法具有較大的性能提升.
本文以畢業(yè)生就業(yè)預測為應用研究背景,針對學生數(shù)據(jù)情況,提出了一種適用于該應用的特征選擇算法HMIGW,并采用XGBoost 算法進行分類預測,利用其并行運算速度快、精度高、靈活性強、魯棒性好的特點,構建了畢業(yè)生就業(yè)預測模型.實驗研究結果表明,該模型能夠根據(jù)畢業(yè)生的相關信息,預測畢業(yè)生就業(yè)情況以及就業(yè)類型.且該模型在準確率、召回率、F1值和模型訓練時間指標上表示較優(yōu),可以為畢業(yè)生就業(yè)提供強有力的指導,具有非常積極的意義.