曾文玄,高啟文,陳新超
(1.福建醫(yī)科大學(xué) 信息中心,福建 福州 350122;2.福建醫(yī)科大學(xué) 后勤管理處,福建 福州 350122;3.福建醫(yī)科大學(xué) 教務(wù)處,福建 福州 350122)
新時(shí)期指導(dǎo)我國扶貧工作的重要思想是精準(zhǔn)扶貧,“精準(zhǔn)資助”也成為現(xiàn)階段我國貧困生資助等教育扶貧工作的新任務(wù)[1]。作為貧困生資助的首要環(huán)節(jié),貧困生認(rèn)定涉及有效識別貧困生這一根本問題,是資助工作的重要基礎(chǔ),是促進(jìn)教育公平的關(guān)鍵環(huán)節(jié)[2]。
目前,大多數(shù)高校的貧困生資格認(rèn)定流程為:學(xué)生個(gè)人自愿填寫家庭經(jīng)濟(jì)貧困申請表以及承諾書,附上地方政府出具的貧困證明一同交由班級評議小組民主評議,輔導(dǎo)員對申請資助的學(xué)生進(jìn)行一對一談話,最后對學(xué)生是否貧困進(jìn)行綜合判定。這類認(rèn)定過程存在以下問題。
(1)經(jīng)常出現(xiàn)“假貧困”現(xiàn)象。稅收可以最直接、最客觀和最準(zhǔn)確地反映個(gè)人和家庭經(jīng)濟(jì)情況,但我國的收入申報(bào)制度和稅收制度尚未完善,側(cè)面了解公民的收入和家庭經(jīng)濟(jì)狀況暫時(shí)無法完全實(shí)現(xiàn)[3]。而對學(xué)生家庭實(shí)地調(diào)查走訪的成本太高,所以貧困生認(rèn)定過程中過于依靠申報(bào)者的自律,容易出現(xiàn)虛假材料;而監(jiān)督懲處開具虛假貧困證明行為的力度較弱,使得遞交貧困證明的公信力下降,很難獲取真實(shí)可靠的相關(guān)數(shù)據(jù),貧困生認(rèn)定中不可避免出現(xiàn)“假貧困”現(xiàn)象。
(2)真困難學(xué)生自我主動(dòng)“屏蔽”貧困。在實(shí)際工作中發(fā)現(xiàn),有很多家庭經(jīng)濟(jì)貧困的學(xué)生由于家庭具體情況、性格等原因,不愿意讓同學(xué)知曉自己的家庭經(jīng)濟(jì)情況而放棄貧困資助,寧愿省吃儉用或者東挪西借也不愿意申報(bào),自我主動(dòng)“屏蔽”貧困[4]。
(3)認(rèn)定工作受主觀影響過大。在貧困生認(rèn)定中,特別是班級民主評議小組評議過程中,普遍存在受主觀影響較大、標(biāo)準(zhǔn)不夠客觀清晰、判定方法合理性不足和人為操作性較大等問題。
近年來高校信息化建設(shè)不斷發(fā)展,已經(jīng)進(jìn)入“智慧校園”階段。在大面積、長期覆蓋的信息化環(huán)境中,高校建立的各業(yè)務(wù)管理系統(tǒng)積累了各類反映學(xué)生行為特征的海量數(shù)據(jù),如生活消費(fèi)一卡通數(shù)據(jù)、教務(wù)教學(xué)及綜合測評數(shù)據(jù)和學(xué)工系統(tǒng)學(xué)生信息數(shù)據(jù)等[5]。這些數(shù)據(jù)都是學(xué)生現(xiàn)實(shí)生活的數(shù)字化表現(xiàn),通過對其中包含的學(xué)生個(gè)人相關(guān)信息、在校學(xué)業(yè)情況和生活消費(fèi)等數(shù)據(jù)進(jìn)行分析挖掘,可以得到反映學(xué)生基本行為特征的精準(zhǔn)數(shù)據(jù),基于這些精準(zhǔn)數(shù)據(jù)采用全神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)訓(xùn)練,獲得的高校貧困生輔助認(rèn)定模型具有較高的預(yù)測能力,可以為智慧校園背景下高校貧困生認(rèn)定工作提供更為精準(zhǔn)、客觀的支撐,較好地解決現(xiàn)有高校貧困生認(rèn)定環(huán)節(jié)中存在的問題[6]。
2015年11月,谷歌發(fā)布第二代基于人工智能網(wǎng)絡(luò)學(xué)習(xí)的系統(tǒng)——TensorFlow,它由 Google Brain團(tuán)隊(duì)開發(fā)和維護(hù),是基于Python的開源機(jī)器學(xué)習(xí)框架。其本質(zhì)是采用數(shù)據(jù)流圖(Data Flow Graphs)進(jìn)行數(shù)據(jù)分析和處理,將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)向復(fù)雜的人工智能神經(jīng)網(wǎng)中傳輸。TensorFlow可以在只調(diào)用一個(gè)TensorFlow API的前提下將深度神經(jīng)網(wǎng)絡(luò)的計(jì)算部署到任意數(shù)量的CPU或GPU的服務(wù)器、PC終端或移動(dòng)設(shè)備和網(wǎng)頁上,實(shí)現(xiàn)多層級結(jié)構(gòu)。TensorFlow 還可以提供除Python之外其他編程語言的接口,如Java、JavaScript、Go、R和C/C++ 等,可以應(yīng)用在音頻處理、推薦系統(tǒng)和自然語言處理和圖形分類等各種場景,是深受市場歡迎的主流機(jī)器學(xué)習(xí)框架[7]。Tensorflow具有適用于多種開發(fā)語言、有各方面強(qiáng)大支持,具有高移植性,比Torch/Theano擁有更好的計(jì)算圖表可視性。
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks, ANNs)簡稱神經(jīng)網(wǎng)絡(luò)(NNs)或連接模型,是一種模仿動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,進(jìn)行分布式并行信息處理的算法數(shù)學(xué)模型。這種網(wǎng)絡(luò)依靠系統(tǒng)的復(fù)雜程度,通過調(diào)整內(nèi)部大量節(jié)點(diǎn)之間相互連接的關(guān)系,從而達(dá)到處理信息的目的[8]。
一個(gè)全連接神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),包含輸入層(樣本數(shù)據(jù))、隱藏層(自己設(shè)定層數(shù))和輸出層(預(yù)測目標(biāo)),一個(gè)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)只有一個(gè)輸入層和一個(gè)輸出層,輸入層和輸出層之間的都是隱藏層。每一層神經(jīng)網(wǎng)絡(luò)都有若干神經(jīng)元,層與層之間神經(jīng)元相互連接,且下一層神經(jīng)元連接上一層所有的神經(jīng)元,而層內(nèi)神經(jīng)元不產(chǎn)生任何連接[9],全連接神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
可設(shè)計(jì)一個(gè)最簡單的神經(jīng)網(wǎng)絡(luò)來方便理解,它只有一個(gè)神經(jīng)元,簡單全連接神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示。
圖2 簡單全連接神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)Fig.2 Structure of a simple fully connected neural network
進(jìn)行模型訓(xùn)練的目的是使神經(jīng)網(wǎng)絡(luò)的輸出和實(shí)際的輸出也就是標(biāo)簽一樣,但出現(xiàn)這樣的效果之前,二者之間存在一定的差異,將這個(gè)“差異”設(shè)為參數(shù)e,表示誤差,模型輸出加上誤差之后即為真實(shí)標(biāo)簽,記作y=wx+b+e。
當(dāng)有n個(gè)輸入x和輸出y,即有n個(gè)誤差e。把n個(gè)誤差e都相加,表示誤差總量,為了避免殘差正負(fù)抵消,可取平方或取絕對值,此處取平方。這種誤差稱為“殘差”,是模型的輸出結(jié)果和真實(shí)結(jié)果之間的差值,損失函數(shù)Loss還可以稱為“代價(jià)函數(shù)cost”, 殘差表達(dá)式如下:
模型訓(xùn)練的目的是找到合適的w和b,使得整個(gè)殘差盡可能小,殘差越小說明訓(xùn)練的模型越好[11]。
首先采集與貧困生相關(guān)的數(shù)據(jù)并進(jìn)行處理得到數(shù)據(jù)集,將此數(shù)據(jù)集作為樣本特征值輸入進(jìn)行模型訓(xùn)練,將是否為貧困生設(shè)置為模型的輸出標(biāo)簽,神經(jīng)網(wǎng)絡(luò)基于輸入的樣本數(shù)據(jù)進(jìn)行學(xué)習(xí)訓(xùn)練,根據(jù)學(xué)習(xí)到的知識(即模型)產(chǎn)生期望輸出,再將期望輸出結(jié)果與標(biāo)簽值進(jìn)行比較,如結(jié)果和標(biāo)簽值一致則說明訓(xùn)練結(jié)果準(zhǔn)確。模型訓(xùn)練結(jié)果有訓(xùn)練精度(ACC)和損失值(LOSS)參數(shù),精度越高(損失值越低)表明模型的性能越高,預(yù)測的結(jié)果越準(zhǔn)確。通過對初始參數(shù)的調(diào)整設(shè)置,學(xué)習(xí)模型進(jìn)行反復(fù)迭代學(xué)習(xí),不斷地自我改進(jìn)從而得到更高的精度,提高模型預(yù)測的能力。
功能的實(shí)現(xiàn)主要包含以下幾個(gè)步驟[12]:
①從校園一卡通系統(tǒng)、學(xué)工系統(tǒng)和教務(wù)系統(tǒng)抽取不同年級各專業(yè)學(xué)生的消費(fèi)數(shù)據(jù)、綜合測評結(jié)果和個(gè)人家庭信息作為原始數(shù)據(jù);
②清洗抽取的樣本數(shù)據(jù),將與貧困生認(rèn)定無關(guān)的數(shù)據(jù)項(xiàng)剔除;
③預(yù)處理得到的數(shù)據(jù)集,將源數(shù)據(jù)進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化、規(guī)范化處理,以得到模型訓(xùn)練可用的數(shù)據(jù)集;
④利用樣本數(shù)據(jù)集和標(biāo)簽數(shù)據(jù),建立貧困輔助認(rèn)定模型,模型訓(xùn)練得到預(yù)測模型。
貧困生輔助認(rèn)定總流程如圖3 所示。
圖3 貧困生輔助認(rèn)定總流程Fig.3 Overall flowchart for auxiliary identification of poverty students
進(jìn)行貧困生輔助認(rèn)定模型訓(xùn)練,需要先準(zhǔn)備好可訓(xùn)練的數(shù)據(jù)集作為訓(xùn)練的樣本數(shù)據(jù)集,數(shù)據(jù)集的建模需經(jīng)過以下幾個(gè)過程:采集數(shù)據(jù)源、數(shù)據(jù)屬性抽取、數(shù)據(jù)建模、數(shù)據(jù)均衡化、PCA因子分析和數(shù)據(jù)歸一化。貧困生輔助認(rèn)定的數(shù)據(jù)準(zhǔn)備流程如圖4 所示。
2.2.1 數(shù)據(jù)源及抽取
采用神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型的過程中,首要關(guān)注的是樣本數(shù)據(jù)(輸入層)和標(biāo)簽數(shù)據(jù)(輸出層),對應(yīng)的是學(xué)生的基本行為特征和貧困生認(rèn)定數(shù)據(jù),本文主要從反映學(xué)生消費(fèi)水平的消費(fèi)行為習(xí)慣、在校學(xué)業(yè)情況(包括德、智和體各方面表現(xiàn))、影響學(xué)生家庭經(jīng)濟(jì)情況的學(xué)生親屬情況和個(gè)人信息等方面考慮確定數(shù)據(jù)源,并從中抽取相關(guān)數(shù)據(jù),結(jié)合往年貧困生認(rèn)定數(shù)據(jù)作為實(shí)驗(yàn)樣本數(shù)據(jù)[13]。
(1)一卡通消費(fèi)數(shù)據(jù)
本文采集的某校一卡通數(shù)據(jù)包含了2016—2019級4個(gè)年級所有在校本科生2020年9月份的消費(fèi)數(shù)據(jù),包括學(xué)號、校園卡號、食堂消費(fèi)金額、超市消費(fèi)金額、消費(fèi)時(shí)間、消費(fèi)類別名稱、消費(fèi)類型碼、卡序號、消費(fèi)地點(diǎn)、錢包余額和消費(fèi)筆數(shù)計(jì)數(shù)等48個(gè)字段,數(shù)據(jù)量共35萬條。學(xué)生消費(fèi)數(shù)據(jù)樣例如表1所示。
表1 學(xué)生消費(fèi)數(shù)據(jù)樣例
從學(xué)生消費(fèi)數(shù)據(jù)表中去除校園卡號、消費(fèi)時(shí)間、消費(fèi)類別名稱、消費(fèi)類型碼、卡序號、消費(fèi)地點(diǎn)、錢包余額和消費(fèi)筆數(shù)等與學(xué)生消費(fèi)行為習(xí)慣不相關(guān)的數(shù)據(jù)選項(xiàng)。抽取和模型相關(guān)的數(shù)據(jù)項(xiàng)包括學(xué)號、食堂消費(fèi)金額和超市消費(fèi)金額等數(shù)據(jù)。
(2)學(xué)生綜合測評結(jié)果
2019—2020學(xué)年的學(xué)生綜合評定情況包括學(xué)號、姓名、測評學(xué)年、學(xué)院、專業(yè)、班級、是否補(bǔ)考、現(xiàn)在年級、專業(yè)年級排名、綜測總分、德育測評成績、智育測評成績、體育測評成績、德育專業(yè)排名、智育專業(yè)排名和體育專業(yè)排名共16個(gè)字段,數(shù)據(jù)量共17.7萬余條。學(xué)生綜合測評結(jié)果樣例如表2所示。
在綜合測評結(jié)果表中,德育、智育和體育成績已經(jīng)細(xì)化體現(xiàn)了綜測總分,所以去除學(xué)生綜測總分;保留比德育、智育和體育成績更有相對可比性的各項(xiàng)專業(yè)排名數(shù)據(jù);去除與學(xué)業(yè)情況無關(guān)的學(xué)院、專業(yè)、班級、姓名和年級等數(shù)據(jù);由于只采用一個(gè)學(xué)年的測評結(jié)果,將測評學(xué)年去除。最后從學(xué)生綜合測評結(jié)果表中抽取學(xué)生德育、智育和體育成績專業(yè)排名,專業(yè)年級排名、是否補(bǔ)考等數(shù)據(jù)項(xiàng)。
(3)學(xué)生親屬關(guān)系表
主要是對學(xué)生的親屬關(guān)系描述字段,包括學(xué)生學(xué)號、與本人關(guān)系、學(xué)生姓名、學(xué)生性別、親屬姓名、親屬性別和親屬婚姻情況共7個(gè)字段,數(shù)據(jù)量共14.5萬余條,學(xué)生親屬關(guān)系樣例如表3所示。
表3 學(xué)生親屬關(guān)系樣例Tab.3 Sample table of student family relationship
在親屬關(guān)系數(shù)據(jù)中,與本人關(guān)系字段反應(yīng)出親屬是否健在,親屬是否健在是影響學(xué)生家庭經(jīng)濟(jì)情況的重要因素,所以抽取與本人關(guān)系和學(xué)生學(xué)號2個(gè)數(shù)據(jù)項(xiàng)作為訓(xùn)練數(shù)據(jù)。
(4)困難生認(rèn)定信息表
2019—2020學(xué)年困難生申請信息包括審核狀態(tài)、學(xué)號、姓名、院系、現(xiàn)在年級、申請時(shí)間、評定學(xué)年、申請困難類型和評定困難類型共9個(gè)字段,數(shù)據(jù)量共2.6萬余條。困難生認(rèn)定信息樣例如表4所示。
本文中2019—2020學(xué)年困難生認(rèn)定信息表的數(shù)據(jù)主要作為模型的樣本數(shù)據(jù)使用。出現(xiàn)在此表中的均為貧困生,抽取可判斷出是否貧困生的學(xué)號、評定困難類型2個(gè)數(shù)據(jù)項(xiàng)作為訓(xùn)練數(shù)據(jù)。
2.2.2 數(shù)據(jù)處理及標(biāo)準(zhǔn)化
前文從多數(shù)據(jù)源抽取的相關(guān)數(shù)據(jù)量較大,但并不是所有數(shù)據(jù)對于貧困生認(rèn)定模型訓(xùn)練都有意義。為了保證訓(xùn)練結(jié)果可靠、使數(shù)據(jù)具有更強(qiáng)的泛化能力與適應(yīng)性,在進(jìn)行模型訓(xùn)練之前需將抽取的大量數(shù)據(jù)中有價(jià)值的部分挖掘出來,對數(shù)據(jù)進(jìn)行清洗降噪、分析和整合等處理,并將數(shù)據(jù)轉(zhuǎn)換,完成數(shù)據(jù)的標(biāo)準(zhǔn)化,得到模型可訓(xùn)練的數(shù)據(jù)集。
①將抽取的消費(fèi)數(shù)據(jù)按照學(xué)號統(tǒng)計(jì)出學(xué)生在2020年9月份的消費(fèi)總金額,將數(shù)據(jù)泛化。
②抽取的綜合測評結(jié)果數(shù)據(jù)中,以7開頭的專升本學(xué)生數(shù)據(jù)中的年級專業(yè)排名數(shù)據(jù)中,排名有大量并列第一的情況,不具備參考性,予以清除。
③將親屬關(guān)系數(shù)據(jù)中與本人關(guān)系數(shù)據(jù)項(xiàng)進(jìn)行建模,按照學(xué)號對應(yīng),此數(shù)據(jù)項(xiàng)值為兄弟姐妹的轉(zhuǎn)換為是有兄弟姐妹值為1,否則值為0[14];數(shù)據(jù)項(xiàng)值為父親的轉(zhuǎn)換為父親健在值為1,否則值為0;數(shù)據(jù)項(xiàng)值為母親的轉(zhuǎn)換為母親健在值為1,否則值為0。
④用2019—2020學(xué)年困難生認(rèn)定信息和消費(fèi)數(shù)據(jù)表數(shù)據(jù),通過邏輯判斷來確定是否貧困生這個(gè)標(biāo)簽值。在消費(fèi)數(shù)據(jù)表中增加是否貧困生數(shù)據(jù)項(xiàng),如果學(xué)生學(xué)號在貧困生認(rèn)定表中出現(xiàn),其對應(yīng)為貧困生數(shù)值為1,否則為0。
將以上處理后的數(shù)據(jù)表通過學(xué)號這一字段關(guān)聯(lián)整合成一個(gè)貧困生輔助認(rèn)定訓(xùn)練數(shù)據(jù)集,數(shù)據(jù)集共有8 900余條數(shù)據(jù)。貧困生輔助認(rèn)定訓(xùn)練數(shù)據(jù)集如表5所示。
表5 貧困生輔助認(rèn)定訓(xùn)練數(shù)據(jù)集Tab.5 Training dataset for auxiliary identification of poverty students
⑤數(shù)據(jù)均衡化
為了保證模型訓(xùn)練結(jié)果的可靠性,在不破壞原數(shù)據(jù)之間相對關(guān)系的前提下獲得更合理的數(shù)據(jù)集分布,需要對消費(fèi)數(shù)據(jù)進(jìn)行分布均衡化處理。
經(jīng)以上處理后的數(shù)據(jù)集共有8 902條數(shù)據(jù),包含了6 571條非貧困生數(shù)據(jù)和2 331條貧困生數(shù)據(jù),正負(fù)樣本的比例為1∶3。為保留一定量的正向樣本,將貧困生消費(fèi)數(shù)據(jù)分布中的離群值剔除,留取1 552條貧困生樣本數(shù)據(jù),剔除后貧困生的月消費(fèi)金額為0~900元,剔除的貧困生數(shù)據(jù)作為測試集使用。之后將非貧困生消費(fèi)數(shù)據(jù)分布中的離群值剔除,因?yàn)檎驑颖镜谋壤?所以根據(jù)欠采樣的方法,在學(xué)生月消費(fèi)金額為0~900元的非貧困生中抽取一定量數(shù)據(jù),使正負(fù)樣本比例接近1∶1,最終隨機(jī)采樣非貧困生消費(fèi)數(shù)據(jù)1 613條[15]。
均衡前后學(xué)生月消費(fèi)數(shù)據(jù)分布對比如圖5所示。藍(lán)色折線橫坐標(biāo)跨越0~1 600分布,說明均衡前學(xué)生的月消費(fèi)金額在0~1 600元均有分布,而且不均勻:月消費(fèi)金額在1~100元有2 182個(gè)學(xué)生,而月消費(fèi)金額在1 200~1 300、1 300~1 400、1 400~1 500、1 500~1 600元各個(gè)區(qū)間的分布學(xué)生數(shù)均為個(gè)位數(shù);均衡后橙色折線橫坐標(biāo)跨越0~900,說明學(xué)生月消費(fèi)金額分布在0~900元的各個(gè)區(qū)間,橙色折線分布在整個(gè)圖縱向的下半部分,說明每個(gè)區(qū)間的學(xué)生分布數(shù)量相差不大。對比分析可見,均衡化后學(xué)生消費(fèi)數(shù)據(jù)分布更加均衡。
另一方面,也可以通過計(jì)算學(xué)生消費(fèi)數(shù)據(jù)分布的標(biāo)準(zhǔn)差來觀察均衡效果,學(xué)生消費(fèi)數(shù)據(jù)分布均衡前后標(biāo)準(zhǔn)差如表6所示。由表6可以看出,學(xué)生消費(fèi)數(shù)據(jù)分布均衡前后標(biāo)準(zhǔn)差從651.224 5降為281.268 8,說明均衡化效果較好。
⑥數(shù)據(jù)歸一化
數(shù)據(jù)歸一化方法一般是指將數(shù)據(jù)處理為[0,1]的實(shí)數(shù)。如學(xué)生月消費(fèi)金額為20~700元,將其除以 1 000,即可實(shí)現(xiàn)歸一化為[0,1][16]。
對于每一個(gè)維度指標(biāo),令 min(x(j))和 max(x(j))分別為數(shù)據(jù)集的最小和最大指標(biāo)值[17],可得尺寸參數(shù)x(j)為:
因此,每個(gè)記錄的值被映射到 [0,1]。利用(x(i),y(i)(i=1,2,…,q)規(guī)范化數(shù)據(jù)集,歸一化指標(biāo)向量為x(i)∈R。
具體的歸一化算法實(shí)現(xiàn)如下:
scaler =MinMaxScaler()
scaler.fit(x_data) # 訓(xùn)練
x_data = scaler.transform(x_data) # 此時(shí)輸出數(shù)組了
# print(x_data)
⑦PCA因子分析
通過PCA因子分析對數(shù)據(jù)進(jìn)行降維度,做回歸分析,降維算法實(shí)現(xiàn)如下:
pca_model = PCA(n_components=9).fit(x_data) # 代表提取的主成分有9個(gè)特征
x_pca_data = pca_model.transform(x_data)
print(x_pca_data)
2.3.1 實(shí)驗(yàn)環(huán)境
軟件環(huán)境:Python 3.6;CUDA 9.0;Tensorflow 2.4.0;Pandas 1.1.3。
硬件環(huán)境:macOS Catalina 10.15.7;Intel(R) Core(TM) i7-8569U CPU@ 2.80 GHz。
2.3.2 模型構(gòu)建
由于預(yù)測的結(jié)果只有是否為貧困生,沒有對貧困生進(jìn)行分類,3 163條數(shù)據(jù)量并不大,所以此處采用的是較為簡單的淺神經(jīng)網(wǎng)絡(luò),模型包含3層(輸入層、隱藏層、輸出層),描述如下:
①輸入層是9個(gè)維度的特征值,數(shù)據(jù)矩陣的大小為[n,9];
②隱藏層是2個(gè)全連接的ReLU層,每個(gè)ReLU層有64個(gè)神經(jīng)元;
③輸出層只有2個(gè)輸出值:0或1,表示是否是貧困生。
具體的模型結(jié)構(gòu)如圖6所示。
2.3.3 訓(xùn)練參數(shù)
在算法模型訓(xùn)練之初需要對模型的訓(xùn)練參數(shù)進(jìn)行初始化,主要包括學(xué)習(xí)率(lr)[18]、迭代次數(shù)(Epochs)[19]等。模型進(jìn)行訓(xùn)練的過程中,對比各個(gè)參數(shù)設(shè)置不同值的訓(xùn)練結(jié)果,得到最優(yōu)設(shè)置參數(shù)。
(1)在其他參數(shù)值相同的情況下,分別將學(xué)習(xí)率設(shè)置為0.1、0.01和0.001。當(dāng)學(xué)習(xí)率設(shè)置為0.1時(shí),ACC趨于80.45%收斂,ACC和LOSS的收斂效果均不理想;當(dāng)學(xué)習(xí)率設(shè)置為0.01時(shí),ACC趨于93.28%收斂,但LOSS的收斂效果不佳;當(dāng)學(xué)習(xí)率設(shè)置為0.001時(shí),LOSS趨向于0.1629 收斂,ACC趨向于93.14% 收斂且收斂效果好。不同學(xué)習(xí)率訓(xùn)練過程對比如圖7所示。
(a)學(xué)習(xí)率為0.1的訓(xùn)練過程
(b)學(xué)習(xí)率為0.01的訓(xùn)練過程
(c)學(xué)習(xí)率為0.001的訓(xùn)練過程
對比分析發(fā)現(xiàn),迭代次數(shù)為1 500時(shí),學(xué)習(xí)率為0.001的ACC值最高,收斂效果最好,模型的性能最好。不同學(xué)習(xí)率訓(xùn)練過程數(shù)據(jù)對比如表7所示。
表7 不同學(xué)習(xí)率訓(xùn)練過程對比Tab.7 Comparison of training process with different learning rates
(2)在其他參數(shù)值相同的情況下,分別將迭代次數(shù)設(shè)置為1 500、5 000和10 000。當(dāng)?shù)螖?shù)設(shè)置為10 000時(shí),ACC和LOSS的收斂效果均不理想;當(dāng)?shù)螖?shù)設(shè)置為5 000時(shí),ACC趨于96.38%收斂,但是LOSS的收斂效果不佳;當(dāng)?shù)螖?shù)設(shè)置為1 500時(shí),LOSS趨向于0.162 9收斂,ACC趨向于93.14%收斂。不同迭代次數(shù)訓(xùn)練過程對比如圖8所示。
(a)迭代次數(shù)為10 000的訓(xùn)練過程
(b)迭代次數(shù)為5 000的訓(xùn)練過程
綜合對比分析發(fā)現(xiàn),迭代次數(shù)設(shè)置為1 500時(shí)模型的性能最好。不同迭代次數(shù)訓(xùn)練過程數(shù)據(jù)對比如表8所示。
表8 不同迭代次數(shù)訓(xùn)練過程對比Tab.8 Comparison of training process with different iterations
綜合2個(gè)訓(xùn)練過程的對比,模型訓(xùn)練的主要參數(shù)學(xué)習(xí)率設(shè)為0.001,迭代次數(shù)設(shè)為1 500。
2.3.4 模型算法
本文的模型算法實(shí)現(xiàn)如下:
(1)模型搭建
model =tf.keras.Sequential([
tf.keras.layers.Dense(64, activation=‘relu’, input_shape=(9,)), # 9維數(shù)據(jù)
tf.keras.layers.Dense(64, activation=‘relu’), # 每層隱藏層64組神經(jīng)元
tf.keras.layers.Dense(1, activation=‘sigmoid’) # 激活函數(shù)
])
print(model.summary())
plot_model(model, to_file=‘model.png’)
(2)編譯與訓(xùn)練,本模型使用的損失函數(shù)是binary_crossentropy
model.compile(loss=‘binary_crossentropy’,
optimizer=keras.optimizers.
Adam(lr=0.001),
metrics=[‘a(chǎn)cc’]) # 設(shè)置學(xué)習(xí)率
history =model.fit(x_pca_data, y_data, epochs=1500) #設(shè)置迭代次數(shù)
hist =pd.DataFrame(history.history)
hist[‘epoch’] =history.epoch
(3)繪制損失函數(shù)和準(zhǔn)確率圖像
def plot_his(hist):
migtime = hist[‘loss’]
delay = hist[‘a(chǎn)cc’]
fig, ax =plt.subplots()
plt.xlabel(‘Epochs’)
plt.ylabel(‘ACC; LOSS’)
"""set interval for y label"""
yticks = range(10, 110, 10)
ax.set_yticks(yticks)
# """set min and max value for axes"""
#ax.set_ylim([10, 110])
#ax.set_xlim([58, 42])
x = hist["epoch"]
plt.plot(x, migtime, "-", label="ACC")
plt.plot(x, delay, "-", label="LOSS")
"""open the grid"""
plt.grid(True)
plt.legend(bbox_to_anchor=(1.0, 1), loc=1, borderaxespad=0.)
plt.show()
基于學(xué)生消費(fèi)數(shù)據(jù)的貧困生認(rèn)定模型訓(xùn)練過程如圖9所示。由圖9可以看出,隨著迭代次數(shù)的增長,模型訓(xùn)練LOSS和ACC均趨于平滑趨勢[20],當(dāng)?shù)螖?shù)超過1 500后,LOSS趨向于0.162 9收斂,ACC趨向于93.14%收斂。
圖9 貧困生認(rèn)定模型訓(xùn)練過程Fig.9 Training process of identification model for poverty students
隨機(jī)抽取20個(gè)測試集數(shù)據(jù)進(jìn)行測試,測試準(zhǔn)確率為90%,說明此模型的預(yù)測準(zhǔn)確率較高,將此模型應(yīng)用于貧困生判定,可以得到較為精準(zhǔn)的結(jié)果。預(yù)測過程示意如圖10所示。
圖10 預(yù)測過程示意Fig.10 Prediction process
教育扶貧工作進(jìn)入新階段,大數(shù)據(jù)、人工智能等新技術(shù)給新時(shí)期的高校資助工作帶來新的解決方案。本文利用智慧校園積累的海量學(xué)生數(shù)據(jù)和數(shù)據(jù)挖掘技術(shù),深度學(xué)習(xí)訓(xùn)練獲得的高校貧困生認(rèn)定模型,預(yù)測準(zhǔn)確度較高,為傳統(tǒng)的貧困生認(rèn)定方式提供了更為客觀的支撐和有效補(bǔ)充,對于實(shí)現(xiàn)高校的“精準(zhǔn)資助”和推進(jìn)高校的管理工作具有一定的研究意義。但由于條件和時(shí)間有限,本文僅從是否為貧困生的角度去訓(xùn)練輔助認(rèn)定模型,未考慮貧困生認(rèn)定等級分類問題,更為精準(zhǔn)的認(rèn)定模型仍有待后續(xù)探索和深入優(yōu)化研究。