李 斌 王衛(wèi)星
(河南科技大學(xué)應(yīng)用工程學(xué)院現(xiàn)代教育技術(shù)中心 河南 三門峽 472000)
目前對高校貧困生進行判定的方法大都利用數(shù)據(jù)挖掘技術(shù)定量和定性結(jié)合。文獻[1]通過能夠面向多值屬性的關(guān)聯(lián)規(guī)則Apriori算法的改進提高了數(shù)據(jù)挖掘效率,為高校貧困生認(rèn)定工作提供了有利依據(jù);文獻[2-4]對數(shù)據(jù)預(yù)處理并使用C4.5算法,將知識表示成樹的形式,采用錯誤預(yù)測率進行修剪,分別歸納出決策樹,分析并選出其中較優(yōu)結(jié)果,原理簡單且計算快速準(zhǔn)確;文獻[5]基于加權(quán)約束的決策樹認(rèn)定方法提高了貧困生認(rèn)定效率;文獻[6]結(jié)合Logistic回歸、Native Bayes和k近鄰三種分類預(yù)測模型綜合比較認(rèn)為k近鄰模型能更好地判別出學(xué)生是否是貧困生;文獻[7]在相同的數(shù)據(jù)集中證明隨機森林算法分類正確率較高。
上述學(xué)者針對貧困生判定的研究主要側(cè)重于個別分類算法,對算法的計算成本、性能優(yōu)化缺乏深入分析,評價方式比較單一化。本文認(rèn)為高校貧困生識別可以在做好反復(fù)訓(xùn)練和評估模型的基礎(chǔ)上,集成多個分類算法,運用NCA對特征參數(shù)降維以提升計算性能;引入成本懲罰函數(shù)并利用貝葉斯超參數(shù)調(diào)優(yōu)對分類模型進行進一步優(yōu)化,以提升分類模型的預(yù)測準(zhǔn)確率。
分類算法旨在構(gòu)建分類預(yù)測的模型,是人工智能、模式識別和數(shù)據(jù)挖掘領(lǐng)域中重要的數(shù)據(jù)處理方法[8]。
1.1.1決策樹CART
CART(Classification and Regression tree)分類回歸樹使用基尼指數(shù)(Gini),采用二元切分法選擇特征進行訓(xùn)練數(shù)據(jù)切割:
決策樹算法的優(yōu)點是計算復(fù)雜度不高,輸出結(jié)果易于理解,對中間值的缺失不敏感,缺點是易會產(chǎn)生過擬合問題[9-10]。
1.1.2非線性SVM
SVM支持向量機是將低維空間的輸入數(shù)據(jù)投放到一個更高維的特征空間,用線性決策邊界分割在低維空間難以區(qū)分的正例和負(fù)例。在非線性問題上,用內(nèi)積φ(xi)·φ(xj)代替最優(yōu)分類面中的點積。
最大化目標(biāo)函數(shù)為:
約束條件:
相應(yīng)的分類器函數(shù)轉(zhuǎn)化為:
SVM的優(yōu)點是泛化錯誤率低,計算開銷不大,結(jié)果易解釋;缺點是對主要適用于處理二分類問題,參數(shù)調(diào)節(jié)和核函數(shù)的選擇敏感,但經(jīng)過構(gòu)造可以將多分類問題轉(zhuǎn)化為二分類問題[11]。
1.1.3k-最近鄰算法
k-最近鄰給每個屬性相等的權(quán)重進行基于距離的鄰近比較。常用的鄰近距離是歐幾里德距離,兩個點或樣本X1=(x11,x12,…,x1n)和X2=(x21,x22,…,x2n)的歐幾里德距離為:
(6)
k-最近鄰分類算法的優(yōu)點是無數(shù)據(jù)輸入假定、噪聲數(shù)據(jù)影響不大、精度略高;缺點是計算空間復(fù)雜度高。
1.1.4貝葉斯方法
貝葉斯是基于貝葉斯定理與特征條件獨立假設(shè)的分類方法,在數(shù)據(jù)集D中令A(yù)1,A2,…,A|A|為用離散值表示的屬性集合,令C為具有|C|個不同值的類別屬性,假設(shè)所有屬性都是條件獨立于類別C=cj,數(shù)學(xué)表示為:
P=(A1=a1|A2=a2,…,A|A|=a|A|,C=cj)=P(A1=ai|C=cj)
從訓(xùn)練數(shù)據(jù)中可以直接得到先驗概率P(C=cj)和條件概率P(A1=ai),貝葉斯的分類公式為:
貝葉斯法的優(yōu)點即使數(shù)據(jù)較少也可高效處理多類別問題;缺點是對于數(shù)據(jù)輸入假設(shè)條件較為敏感。
1.1.5BP神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)是由一個輸入層、若干個隱含層和一個輸出層組成的多層網(wǎng)絡(luò),各層之間的連接方式通過權(quán)重值調(diào)節(jié)。若模型確定訓(xùn)練誤差的理想輸出是tk,實際輸出是zk,c代表輸出向量的長度,ω代表網(wǎng)絡(luò)的所有權(quán)值,η是學(xué)習(xí)速率,那么總誤差表示為:
(8)
基于梯度下降的誤差反向傳播算法BP神經(jīng)網(wǎng)絡(luò)是沿著減小誤差的方向來調(diào)整權(quán)值:
BP算法對網(wǎng)絡(luò)拓?fù)浼俺跏紮?quán)重敏感,泛化性能往往不能得到保證,容易陷入局部最小[12-14]。
綜上所述,將幾種典型的機器分類算法的對比總結(jié)如表1所示。
表1 幾種分類算法分析比較
續(xù)表1
在機器學(xué)習(xí)領(lǐng)域里,一方面高度靈活的模型由于擬合了噪聲數(shù)據(jù)的細微變化易造成過擬合,另一方面簡單的模型可能又需有更多的假設(shè)條件。在模型速度、準(zhǔn)確性和復(fù)雜性之間的權(quán)衡本已不易,算法的選擇還取決于要處理的數(shù)據(jù)的大小和類型以及如何運用從數(shù)據(jù)中獲得的洞察力,因此不存在一種萬能的算法可以完美解決所有問題。
在對高校貧困生預(yù)測判定建模時,需要做好反復(fù)訓(xùn)練和評估模型的準(zhǔn)備。既可運行所有算法進行比較,也可從特定分類任務(wù)的經(jīng)驗最佳擬合算法開始。對每個訓(xùn)練的分類器,要保留驗證數(shù)據(jù)或反復(fù)使用交叉驗證對精確度進行評估,最終嘗試集成多類分類算法克服訓(xùn)練數(shù)據(jù)的過擬合。
分類模型的改進優(yōu)化意味著進一步提高其準(zhǔn)確性和預(yù)測能力,避免模型無法區(qū)分?jǐn)?shù)據(jù)和噪聲時過擬合。本文在對分類模型經(jīng)反復(fù)評估初步確定后,對模型的改進優(yōu)化手段主要采取鄰域向量分析NCA特征降維和貝葉斯超參數(shù)調(diào)優(yōu)。
特征降維是向模型添加變量或移除不能改進模型性能的變量,以在數(shù)據(jù)建模中提供最佳預(yù)測能力[15]。特征降維不但可以降低計算成本和存儲要求,還能使預(yù)測結(jié)果更加精確。
NCA是一種距離測度學(xué)習(xí)算法。該算法隨機選擇近鄰,通過優(yōu)化留一法(Leave-one-out, LOO)的交叉檢驗結(jié)果來求得馬氏距離中的變換矩陣。在這個過程中完成降維,最后在低維空間對數(shù)據(jù)完成分類。
數(shù)據(jù)集X={x1,x2,…,xn}在RD空間內(nèi)分別具有類標(biāo)簽c1,c2,…,cn,限定馬氏距離變換矩陣Q=ATA,兩個樣本點之間的馬氏距離定義為:
i,j=1,2,…,n
(10)
樣本點xi隨機選擇一個xj近鄰并繼承其類標(biāo)簽cj的概率Pij,概率Pij在變化空間中使用歐式距離定義如下:
因為每個數(shù)據(jù)點都可以選擇為近鄰,因此輸入數(shù)據(jù)可以繼承所有的類標(biāo)簽,樣本點xi正確分類的概率為:
(12)
NCA搜索變換矩陣A,目標(biāo)函數(shù)可以理解為要使得正確分類的點數(shù)最大化期望,也就等同于最小化類間距離:
(13)
這個無約束優(yōu)化問題通過共軛梯度法或隨機梯度法求出A,使用微分的變換矩陣:
式中:xij=xi-xj,當(dāng)A是d×D的非方陣時,經(jīng)過NCA距離測度學(xué)習(xí)可以將樣本降到RD空間[16-17]。
實際應(yīng)用中,由于共軛梯度法通過多次迭代才能得到目標(biāo)函數(shù)最優(yōu)解,占用內(nèi)存的同時耗時較大,因此使用等價于共軛梯度的擬牛頓法基礎(chǔ)上的L-BFGS(Limited-memory BFGS)算法進行計算,其中BFGS是四個提出這種擬牛頓法的四個人名的首字母。L-BFGS算法的核心是不再存儲完整的矩陣,而是存儲計算過程中的向量序列,且只利用最新的向量序列,以大幅降低運算成本。
識別能提供最佳模型的參數(shù)集的過程可稱為超參數(shù)調(diào)優(yōu)。兩個常用的參數(shù)調(diào)優(yōu)方法是網(wǎng)格搜索和貝葉斯優(yōu)化。雖然網(wǎng)格搜索能徹底搜索參數(shù)值組合的有限集,但耗時太長并易遇到維度災(zāi)難。
貝葉斯參數(shù)優(yōu)化充分利用被測試點忽略的前一個點的信息[18]。它根據(jù)先驗分布假設(shè)一個搜集函數(shù),使用每次新采樣點去測試目標(biāo)函數(shù)的信息來更新目標(biāo)函數(shù)的先驗分布。然后測試由后驗分布給出的全局最值最可能出現(xiàn)的位置點。貝葉斯優(yōu)化雖需執(zhí)行更多的迭代計算以確定下一個采樣點,但可以較少的評估就找到復(fù)雜非凸函數(shù)的最小值,主要分三個步驟:
(1) 選擇一個先驗函數(shù)來表達關(guān)于被優(yōu)化函數(shù)的假設(shè)。本文選擇使用的高斯過程是一個隨機變量的集合,任意有限個隨機變量都滿足一個聯(lián)合高斯分布[9]。若X表示訓(xùn)練集{x1,x2,…,xt},f表示未知函數(shù)值集合{f(x1),f(x2),…,f(xt)},Σ表示k(x,x′)構(gòu)成的協(xié)方差矩陣Ⅱ,θ表示超參數(shù),當(dāng)存在觀測噪聲且假設(shè)噪聲ε滿足獨立同分布的高斯分布p(ε)=N(0,σ2),可以得到邊際似然分布為:
(15)
式中:y表示觀測值集合{y1,y2,…,yt}。
然后選擇采集函數(shù)用來從后驗?zāi)P蜆?gòu)造一個效用函數(shù),來確定下一個采樣點[20-22]。采集函數(shù)可以在具有低建模目標(biāo)函數(shù)的點上對采樣進行平衡,并對尚未建模區(qū)域進行搜索。
貝葉斯超參數(shù)調(diào)優(yōu)的算法步驟如算法1所示。
算法1貝葉斯優(yōu)化算法
Bayesian optimization:選取n個采樣點作為先驗,假設(shè)它們服從高斯分布
1: forn=1,2,…,n,do
2: 根據(jù)最大化采集函數(shù)α選取下一個采集點xn+1
3: 查詢目標(biāo)函數(shù)以獲得yn+1
4: 整合數(shù)據(jù)集Dn+1={Dn,(xn+1,yn+1)}
5: 更新概率模型
6: end for
為提高找到最優(yōu)參數(shù)值的機率,并使超參數(shù)調(diào)優(yōu)更加高效,使用MATLAB中的貝葉斯優(yōu)化工具執(zhí)行超參數(shù)調(diào)優(yōu),同時引入成本函數(shù)對錯誤分類進行懲罰。
高校貧困學(xué)生的貧困成因多集中在家庭經(jīng)濟情況、生活水平、家庭勞動力狀況、在校消費能力水平、消費習(xí)慣、學(xué)業(yè)水平、學(xué)習(xí)主動力等方面[23]。
本文通過某高校2016-2017年度校園應(yīng)用服務(wù)中積累的數(shù)據(jù)。首先選擇訓(xùn)練數(shù)據(jù)進行分類學(xué)習(xí),反復(fù)訓(xùn)練和評估分類模型后選擇合適的分類算法。然后采用NCA特征降維和貝葉斯參數(shù)調(diào)優(yōu)對模型進行優(yōu)化,對某高校的貧困生的精準(zhǔn)判定實現(xiàn)預(yù)測和評判。
樣本數(shù)據(jù)會以各種形式和大小出現(xiàn),如高校貧困生的真實數(shù)據(jù)集可能較混亂、不完整且采用格式各異。對高校各個業(yè)務(wù)子系統(tǒng)中得到的原始數(shù)據(jù)進行預(yù)處理需采用專業(yè)數(shù)據(jù)處理工具和不同的預(yù)處理方法。
將從高校各個應(yīng)用系統(tǒng)中抽取出的數(shù)據(jù)進行標(biāo)簽標(biāo)記、清理無效數(shù)據(jù)、分類匯總后得到完整的樣本數(shù)據(jù)共9 909組。這些組樣本數(shù)據(jù)初步特征值共有21種,其中部分特征來源于學(xué)生調(diào)查問卷等,并對部分?jǐn)?shù)據(jù)進行了離散化處理,如表2所示。
表2 樣本特征值列表
續(xù)表2
在MATLAB中將經(jīng)過初步清噪脫敏后的數(shù)據(jù)導(dǎo)入,對數(shù)據(jù)樣本采用k折交叉驗證,k值取5,每次以k-1份作為訓(xùn)練集,1份作為驗證集。得到驗證集性能后,將5次結(jié)果平均作為模型的性能指標(biāo),以最大化使用模型訓(xùn)練的數(shù)據(jù)量,得到泛化更好的模型。MATLAB中多個分類器的性能比較和分類初始結(jié)果如圖1所示。
圖1 多個分類算法的初始比較圖
從圖1中可以看出,訓(xùn)練樣本明顯地被分為common、poorer和poorest三類灰度程度不同的顏色,其中的“×”為噪聲數(shù)據(jù)。實證對比算法模型結(jié)果,高校貧困生預(yù)測最初顯示二次支持向量機(SVM)表現(xiàn)良好,然后是線性支持向量機和決策樹算法。不同分類器的時間消耗和準(zhǔn)確率性能比較如表3所示。
表3 不同分類算法的初始性能比較
在處理高校貧困生涉及的數(shù)據(jù)集包含大量特征和有限的觀察值時,運用NCA特征選擇技術(shù)降維,具體步驟如下:
Step1將訓(xùn)練數(shù)據(jù)分成5份,使用CVpartition進行交叉驗證,賦值λ并創(chuàng)建一個數(shù)組陣列來存儲損失函數(shù)值。
Step2使用每部分中的訓(xùn)練集,為每個值訓(xùn)練NCA模型。使用NCA模型計算每部分中相應(yīng)測試集的分類損失,記錄損失值。
Step3重復(fù)所有部分訓(xùn)練值和λ值,計算得出每個λ值的每個部分的平均損失。繪制平均損失值與λ值之間的關(guān)系,找到與最小平均損失對應(yīng)的最佳λ值。
Step4使用最佳λ值擬合NCA模型,使用計算效率更好的L-BFGS算法去求解目標(biāo)函數(shù),標(biāo)準(zhǔn)化預(yù)測值繪制特征權(quán)重。
圖2顯示了在MATLAB中使用鄰域分量分析NCA識別的特征權(quán)重結(jié)果,圓圈表示對應(yīng)特征的特征權(quán)重??梢钥闯鎏卣髦笜?biāo)1(num_consump)、2(sum_consump)、3(var_consump)、9(income_family)、18(score_mutual)、12(cost_living)、6(weight_average_core)、8(elecNum)、14(indebt)、17(disease_family)、19(tuition_defer)的特征權(quán)重值高于相對閾值0.374 6。利用MATLAB中自帶的NCA降維揭示了在貧困生特征中大約一半的特征對模型沒有重要作用。因此,我們可以減少特征數(shù)量,從21個減至11個。
圖2 使用鄰域分量分析NCA識別最相關(guān)的特征結(jié)果
按照NCA降維后的特征選擇,重復(fù)前述分類算法,比較不同算法降維后的各項性能參數(shù)如表4所示。
表4 不同分類算法NCA降維后性能比較
從表4的幾種分類算法的性能變化值可以明顯看出,NCA降維后,整體預(yù)測速度和計算時間變化明顯,特別是線性判別算法因為特征數(shù)的大幅減少而性能大幅提升,決策樹分類算法表現(xiàn)優(yōu)異。
使用單獨的分類算法往往會過度擬合訓(xùn)練數(shù)據(jù),為了克服這種傾向,可以嘗試集成多個分類算法,典型的比如Boosted Trees和Bagged Trees。測試表明這兩種集成分類算法在降維后的準(zhǔn)確率仍可以達到99.3%。從上述算法對比中也可以看出,某些算法初始表現(xiàn)很好,改進后表現(xiàn)一般,有的反之。所以可以后退到特征提取階段去尋找其他特征并降維,在機器學(xué)習(xí)工作流程的不同階段之間反復(fù)實驗和對比,尋找最佳模型。
在高校貧困生預(yù)測分類模型中,單單根據(jù)總體精確度分析性能很容易產(chǎn)生誤導(dǎo),比如未能準(zhǔn)確預(yù)測實際貧困相比錯誤地將正常情況學(xué)生誤判為貧困要造成更大的不公平。圖3所示的初步模型分類結(jié)果混淆矩陣,將3%的貧困生誤報為正常學(xué)生,而將8%的普通學(xué)生分類為貧困和極度貧困。這將造成部分學(xué)生的評判結(jié)果失真,不需補助的學(xué)生得到補助,而急需補助的學(xué)生卻失去應(yīng)有的補助。
圖3 初步模型的混淆矩陣
為了改進分類器,引入成本函數(shù)對誤分類進行懲罰,補償數(shù)據(jù)中較少的“異?!庇^察,并使分類器偏向于較少的錯誤分類異常噪聲,將較高的錯誤分類成本分配給“異?!鳖?。同時利用貝葉斯優(yōu)化方法對模型參數(shù)進行超參數(shù)調(diào)優(yōu)。由于Trees的表現(xiàn)優(yōu)于SVM,本文以生成樹為效果目標(biāo),步驟如下:
Step1因為是common、poorer和poorest多分類,首先使用AdaBoostM1和Trees模型5倍交叉驗證分類,指定每個Trees最多被分割5次。然后對“common”的誤分類分配一個高成本值20以進行懲罰,即引入置信度的AdaBoostM2模型進行對比。
Step2在MATLAB中選用Bayseopt工具箱[24],使用fitcensemble找到使交叉驗證損失最小化5倍的超參數(shù),設(shè)置隨機種子值并使用“expected-improvement-plus”采集函數(shù)確定下一個要評估的點,并在置信區(qū)域內(nèi)進行探索。為了重復(fù)并可視化,將它們傳遞到OptimizeHyperparameters名稱-值對中,需要優(yōu)化的參數(shù)默認(rèn)為KernelScale和BoxConstraint。
Step3傳遞參數(shù)作為優(yōu)化超參數(shù)的值后命令行中會出現(xiàn)迭代顯示,超參數(shù)調(diào)優(yōu)結(jié)果如圖4所示,目標(biāo)函數(shù)為回歸的log(1+交叉驗證損失)和分類的誤分類率。進行迭代以優(yōu)化超參數(shù)、最小化分類器的交叉驗證損失,使用經(jīng)過優(yōu)化超參數(shù)訓(xùn)練的模型預(yù)測驗證集的類標(biāo)簽,可以看出經(jīng)過迭代后泛化能力擬合。圖4中的稍小圓點表明目標(biāo)點,稍大圓點標(biāo)明采集函數(shù)值最大的位置并以此作為下一個采集點。最佳估計可行點是根據(jù)最新模型估計均值最低的采集點,最佳觀測可行點是目標(biāo)函數(shù)評價返回值最低的采集點。
圖4 超參數(shù)調(diào)優(yōu)迭代過程和結(jié)果
表5說明了采用集成分類AdaBoostM2經(jīng)過貝葉斯超參數(shù)調(diào)優(yōu)后最佳估計可行點和最佳觀測可行點的比較結(jié)果??梢钥闯鰷?zhǔn)確率由93.45%提升到了97.49%,函數(shù)計算時間成本約降低了14 s,優(yōu)化效果明顯。
表5 超參數(shù)調(diào)優(yōu)后最佳估計可行點和最佳觀測可行點比較
Step4利用MATLAB中的混淆矩陣生成函數(shù)Confusion Matrix和熱圖生成函數(shù)Heatmap將經(jīng)過訓(xùn)練的模型預(yù)測驗證集的類標(biāo)簽,生成優(yōu)化后的多分類混淆矩陣并可視化,如圖5所示。
圖5 模型優(yōu)化后的多分類標(biāo)簽混淆矩陣
從優(yōu)化后的多分類標(biāo)簽混淆矩陣可以看出,經(jīng)過NCA降維后引入成本函數(shù)懲罰并用貝葉斯超參數(shù)優(yōu)化后的模型將初步模型8%的普通學(xué)生分類為貧困和極度貧困誤報率減少到5%,模型的準(zhǔn)確率明顯提升,達到了優(yōu)化效果。
高校貧困生預(yù)測判定建模運行了多種算法訓(xùn)練分類器,單獨的分類算法會過度擬合訓(xùn)練數(shù)據(jù),而且沒有一種算法是萬能最優(yōu),反復(fù)訓(xùn)練試錯才是選擇最佳算法的前提。對比算法模型結(jié)果,二次支持向量機(SVM)、線性支持向量機和決策樹算法表現(xiàn)略優(yōu)。使用NCA方法降維后,整體預(yù)測速度和計算時間變化明顯,決策樹分類算法表現(xiàn)優(yōu)異。集成分類算法Boosted Trees和Bagged是提升泛化能力的合理有效選擇。
在初始模型上保留驗證數(shù)據(jù),使用AdaBoostM1和Trees模型k折交叉驗證反復(fù)評估,與引入成本函數(shù)權(quán)重值調(diào)整的AdaBoostM2模型經(jīng)貝葉斯超參數(shù)調(diào)優(yōu)后對比。高校貧困生預(yù)測判定AdaBoostM2模型的準(zhǔn)確率提升了近4%,計算時間成本降低了14 s,誤判率由初始的8%改進到5%,說明優(yōu)化改進后的算法模型的泛化能力得到了一定的改進。