崔佳杉 年 梅 張 俊,2
(1.新疆師范大學計算機科學技術學院 烏魯木齊 830054)(2.中國科學院新疆理化技術研究所 烏魯木齊 830011)
學業成績預測是幫助學生規避學業風險的重要手段。在高校教學中,學生課程成績是衡量學生知識掌握程度和教師教學結果的重要尺度,對學生學業成績進行預測,能夠為學生提供課程提供指引,幫助學生規避學業風險[1~4]。但是學?,F有教務管理系統無法有效實現學業預警等功能,這也限制了新一輪人才培養方案的調整與制定。針對以上問題,本文提出一種基于XGBoost 回歸算法的學業成績預警模型。XGBoost 作為開源機器學習項目,高效地實現了GBDT 算法并進行了改進,將之運用到學業成績預警上具有很重要的理論意義。
隨著學分制改革的發展,基于學分制改革思維基礎上的全過程教務管理系統應該能夠滿足學生選課、學分查詢及學業預警、個性化人才培養方案訂制。王斌等[5]使用Pearson 相關系數、隨機森林算法和Apriori 算法,評價學生不及格的狀態,建立預警規則,但是通過分類特征預測出學生不及格準確率情況有待提高。劉麗娟等[6]基于隨機森林算法構建學生學業預警預測模型,但在預測結果中只有“被預警”和“不被預警”兩類,一定程度上限制了研究結論的應用范圍。劉姣等[7]利用模糊決策樹算法確定了模型屬性指標,通過改進決策樹算法和建立模糊矩陣對學生學業成績進行分析,但是并未對模糊決策樹模型進行實驗精度的準確評估。喻鐵朔等[8]在SVR 回歸在成績預測預警中的應用研究中,在微觀經濟學和數理統計課程的預測正確率分別為15.79%和96.87%,正確率差異十分明顯,但相應的成績和學業預警能滿足部分教學管理和改善學生學業的需求。Kotsiantis等[9]應用了幾種DM算法來根據大學遠程學習計劃預測計算機科學專業學生的表現,對于每個學生,將幾個人口統計學(例如性別、年齡、婚姻狀況)和表現屬性(例如給定作業中的分數)用作二進制合格/不合格分類器的輸入,通過樸素貝葉斯方法獲得準確度為74%,準確率有待進一步提高。
2.1.1 梯度提升數(GBDT)
XGBoost 本質上是一個GBDT,屬于boosting 方法。2001 年Friedman 等提出一種通過迭代產生的決策樹算法,即梯度提升樹(GBDT)。該算法由多棵決策樹組合而成,最終預測結果是把所有決策樹得出的結論相加[10~11]。利用傳統的回歸決策樹進行訓練,得到圖1所示結果。

圖1 傳統回歸決策樹
利用GBDT 方法進行訓練時,得到圖2 所示結果。

圖2 GBDT模型
第一棵樹分枝中的結果與圖1 一樣,由于A 和B的年齡差距不大,C和D 年齡相差也不大,因此將平均年齡作為預測值被分為兩類。計算殘差時,需要用實際值減去預測值,此時A 的殘差為15-16=-1,B 的殘差為1,C 的殘差為-1,D 的殘差為1。在下一棵樹的學習中,ABCD 的原值用殘差代替,若預測值=殘差,則需要把結果累加。第二棵樹上被分成兩個節點的1 和-1,此時殘差結果為0,即預測值真實。
2.1.2 XGBoost算法原理
XGBoost 是在GBDT 的基礎上進行改進,引入了樹模型的復雜度,避免過擬合,在學習效果和訓練速度上有很大提高。其核心算法思想為:利用每次特征分裂后的樹去擬合預測殘差,最后該樣本的預測值為每棵樹對應的樣本特征相加。
XGBoost的實現過程:
設xgboost模型的第t輪的目標函數為公式:

l為第t 輪的損失項,Ω為模型中決策樹的正則項,即:

根據泰勒展開公式得到,得到最優系數和目標函數最優值:

1)SSE(和方差)
該參數計算的是擬合數據和原始數據對應點的誤差的平方和[12],計算公式為

其中yi是真實數據是擬合的數據,wi>0。數據預測結果的準確性與SSE 的值相關,模型的擬合程度越好時,其SSE值越接近0。
2)MSE(均方誤差)
該參數是預測數據和原始數據對應點誤差的平方和的均值,也就是[13],計算公式為

其中n為樣本的個數。
3)MAE(平均絕對值誤差)
為了更好地反映預測誤差的情況,引入絕對誤差平均值的概念。

其中,fi表示預測值,gi表示真實值。
4)擬合優度(GOF)
回歸直線對觀測值的擬合程度稱為擬合優度(Goodness of Fit)??蓻Q系數(也叫作確定系數)r2是度量擬合優度的統計量[14~16]。r2的取值范圍是[0,1]。r2的值越接近1,說明回歸直線對觀測值的擬合程度越好;反之r2的值越接近0,說明回歸直線對觀測值的擬合程度越差。
設y為待擬合數值,其均值為,擬合值為,記為
總平方和:

回歸平方和:

則有:

得到決定系數:

實驗數據集,采用UCI 公開的數據集:Student Performance Data Set[7]。該數據包括了兩所葡萄牙中學學校的學生學業成績情況。數據屬性包括學生成績,學習時間,家庭人員受教育程度,課外學習時間,身體健康等相關特征。數據集中G1 和G2 分別對應第1 階段成績和第2 階段成績,G3 的成績是在第3階段發布,所以G3與G2和G1之間具有很強的相關性。
使用XGBoost 算法時,要進行稀疏數據的處理。XGBoost 模型內部建模成一個回歸預測問題,要將輸入數據轉化為數值型。數據處理過程中要將string 類型的列放到list 中,建立字典,將類別轉化成對應的序號。
在python3.7 中導入相關的庫,然后導入數據集用做模型訓練和預測,并在訓練集和測試集中隨機選擇80%的數據量作為訓練集數據,測試集為20%,訓練集與測試集的比例為4∶1。利用xgboost.XGBRegressor 建立XGB 模型,其中,葉子節點是最大深度的10 倍,模型結果顯示訓練的回歸指標為99.9%。
基于mat 數據集中的396 個訓練數據,采用XGBoost 算法建立的學生成績預警模型,準確率達到了85.8%,如表1 所示。采用por 數據集中的650個數據樣本,準確率也達到了83.2%,如表2 所示,因此該模型是有效的。

表1 mat數據集下的實驗預測結果

表2 por數據集下的實驗結果
由預測模型表明,學生成績表現與一些其他因素相關,例如,與學校相關(例如缺勤人數,額外教育資助等),受眾特征(例如,學生的年齡,父母的工作和受教育程度等。)基于XGBoost 算法的學生學業成績預警模型,因其不錯的學習效果和訓練速度,應用教育數據挖掘,有很好的理論意義。
采集計算機科學技術學院本科生2018 學年~2019 學年上下學期學生學習狀態信息,包括學生考勤、學生作業、上學期期末成績、下學期期末成績。數據預處理的過程中,剔除空白數據和無效數據,將數據集保存成csv 格式,同樣是在二進制/五級分類和回歸任務下建模,如表3 所示。學生成績數據集包含458 條有效數據,訓練集與測試集的數據分別為368條和92條。

表3 學生成績分類等級
對于表4 的預測結果進行分析,使用XGBoost算法模型進行實際應用,準確率達到75.2%。通過對學生學業成績的預測結果分析,可以得出,作業差的學生成績預測結果較差,考勤成績較好的同學對期末成績影響不大。

表4 模型應用結果
文章講述了XGBoost 算法的基本理論,采用XGBoost 算法回歸模型對學生學業成績預警問題進行了分析。通過公開樣本數據集對算法模型進行學業成績預測分析,準確率可以達到85.8%。結合相關文獻中的實驗結論,可以看出XGBoost 相較于傳統的機器學習方法有更好的分類效果。在實際應用中,使用XGBoost 算法模型進行學院學生的成績預測,實驗準確率達到了75.2%,為學生的學業預警提供了理論依據。