顧偲雯 沈新逸 王加安 句愛松
(1.常州工學院光電工程學院,江蘇 常州 213032;2.大連理工大學化工學院,遼寧 大連 116024)
學生的學習成績是其對課程學習的掌握程度的一個重要體現,也是反映教師教學效果好壞的一個重要標準。 現今,隨著高校的擴招,高校內的師生數量與日俱增。 學校內部的數據庫已經積累了海量的數據,然而缺乏信息知識與技術,管理者往往無法在這大量的數據中提取到有用的信息[1]。 只能運用傳統的排序及統計功能取得一些表層的信息。 怎樣使用學生某一階段的成績提煉分析出有用的信息來提高之后的教學方案與學生成績有著至關重要的意義。
學生成績的評價的一般方式是將其粗略的劃分為優秀、良好、中等、及格與不及格等幾個等級[2]。 這種評價方式雖然簡單方便, 但卻存在著一些不合理性,比如有些課程的難度較高, 學生的普遍成績都不高,這時使用這種方法就很難在學生之中劃分出不同的群體。 如果可以把聚類分析實際應用于成績分析之中,就可以通過動態的分析得到比較準確合理的劃分結果[3,4]。
本文將k-means 聚類和層次聚類方法用作成績及其影響因素的分析,利用MATLAB 軟件實現聚類算法的實際應用,建立數據分析模型并對聚類結果進行評價,最后總結學生成績提高的途徑。
本文選取了本高校學生的高等數學上/下,大學英語上/下, 大學物理上/下, 計算機基礎與三門專業課(電工基礎、工程制圖、單片機原理)等共十門課程的學生成績作為樣本數據來進行分析。 每個班的學生成績均為百分制形式。
把來自不同數據源的數據集中到一起,以便后續的分析和處理。 主要是規范處理不同數據源中數據的詞義、名稱、結構等不同,以形成適合做聚類分析的樣本數據。 本文將三個班的學習成績集中整理成一張成績表。
另外,本文對采集的數據進行清洗,主要是要清除或補全樣本數據中的殘缺數據、錯誤數據、重復數據。 若有某學生的大部分成績為空白值,則不錄入該學生的所有數據信息,如果成績信息中出現單個空白值,則計算出平均成績進行填充。 部分原始數據經過處理后如表1 所示。

表1 預處理后的部分數據表—成績
此外,績點也是衡量一個學生學習質量的一個重要指標, 本文收集績點、 學生曠課數量 (包括晚自習)、補考課程數目等數據,經過篩選和整理后得出的結果用作聚類分析。 數據經過預處理后部分數據如表2 所示。

表2 預處理后的部分數據
高校舉行的各科目考試使學生的學習成效得以以數字的形式表現, 其不僅能反映出教師的教學水平,還可以使學生得知自己的優勢與不足之處,進而協助教師與學生及時發現問題并能得以改進。 然而目前的普遍方法是對學生成績做簡單的數據統計處理,這種方法雖然簡單,但不足之處是費時且費力,而且還不一定能得到有用的反饋信息。基于此,將k-means算法運用到學生的各科成績中分析各類學生的薄弱方面并提出改進方案,以及對可能影響學生成績的相關因素進行分析。
在k-means 聚類最優的k 值選取中常用的方法為“手肘法”。 手肘法的核心指標是SSE (Sum of the Squared Errors,誤差平方和)[5]:

其中,Ci是第i個簇,p是Ci中的樣本點,mi是的質心(Ci中所有樣本的均值),SSE是樣本數據聚類后的總誤差平方和,其值越小,聚類結果越好[7]。 當k等于5 時, 誤差平方和的下降趨勢開始逐漸變得緩慢,所以這點對應的就是肘部位置。
在MATLAB 軟件中對預處理后的數據集直接調用k-means 函數[8]并選擇聚類數為5 后得出聚類結果如表3 所示。

表3 成績聚類結果表
表內數據為每一類學生的平均成績,即分類后各類的聚類中心。 相應地,給出各類學生占比分布如圖1 所示,圖中用數字1、2、3、4 和5 來分別表示學生的類別。

圖1 學生分類數量占比圖
從表3 和圖1 的聚類結果中可知,分析各類學生課程成績中的優勢與弱勢學科可以幫助課程教師改進教學方案。 每類學生成績特征與解決方案如下:
第一類學生占比為33%,人數最多,除了英語成績稍低,其他課程成績都還不錯,可能是對英語的學習存在忽視或者偏科,這類學生需加強英語方面的學習,其他課程繼續保持即可。
第二類學生占比為15%,人數占比較小,但所有科目成績幾乎均在及格線左右, 此時就需要這類學生自我反思,是不是學習方法出現了問題,或者是上課并沒有認真聽講,沒有獨立完成作業,教師則要加強對這類學生的監督管理, 否則可能無法達到畢業要求。
第三類學生占比為24%,這類學生的所有課程成績都比較優秀,除了單片機原理及接口技術,其他成績均在80 分往上, 此類學生只需稍微加強單片機方面課程的學習, 在其他方面可適當減少一些學習時間,用于參加社會實踐,為踏入工作做準備,或者用于畢業升學所需要學習的課程上。
第四類學生占比為20%,此類學生大部分課程成績屬于中等偏下水平,尤其是高數和英語成績均處在及格邊緣, 可能是在前期的學習中基礎打得不夠扎實,需要增加在高數與英語方面的學習時間,尤其是高數,因為在后面需要學習的專業課程中大部分都需要有扎實的數學基礎。
第五類學生占比為8%, 此類學生的總體成績與第四類學生的成績相差不大, 大多處于中等偏下水平,唯一的區別在于單片機原理及接口技術這門課程上,這門課程的成績低于及格線十幾分,是所有學生中這門課程成績最差的一類,對于這一類學生,老師可以多加關注,給予鼓勵,并建議這類學生向專業課程學習的不錯的同學多多請教,改進自己在專業課上的學習方法,吸取經驗。
本文將分別使用層次聚類方法與k-means 聚類方法對數據集進行聚類分析, 為使聚類結果有可比性,兩種聚類方法都將聚類數目設置為三類。 結合圖像可更直觀的展示數據之間的聯系,也更方便用于對比,所以本文將運用MATLAB 軟件的plot 函數[9]將聚類結果使用三維圖像的方式展現出來, 并用imagesc函數[10]將聚類結果的相關程度表現在二維平面上以供對比。 得到k-means 方法聚類結果如圖2 所示,kmeans 聚類結果相關程度如圖3 所示。

圖2 k-means 方法聚類結果圖

圖3 k-means 聚類結果相關程度圖
同理得到層次聚類方法聚類結果如圖4 所示,層次聚類結果相關程度圖如圖5 所示,層次聚類法層次結構圖如圖6 所示。

圖4 層次聚類方法聚類結果

圖5 層次聚類結果相關程度圖

圖6 層次聚類法層次結構圖
分析上述結果可知,兩種聚類方法運行后的結果存在區別,但劃分后各類內的數據點大致相同。 由于在文內給出的三維視圖不能像在軟件中一樣自由轉動,所以將績點、學生曠課數與課程補考數投在二維平面上可以更加直觀地發現內在的聯系。 將績點從4.5 開始每間隔0.5 劃分一個等級,共劃分出A、B、C、D、E 五個等級,然后將所有數據導入MATLAB 軟件中運用plot 函數可得數據點分布如圖7 所示。

圖7 數據點分布圖
觀察圖7 可知, 數據點的聚集狀態與聚類三維結果圖相似, 績點高的數據點都聚集在圖片左下角,這意味著掛科數目與課程曠課數目越少,相對的學生的績點越高。 說明這三者之間確實存在一定的線性關系。 因此,校方可以從學生的曠課情況入手,進行更為嚴格的管理措施,同時也應讓學生意識到長期逃課的代價,做到警示的作用,讓學生可以將更多的時間用于學習上,以此來提高學習成績。
兩種聚類方法雖然都成功產生了聚類結果,但是對相同數據的聚類結果之間卻存在差異,說明兩種不同算法的聚類方法可能會對聚類結果產生不同的影響。 觀察圖3 可知,橫縱坐標是將數據矩陣按照大小順序排列,再把各數據點的距離大小使用不同的顏色標記出來,顏色相近的數據點就說明其比較相關。 所以理論上來說按照大小排序后的數據矩陣各段之間應該更有可能被聚為一類,但是k-means 聚類結果相關程度圖中的數據點之間的距離矩陣卻排列雜亂,沒有規則,左上角部分尤為明顯,說明聚類結果可能并不是很準確,而圖5 中則沒有出現這種情況,各部分間的距離矩陣數據都有規則可循,所以聚類結果比較準確。
學生成績是評價教學質量的重要依據,也是評價學生對所學知識掌握程度的重要標志。 目前,多數高校的師生數量都達到了幾萬甚至十幾萬的規模。 學校內部的數據庫已經積累了海量的數據,然而缺乏信息知識與技術,管理者往往無法在這大量的數據中提取到有用的信息,僅能運用傳統的排序及統計功能取得一些表層的信息。 在此背景下,本文采用k-means 聚類方法進行分析, 并對比了層次聚類與k-means 聚類,得出了以下結論:相比于成績評價的傳統方法,聚類算法應用于成績分析彌補了前者的不足,可以橫向對比各類學生的成績差異,而且可以更加準確定位到每一個學生, 將不同特征的學生成績劃分聚類后,能夠針對各類學生成績的特點重新規劃教學方案,為任課教師提供了改進教學策略的有利依據。 同時,其也能顯著減少資源的浪費和研究人員的精力投入,因為聚類算法能直接得出樣本中各類間的差異信息,不再需要人員來逐個分析每個樣本數據的特征信息,極大節約了社會資源。