何雪鋒
(四川信息職業(yè)技術(shù)學院 軟件學院,四川 廣元 628017)
軟件助理工程師(簡稱“軟助”)認證考試是某高校軟件專業(yè)大二學生必須參加的考試,獲取“軟助”證書也是畢業(yè)的基本條件之一。每一屆有300人左右參加考試,約40人不能拿到該證書。如果能根據(jù)學生大一的各科成績,提前預測可能掛科的學生,將更有利于提前為這些學生發(fā)出預警信息,也方便教師有針對性地進行指導,從而盡可能減少不及格的人數(shù),保證學生順利畢業(yè)。通過挖掘相關(guān)數(shù)據(jù),分析數(shù)據(jù)背后的運行規(guī)律,及時給學生發(fā)出警告,對課程的及格率、證書的通過率、學生的畢業(yè)率等均有積極地促進作用。
目前,已有專家、學者對學生的成績預警做出了相關(guān)努力和貢獻。樊一娜等人[1]選擇作業(yè)分數(shù)、提問回答、登錄次數(shù)、學習時長、課程資源訪問頻率五個因素作為依據(jù),通過構(gòu)建貝葉斯概率預測模型來預測未來學生成績的概率分布情況。賈靖怡等人[2]收集某門課程的17個指標數(shù)據(jù),構(gòu)建基于AdaBoost算法的MOOC學習者學習成績預測模型。劉愛萍[3]采用k平均和knn算法完成高校學生的預測模型。葉澤俊[4]采用基于C5.0算法的決策樹分類方法建立決策樹分類模型,對四級通過概率進行預測。張燕[5]提出一種基于樸素貝葉斯的英語成績預測模型,對英語四級考試成績進行預測。其他研究包括采用支持雙路注意力機制[6]、向量機[7-8]、決策樹[9-10]、降采樣的堆模型[11]、Logistic[12-13]、神經(jīng)網(wǎng)絡(luò)[14-15]、隨機森林[16]、XGBOOST[17]等算法構(gòu)建模型,完成分類預測。
上述研究成果的應(yīng)用已在成績預警方面取得了較好的表現(xiàn),但是仍然存在如下幾點不足。第一,很多研究在數(shù)據(jù)量較小的情況下,采用標準差的方式進行數(shù)據(jù)的標準化是不夠科學合理的。標準差標準化數(shù)據(jù)適合趨于正態(tài)分布的數(shù)據(jù),教育數(shù)據(jù)只有在數(shù)據(jù)量足夠大的時候,數(shù)據(jù)分布才接近于正態(tài)分布。第二,教育數(shù)據(jù)有一個顯著的特點,就是數(shù)據(jù)不平衡,不及格學生一般占比10%左右,而大部分機器學習算法都是基于數(shù)據(jù)基本平衡的前提,因此這樣會導致預測不夠準確。第三,部分研究通過單一機器學習構(gòu)建預測模型,缺乏模型的對比,以準確率為衡量標準,缺乏考慮數(shù)據(jù)的實際意義,需要根據(jù)正類預測為正類和負類預測為負類的混淆矩陣綜合進行判斷。第四,針對學生資格證書類考試預測的研究相對較少,沒有對軟件助理工程師考證掛科生分類的相關(guān)研究。
針對以上不足,本文收集了某高校軟件專業(yè)的學生成績,經(jīng)過清洗后,采用離差標準化數(shù)據(jù),通過SMOTE(Synthetic Minority Oversampling Technique)+Tomek Links算法對不平衡數(shù)據(jù)進行過采樣處理,并應(yīng)用XGBoost算法構(gòu)建成績模型,對學生進行分類預測,通過預測結(jié)果的準確率、回調(diào)率、精度、混淆矩陣進行模型評估。該方法在預測“軟助”不及格學生方面取得了較好的效果,對相關(guān)證書的通過率預測能起到積極的參考作用。
某高校某學院包括網(wǎng)絡(luò)、信安、軟件技術(shù)等專業(yè),“軟助”證書是軟件技術(shù)專業(yè)學生在大二上學期必須考取的證書,但是該學院學生在大一結(jié)束后,學院內(nèi)部會有大量的專業(yè)調(diào)整,為了較準確地預測“軟助”證書的掛科情況,本文選取了整個學院2018、2019級共24個班的學生第一學年的22門課程成績作為研究數(shù)據(jù),從教務(wù)處獲得2018、2019級的“軟助”證書的考試分數(shù)表,其中兩屆軟件技術(shù)專業(yè)學生共515人參加考試。
數(shù)據(jù)預處理的合理與否在一定程度上決定了最終數(shù)據(jù)預測的上限值,再好的模型都只是在無限地接近這個上限值,因此數(shù)據(jù)的預處理是開始構(gòu)建模型之前較為重要的環(huán)節(jié)。
1.2.1 數(shù)據(jù)清洗
清洗數(shù)據(jù)是建模的必要步驟,只有干凈、有效的數(shù)據(jù)才能發(fā)揮較好的作用。針對學生成績數(shù)據(jù),數(shù)據(jù)清洗主要包括字段的統(tǒng)一、空值的處理、數(shù)據(jù)的合并、無意義數(shù)據(jù)的刪除等,具體如下:
重命名列名:每個班的成績是一個excel表,導致某一門課在不同班級命名不一致。
空值處理:部分字段存在缺失值,例如英語、高數(shù)、體育大一上學期存在少部分空值,通過填充大一下學期對應(yīng)學科的成績來處理。其他課程少部分數(shù)據(jù)缺失,通過填充該門課程的均值來處理。
合并數(shù)據(jù):把22門課程的成績數(shù)據(jù)與“軟助”考試的成績合并成一個文檔。
刪除處理:有少部分外學院轉(zhuǎn)入的學生,缺少多門專業(yè)基礎(chǔ)課程,為了避免干擾模型的訓練,通過刪除處理該數(shù)據(jù)。
1.2.2 確定特征
通過分析數(shù)據(jù),英語、高數(shù)、體育在大一上下學期的分數(shù)高度相關(guān),因此這三門課大一上下學期分別合并成一個字段,并以上下學期的均值填充。軍事訓練、軍事理論、形式與政策等八門課程的學生成績幾乎一樣,無明顯差距,這種數(shù)據(jù)對建模毫無意義,進行刪除處理。最終得到13個指標(其中第一個字段score取值為True表示“軟助”成績及格,后面的字段是相關(guān)課程的成績)、505條學生成績的源數(shù)據(jù),如圖1所示。
圖1 確定特征后的數(shù)據(jù)源
1.2.3 標準化處理
常用的數(shù)據(jù)標準化方法有三種:第一是標準差標準化數(shù)據(jù),該方法非常適合數(shù)據(jù)在整體上趨向于正態(tài)分布的情況;第二是離差標準化,該方法適合數(shù)據(jù)在一定范圍內(nèi)分布的情況;第三是四分位距標準化,該方法適合數(shù)據(jù)集中包含多個異常值,此時使用標準差、離差等方法會有較大的誤差。限于數(shù)據(jù)集的數(shù)量不夠大,不符合正太的分布,但是所有字段值都集中在一定范圍內(nèi),因此本文采用離差標準化方法標準化數(shù)據(jù)。
其中,xrc是學生成績的原始數(shù)據(jù)(r表示樣本行,c表示特征列),xmin是第c個特征的最小值,xmax是第c個特征的最大值,是歸一化后的數(shù)據(jù)。
1.2.4 不平衡處理
解決不平衡的數(shù)據(jù),通常會使用過采樣的方法達到正反數(shù)據(jù)的平衡,其方法包括隨機過程采樣、SMOTE方法、SMOTE+Tomek Links的綜合采樣。過采樣之后,結(jié)合決策樹算法,對比不同采樣后構(gòu)建模型的效果,如表1所示。
表1 采用后的效果對比
從表1可以看出,未經(jīng)過處理的不平衡數(shù)據(jù),效果較差,相對而言,SMOTE+Tomek Links的綜合采樣效果較好,文中采用SMOTE+Tomek Links綜合采樣的方法處理不平衡數(shù)據(jù)。
本文采用XGBoost模型來預測“軟助”證書的掛科生,XGBoost是Gradient Boosting算法的一個優(yōu)化版本,通過正則化項防止過擬合,標準GBM(Gradient Boosting Machine)的實現(xiàn)沒有像XGBoost這樣的正則化步驟。GBM采用貪心算法進行剪枝,遇到負損值就會停下,而XGBoost在減枝的時候即便遇到負損值也會繼續(xù)分裂,以最大深度為限制,最后才返回進行剪枝,從而得到綜合評價最好的結(jié)構(gòu)樹。
XGBoost模型的優(yōu)化目標函數(shù):
其中,(lyi,)表示當前模型的預測值與真實值的殘差,f(txi)表示新增的樹的優(yōu)化值,Ω(ft)表示正則化懲罰項。該模型就是需要找到f(txi)使得目標函數(shù)最優(yōu)。為了方便計算,使用泰勒展開公式來近似地表達上述目標函數(shù)。
泰勒展開公式:
其中,遍歷x相當于目標函數(shù)的yi,△x相當于目標函數(shù)的ft(xi)。
定義:
將目標函數(shù)按照泰勒公式展開:
式(6)中,T表示葉子的個數(shù),i表示學生樣本,j表示葉子節(jié)點,因此上式是把對所有學生樣本的遍歷,轉(zhuǎn)換成對所有葉子節(jié)點的遍歷。因葉子節(jié)點包含了所有的樣本,因此兩個的遍歷是等價的。
定義:
因此,目標函數(shù)被簡化為:
如何讓上述目標函數(shù)的取值最小,即通過計算變量wj,使得目標函數(shù)的值最小。只有當該函數(shù)對wj的偏導為0時,獲得最優(yōu)解。
對w求偏導數(shù):
最終目標函數(shù)被簡化為:
可以認為Obj代表樹的結(jié)構(gòu)分值,其取值越小,代表該樹的結(jié)構(gòu)越好。因此在構(gòu)建最優(yōu)樹的過程中,依據(jù)上述目標函數(shù)進行增益值的判斷:
基于處理后的數(shù)據(jù)集,采用10折交叉驗證和網(wǎng)格搜索的形式,分別采用決策樹、邏輯斯蒂回歸、隨機森林、XGBoost構(gòu)造了四種“軟助”預測模型,通過分析準確率(accuracy)、召回率(recall)、精度(precision)以及混淆矩陣4個指標,對“軟助”證書掛科生分類預測模型進行全面評估,其中四種模型的預測結(jié)果如表2所示。
表2 四種模型的預測結(jié)果
由表2可以看出,隨機森林和XGBoost構(gòu)建的預測模型效果最佳,為了進一步選出在“軟助”證書掛科生分類預測中最好的模型,我們進一步通過混淆矩陣來判斷兩個模型的好壞。
混淆矩陣如表3所示。
表3 混淆矩陣
混淆矩陣的基本概念如下:
(1)False Negative(假負):表示把未通過“軟助”的學生預測為未通過。
(2)False Positive(FP)(假正):表示把未通過“軟助”的學生預測為通過。
(3)True Positive(真正):表示把通過“軟助”的學生預測為通過。
(4)True Negative(真負):表示把通過“軟助”的學生預測為未通過。
隨機森林和XGBoost的混淆矩陣如表4所示。
表4 隨機森林和XGBoost的混淆矩陣
從表4中可以看出,數(shù)據(jù)源的20%測試集中,共89個未通過的學生,85個通過的學生,隨機森林構(gòu)建的預測模型,正確預測未通過的學生是83個,而XGBoost構(gòu)建的預測模型,正確預測未通過的學生是87個。在兩個模型的準確率、召回率、精度基本相當?shù)那疤嵯拢枰x擇能更多地預測出可能掛科的學生的模型,其中有兩個原因,其一,作為考前輔導,應(yīng)該盡可能把容易掛科的學生找出來進行輔導;其二,每一年批改試卷的教師不同,有的教師批改較松,會把接近及格的成績給成及格,因而誤將部分通過的學生預測為未通過是較合理的。綜上所述,XGBoost構(gòu)建的“軟助”證書掛科生分類預測具有最佳的效果。
本文針對某高校軟件專業(yè)部分學生無法一次性通過“軟助”考證的現(xiàn)狀,通過采集2018-2019級兩屆學生大一上下學期22門課程的所有成績,結(jié)合離差標準化、SMOTE+Tomek Links過采樣、XGBoost(Extreme Gradient Boosting)算法等,構(gòu)建了“軟助”掛科生分類預測模型。該方法在“軟助”掛科生預測中取得了較理想的效果,準確率達到了90.6%,并能最大限度地找出容易掛科的學生。該實驗證明,采用XGBoost算法構(gòu)建的模型比其他算法構(gòu)建的模型效果更好,對預測可能掛科的學生提前預警,教師有針對性地進行指導具有非常重要的指導意義,進而保證了該證書的通過率。另外,該方法對其他證書的通過率、掛科生分類預測等也具有一定的參考意義。