王鳳芹 李 瑛 韓慶龍
(海軍航空大學 煙臺 264001)
隨著慕課課程的飛速發展,在線學習越來越普及,如何利用學生在線學習大數據進行分析挖掘出有價值的信息成為當前學習分析領域的一個研究熱點。Aparicio M和Bacao F在2013年信息系統與通信設計國際會議上闡述了在線教育的發展趨勢,未來在線教育必須要基于大數據分析來更好實現教育價值;陳池等人在文獻[2]中構建了在線教育大數據模型;楊藝在文獻[3]中從宏觀上提出了大數據思維下基于教學活動流的分析模式。
對于慕課在線課程,教師希望通過學生在線學習活動數據和線下課堂學習表現預測其學成績,將預測結果及時反饋給學生,督促學生或者干預其較好地完成課程學習。為此,需要研究兩個方面的內容:一是需要收集學生在線學習的哪些相關數據,二是如何對這些數據進行分析給出成績預測。
建立學生在線學習活動記錄表,該表的數據項包括:登錄次數、在線時間、視頻觀看時間、看帖數、發帖數、回帖數、在線測驗次數、每次在線測驗成績、作業提交次數、每次作業成績。各數據項的含義說明如表1所示。

表1 慕課在線學習數據項說明
學生線下采用翻轉課堂模式進行教學,針對學習情況建立記錄表,該表的數據項包括:回答問題次數、回答問題得分、小組討論表現得分、課堂測驗得分、月考測驗得分、期中考試得分、期末考試得分。各數據項的含義說明如表2所示。

表2 線下課堂表現數據項說明
課程最終評定成績由在線學習活動得分與線下課堂學習情況得分綜合評定。
學習成績預測模型流程圖如圖1所示。
整個模型主要包括數據采集、數據預處理、數據分析、結果反饋四個步驟。每個步驟主要工作內容如表3所示。

圖1 學習成績預測模型流程圖

表3 學習成績預測模型步驟說明
k-近鄰算法通過計算未知類別點與已知類別點的距離,求出離未知類別點距離最近的k個點,然后找出k個點歸屬類別最多的類別作為未知類別點的類別。其基本工作過程描述如下[4~5]。
輸入:已知類別數據所有點構成的集合M,未知類別數據點A;
輸出:數據點A所屬類別;
計算步驟:
1)計算已知類別數據集合M中所有點與未知類別數據集合中某個點A的距離;
2)將集合M中所有點按照與點A的距離從小到大排序,排序后的點構成新的序列記為N;
3)選取序列N中的前k個點,計算此k個點的所屬類別出現頻率;
4)將k個點的所屬類別出現頻率最高的作為數據點A的類別。
從k-近鄰優化算法的工作原理來看,影響其預測精度的有兩個因素:一是已知類別數據集合M的規模,規模越大預測精度相對越準一些;二是k值的選取,k值選取不同預測結果可能也不同。在數據集合M已經確定的情況下,應選取多大的k值預測精度更高一些呢?接下來,采用遺傳算法來選取更合適的k值。
遺傳算法是借鑒自然界生物進化規則的一種隨機搜索算法,它把問題參數k編碼為染色體,根據染色體的適應度進行選擇、交叉和變異運算,最終生成符合優化目標的參數k值。基于遺傳算法的k-近鄰優化算法的工作過程描述如下[6]。
輸入:已知類別數據所有點構成的集合M;
輸出:使得k-近鄰優化算法預測精度最佳的k值。
計算步驟:
1)初始種群。求出集合M的數據個數記為count,將count*1%取整后記為n,將整數1至n的n個整數采用二進制編碼,得到初始染色體種群;
2)隨機選取集合M中90%的數據作為訓練樣本,10%的數據作為測試樣本;
3)針對測試樣本,依據k-近鄰算法計算k值分別取1至n,n種情況下分類器的預測精度,并將預測精度按照從高到低的順序排列;
4)選擇。利用選擇算子通過隨機遍歷抽樣,選擇預測精度排在前面20%位置上的k值對應染色體進行復制;
5)交叉。選擇預測精度排在前面21%~30%位置上的k值利用最簡單的單點交叉算子進行交叉;
6)變異。隨機選出預測精度排在前面31%~40%位置上的一個k值發生變異,由1變為0,0變為1,變異后的基因生成新的k值;
7)進化。由4)、5)和6)構成的k值得到新的種群,重復步驟2)至6),直到進化代數達到100。
基于遺傳算法的k-近鄰優化算法采用Python語言實現。Python是一種解釋型的、面向對象的、交互式的高級程序設計語言。它注重如何解決問題,具有豐富的函數庫,便于進行數據分析。
慕課平臺采集到的在線數據存儲在平臺數據庫,為了便于分析,將其導出到文本文件中作為算法輸入。借助numpy函數庫中的接口函數實現數據預處理。針對不同數據項的取值范圍差距較大問題,首先將同一年級學生每個數據項從高到低排序,每個數據項記錄其名次值,然后對名次數據進行歸一化處理,將所有數據都轉換為[0,1]區間取值,采用式(1)計算。

其中,oldVe、newVe分別為歸一化之前、后的值,max為樣本最大值,min為樣本最小值。
k-近鄰算法中距離采用歐式距離,借助Python的數學計算模塊numpy簡化計算過程,其代碼實現如圖2所示。

圖2 k近鄰算法代碼實現
實驗選取計算機程序設計課程的1494名學員慕課平臺數據作為實驗樣本,其中747名學員數據作為訓練樣本,166名學員數據作為測試樣本。k取值從1到15,計算每個k值下k近鄰算法的預測精度,計算結果如圖3所示,其中橫坐標為k取值,縱坐標為精度。從圖中可以看出,當k取值5~8,預測精度最高,98%左右。

圖3 k值與預測精度數值關系圖
對于慕課課程,教師希望通過學生在線學習活動數據和課堂學習表現預測其學習成績,將預測結果及時反饋給學生,督促學生或者干預其較好地完成課程學習。為此,首先對在線數據和課堂學習表現數據進行了數據建模,定義了各數據項;然后構建了基于k-近鄰優化算法的學習成績預測模型;并給出了k-近鄰優化算法的原理和實現方法,并采用Python語言實現。根據結課學員數據,預測在學學員的學習成績。實驗結果表明,利用遺傳法優化后的k-近鄰算法進行預測,可以使得預測精度更高。