王鳳芹 李 瑛 韓慶龍
(海軍航空大學(xué) 煙臺 264001)
隨著慕課課程的飛速發(fā)展,在線學(xué)習(xí)越來越普及,如何利用學(xué)生在線學(xué)習(xí)大數(shù)據(jù)進(jìn)行分析挖掘出有價值的信息成為當(dāng)前學(xué)習(xí)分析領(lǐng)域的一個研究熱點(diǎn)。Aparicio M和Bacao F在2013年信息系統(tǒng)與通信設(shè)計國際會議上闡述了在線教育的發(fā)展趨勢,未來在線教育必須要基于大數(shù)據(jù)分析來更好實現(xiàn)教育價值;陳池等人在文獻(xiàn)[2]中構(gòu)建了在線教育大數(shù)據(jù)模型;楊藝在文獻(xiàn)[3]中從宏觀上提出了大數(shù)據(jù)思維下基于教學(xué)活動流的分析模式。
對于慕課在線課程,教師希望通過學(xué)生在線學(xué)習(xí)活動數(shù)據(jù)和線下課堂學(xué)習(xí)表現(xiàn)預(yù)測其學(xué)成績,將預(yù)測結(jié)果及時反饋給學(xué)生,督促學(xué)生或者干預(yù)其較好地完成課程學(xué)習(xí)。為此,需要研究兩個方面的內(nèi)容:一是需要收集學(xué)生在線學(xué)習(xí)的哪些相關(guān)數(shù)據(jù),二是如何對這些數(shù)據(jù)進(jìn)行分析給出成績預(yù)測。
建立學(xué)生在線學(xué)習(xí)活動記錄表,該表的數(shù)據(jù)項包括:登錄次數(shù)、在線時間、視頻觀看時間、看帖數(shù)、發(fā)帖數(shù)、回帖數(shù)、在線測驗次數(shù)、每次在線測驗成績、作業(yè)提交次數(shù)、每次作業(yè)成績。各數(shù)據(jù)項的含義說明如表1所示。
表1 慕課在線學(xué)習(xí)數(shù)據(jù)項說明
學(xué)生線下采用翻轉(zhuǎn)課堂模式進(jìn)行教學(xué),針對學(xué)習(xí)情況建立記錄表,該表的數(shù)據(jù)項包括:回答問題次數(shù)、回答問題得分、小組討論表現(xiàn)得分、課堂測驗得分、月考測驗得分、期中考試得分、期末考試得分。各數(shù)據(jù)項的含義說明如表2所示。
表2 線下課堂表現(xiàn)數(shù)據(jù)項說明
課程最終評定成績由在線學(xué)習(xí)活動得分與線下課堂學(xué)習(xí)情況得分綜合評定。
學(xué)習(xí)成績預(yù)測模型流程圖如圖1所示。
整個模型主要包括數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析、結(jié)果反饋四個步驟。每個步驟主要工作內(nèi)容如表3所示。
圖1 學(xué)習(xí)成績預(yù)測模型流程圖
表3 學(xué)習(xí)成績預(yù)測模型步驟說明
k-近鄰算法通過計算未知類別點(diǎn)與已知類別點(diǎn)的距離,求出離未知類別點(diǎn)距離最近的k個點(diǎn),然后找出k個點(diǎn)歸屬類別最多的類別作為未知類別點(diǎn)的類別。其基本工作過程描述如下[4~5]。
輸入:已知類別數(shù)據(jù)所有點(diǎn)構(gòu)成的集合M,未知類別數(shù)據(jù)點(diǎn)A;
輸出:數(shù)據(jù)點(diǎn)A所屬類別;
計算步驟:
1)計算已知類別數(shù)據(jù)集合M中所有點(diǎn)與未知類別數(shù)據(jù)集合中某個點(diǎn)A的距離;
2)將集合M中所有點(diǎn)按照與點(diǎn)A的距離從小到大排序,排序后的點(diǎn)構(gòu)成新的序列記為N;
3)選取序列N中的前k個點(diǎn),計算此k個點(diǎn)的所屬類別出現(xiàn)頻率;
4)將k個點(diǎn)的所屬類別出現(xiàn)頻率最高的作為數(shù)據(jù)點(diǎn)A的類別。
從k-近鄰優(yōu)化算法的工作原理來看,影響其預(yù)測精度的有兩個因素:一是已知類別數(shù)據(jù)集合M的規(guī)模,規(guī)模越大預(yù)測精度相對越準(zhǔn)一些;二是k值的選取,k值選取不同預(yù)測結(jié)果可能也不同。在數(shù)據(jù)集合M已經(jīng)確定的情況下,應(yīng)選取多大的k值預(yù)測精度更高一些呢?接下來,采用遺傳算法來選取更合適的k值。
遺傳算法是借鑒自然界生物進(jìn)化規(guī)則的一種隨機(jī)搜索算法,它把問題參數(shù)k編碼為染色體,根據(jù)染色體的適應(yīng)度進(jìn)行選擇、交叉和變異運(yùn)算,最終生成符合優(yōu)化目標(biāo)的參數(shù)k值?;谶z傳算法的k-近鄰優(yōu)化算法的工作過程描述如下[6]。
輸入:已知類別數(shù)據(jù)所有點(diǎn)構(gòu)成的集合M;
輸出:使得k-近鄰優(yōu)化算法預(yù)測精度最佳的k值。
計算步驟:
1)初始種群。求出集合M的數(shù)據(jù)個數(shù)記為count,將count*1%取整后記為n,將整數(shù)1至n的n個整數(shù)采用二進(jìn)制編碼,得到初始染色體種群;
2)隨機(jī)選取集合M中90%的數(shù)據(jù)作為訓(xùn)練樣本,10%的數(shù)據(jù)作為測試樣本;
3)針對測試樣本,依據(jù)k-近鄰算法計算k值分別取1至n,n種情況下分類器的預(yù)測精度,并將預(yù)測精度按照從高到低的順序排列;
4)選擇。利用選擇算子通過隨機(jī)遍歷抽樣,選擇預(yù)測精度排在前面20%位置上的k值對應(yīng)染色體進(jìn)行復(fù)制;
5)交叉。選擇預(yù)測精度排在前面21%~30%位置上的k值利用最簡單的單點(diǎn)交叉算子進(jìn)行交叉;
6)變異。隨機(jī)選出預(yù)測精度排在前面31%~40%位置上的一個k值發(fā)生變異,由1變?yōu)?,0變?yōu)?,變異后的基因生成新的k值;
7)進(jìn)化。由4)、5)和6)構(gòu)成的k值得到新的種群,重復(fù)步驟2)至6),直到進(jìn)化代數(shù)達(dá)到100。
基于遺傳算法的k-近鄰優(yōu)化算法采用Python語言實現(xiàn)。Python是一種解釋型的、面向?qū)ο蟮?、交互式的高級程序設(shè)計語言。它注重如何解決問題,具有豐富的函數(shù)庫,便于進(jìn)行數(shù)據(jù)分析。
慕課平臺采集到的在線數(shù)據(jù)存儲在平臺數(shù)據(jù)庫,為了便于分析,將其導(dǎo)出到文本文件中作為算法輸入。借助numpy函數(shù)庫中的接口函數(shù)實現(xiàn)數(shù)據(jù)預(yù)處理。針對不同數(shù)據(jù)項的取值范圍差距較大問題,首先將同一年級學(xué)生每個數(shù)據(jù)項從高到低排序,每個數(shù)據(jù)項記錄其名次值,然后對名次數(shù)據(jù)進(jìn)行歸一化處理,將所有數(shù)據(jù)都轉(zhuǎn)換為[0,1]區(qū)間取值,采用式(1)計算。
其中,oldVe、newVe分別為歸一化之前、后的值,max為樣本最大值,min為樣本最小值。
k-近鄰算法中距離采用歐式距離,借助Python的數(shù)學(xué)計算模塊numpy簡化計算過程,其代碼實現(xiàn)如圖2所示。
圖2 k近鄰算法代碼實現(xiàn)
實驗選取計算機(jī)程序設(shè)計課程的1494名學(xué)員慕課平臺數(shù)據(jù)作為實驗樣本,其中747名學(xué)員數(shù)據(jù)作為訓(xùn)練樣本,166名學(xué)員數(shù)據(jù)作為測試樣本。k取值從1到15,計算每個k值下k近鄰算法的預(yù)測精度,計算結(jié)果如圖3所示,其中橫坐標(biāo)為k取值,縱坐標(biāo)為精度。從圖中可以看出,當(dāng)k取值5~8,預(yù)測精度最高,98%左右。
圖3 k值與預(yù)測精度數(shù)值關(guān)系圖
對于慕課課程,教師希望通過學(xué)生在線學(xué)習(xí)活動數(shù)據(jù)和課堂學(xué)習(xí)表現(xiàn)預(yù)測其學(xué)習(xí)成績,將預(yù)測結(jié)果及時反饋給學(xué)生,督促學(xué)生或者干預(yù)其較好地完成課程學(xué)習(xí)。為此,首先對在線數(shù)據(jù)和課堂學(xué)習(xí)表現(xiàn)數(shù)據(jù)進(jìn)行了數(shù)據(jù)建模,定義了各數(shù)據(jù)項;然后構(gòu)建了基于k-近鄰優(yōu)化算法的學(xué)習(xí)成績預(yù)測模型;并給出了k-近鄰優(yōu)化算法的原理和實現(xiàn)方法,并采用Python語言實現(xiàn)。根據(jù)結(jié)課學(xué)員數(shù)據(jù),預(yù)測在學(xué)學(xué)員的學(xué)習(xí)成績。實驗結(jié)果表明,利用遺傳法優(yōu)化后的k-近鄰算法進(jìn)行預(yù)測,可以使得預(yù)測精度更高。