蔡朝暉,王嘉鑫
(大慶師范學(xué)院 計(jì)算機(jī)科學(xué)與信息技術(shù)學(xué)院,黑龍江 大慶 163712)
“學(xué)業(yè)預(yù)警”一詞于2007年8月由教育部公布為171個(gè)漢語(yǔ)新詞之一,經(jīng)過十幾年的研究發(fā)展,學(xué)業(yè)預(yù)警機(jī)制在高校教學(xué)管理體系中日趨完善。與此同時(shí),隨著大數(shù)據(jù)應(yīng)用技術(shù)的發(fā)展,越來(lái)越多的學(xué)業(yè)預(yù)警系統(tǒng)中融入了數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)技術(shù),這使得學(xué)業(yè)預(yù)警更具智能化和個(gè)性化特點(diǎn),即在以學(xué)生發(fā)展為中心的理念下,加強(qiáng)分級(jí)和個(gè)性化指導(dǎo)。(1)參見百度百科:《學(xué)業(yè)預(yù)警》,2007年8月,https://baike.baidu.com/item/學(xué)業(yè)預(yù)警/6874109,2021年9月23日。結(jié)合機(jī)器學(xué)習(xí)的學(xué)業(yè)預(yù)警方法研究中,主要基于兩類數(shù)據(jù):一類是基于成績(jī)或?qū)W分的,一類是基于行為分析的。
本文依據(jù)某校人才培養(yǎng)方案,以計(jì)算機(jī)類相關(guān)專業(yè)為例,在前期的個(gè)性化學(xué)業(yè)預(yù)警方法研究基礎(chǔ)上,重點(diǎn)對(duì)通識(shí)教育的學(xué)業(yè)警示方法進(jìn)行探討,深入研究通識(shí)課程選修的推薦模型,以期達(dá)到“先防范再警示”的目的。
我國(guó)內(nèi)地的大學(xué)通識(shí)教育,發(fā)展于20世紀(jì)90年代原國(guó)家教委倡導(dǎo)的大學(xué)生文化素質(zhì)教育試點(diǎn)。(2)參見姚震宇:《我國(guó)內(nèi)地大學(xué)通識(shí)教育改革評(píng)析》,《高教論壇》2019年第7期。到2015年后通識(shí)教育改革得到官方承認(rèn)并在更多大學(xué)發(fā)展深化,中國(guó)大學(xué)通識(shí)教育改革經(jīng)歷了從模仿借鑒到獨(dú)立生成的發(fā)展過程。(3)參見陸一、楊曈:《高教大眾化視野下中國(guó)大學(xué)通識(shí)教育發(fā)展的理論分析》,《清華大學(xué)教育研究》2020年第4期。
目前,某校各學(xué)科的人才培養(yǎng)方案中,文科和理工科對(duì)通識(shí)課程修得的學(xué)分比例要求整體上大致相同,要求至少修得6個(gè)學(xué)分,其中:1學(xué)分藝術(shù)、2學(xué)分文學(xué)、3學(xué)分自然。
由于通識(shí)課程分散到各個(gè)學(xué)期,以選修為主,且對(duì)修得學(xué)分的課程分類要求嚴(yán)格,因此,早期總有對(duì)要求了解不充分的學(xué)生,因有遺漏而匆忙補(bǔ)修,甚至影響畢業(yè);后期隨著警示系統(tǒng)的完善,類似情況雖然有所改善,但從學(xué)生角度出發(fā)的選課過程和形式還是不夠直接和個(gè)性化。所以,通識(shí)課程推薦功能的設(shè)計(jì),最直接的作用便是使得學(xué)生選課更具個(gè)性化,提高選課效率,進(jìn)一步防范多選、錯(cuò)選或漏選的情況發(fā)生。
協(xié)同過濾算法(Collaborative Filtering)是近些年最為流行的推薦系統(tǒng)所應(yīng)用的算法,其應(yīng)用于學(xué)業(yè)預(yù)警的研究較少。此算法最早應(yīng)用于電子商務(wù),常用的有兩種推薦形式:基于用戶的協(xié)同過濾(UserCF)和基于物品的協(xié)同過濾(ItemCF)。
個(gè)性化推薦系統(tǒng),其數(shù)據(jù)模型的標(biāo)準(zhǔn)結(jié)構(gòu)格式為:用戶id、產(chǎn)品id、評(píng)分,即使用推薦系統(tǒng)的數(shù)據(jù)集至少包括以上三列數(shù)據(jù)。
說(shuō)明:機(jī)器學(xué)習(xí)的協(xié)同過濾推薦算法是通過觀察所有用戶給產(chǎn)品的評(píng)分來(lái)推斷每個(gè)用戶的喜好,并向用戶推薦合適的產(chǎn)品。
缺點(diǎn):此模型中的用戶數(shù)據(jù)因具有個(gè)人屬性,屬于隱私數(shù)據(jù),基于隱私權(quán)限的原因,大多的推薦模型實(shí)際應(yīng)用中,很難搜集到正確的個(gè)人屬性數(shù)據(jù),同時(shí)相同屬性的用戶未必會(huì)有相同的喜好,所以無(wú)法真正做到個(gè)性化推薦。(4)參見林大貴:《Python+Spark2.0+Hadoop機(jī)器學(xué)習(xí)與大數(shù)據(jù)實(shí)戰(zhàn)》,北京:清華大學(xué)出版社,2018年,第282—283頁(yè)。
圖1 基于用戶(學(xué)生)的過濾
依照上述標(biāo)準(zhǔn)模型,設(shè)計(jì)了課程推薦數(shù)據(jù)模型學(xué)號(hào)、課程編號(hào)、學(xué)分,使用學(xué)號(hào)標(biāo)識(shí)學(xué)生、課程編號(hào)標(biāo)識(shí)課程,學(xué)生個(gè)體與所選修課程的聯(lián)系是多對(duì)多的。
學(xué)分代表了學(xué)生所選修課程的直接屬性,從選課角度考慮,學(xué)分越高表示此課程被選的可能性越大,所以從一定程度上可以代表學(xué)生對(duì)課程的喜愛程度。由于通識(shí)課程的學(xué)分分值通常都不超過2學(xué)分,且多為1學(xué)分,此外學(xué)生選課還常常受到線下課程資源及上課人數(shù)等客觀因素限制,所以即使是按喜愛程度推薦,學(xué)生也不一定能“搶”得上。相對(duì)地,線上的課程資源往往沒有人數(shù)限制,但其評(píng)分?jǐn)?shù)據(jù)的獲得仍然存在著一定的難度,所以“學(xué)分”依然被放在此模型中對(duì)應(yīng)了標(biāo)準(zhǔn)模型中的“評(píng)分”。
用協(xié)同過濾算法來(lái)分析和解釋課程推薦模型的預(yù)期效果,如圖1所示。
學(xué)生1選過課程1、2、4,學(xué)生2選過1、4,此時(shí)向?qū)W生2推薦課程2的做法,便是基于用戶的協(xié)同過濾法。而基于商品的協(xié)同過濾則是利用用戶評(píng)價(jià)的相似性推薦商品,對(duì)課程推薦模型則解釋為:學(xué)生1與學(xué)生2都選修了課程1和4,那么此時(shí)便認(rèn)為,學(xué)生3也會(huì)選課程1和4。
學(xué)生成績(jī)數(shù)據(jù)為某校教務(wù)系統(tǒng)教學(xué)秘書權(quán)限下的導(dǎo)出數(shù)據(jù),文件類型為.xls,可以直接用做關(guān)系模型的結(jié)構(gòu)化數(shù)據(jù),或者轉(zhuǎn)換為.csv類型的結(jié)構(gòu)化數(shù)據(jù)使用。目前使用的數(shù)據(jù)來(lái)自三個(gè)表,其中2013級(jí)25466行,2014級(jí)18903行,2015級(jí)18254行,為計(jì)算機(jī)科學(xué)與信息技術(shù)學(xué)院三屆學(xué)生的大學(xué)4年所修課程成績(jī)?nèi)珨?shù)據(jù)。全部列名分別是:學(xué)號(hào)、姓名、學(xué)制、開課學(xué)期、上課院系、培養(yǎng)層次、班級(jí)名稱、課程編號(hào)、課程名稱、總成績(jī)、成績(jī)標(biāo)志、課程性質(zhì)、課程屬性、學(xué)時(shí)、學(xué)分、開課單位、錄入人、考試性質(zhì)、補(bǔ)重學(xué)期、學(xué)位課程、輔修課程、備注,共22列。
學(xué)生成績(jī)數(shù)據(jù)的一般性特點(diǎn):①本科學(xué)制四年,畢業(yè)修得學(xué)分分布在8個(gè)學(xué)期;②通識(shí)課程主要包括通識(shí)必修課程和通識(shí)選修課程兩部分,通識(shí)必修課程學(xué)分分布在1~4學(xué)期,通識(shí)選修課學(xué)分分布在2~7學(xué)期。
目前,某校通識(shí)課的課程來(lái)源主要是兩部分:校內(nèi)教師開設(shè)和慕課平臺(tái)提供。
學(xué)業(yè)警示系統(tǒng)包括兩大功能模塊:基于學(xué)分統(tǒng)計(jì)的學(xué)業(yè)警示模塊和基于通識(shí)課的課程選修推薦模塊,后臺(tái)數(shù)據(jù)圍繞這兩個(gè)模塊進(jìn)行數(shù)據(jù)模型設(shè)計(jì)。
數(shù)據(jù)預(yù)處理大致有4個(gè)過程生成了4個(gè)工作表:①合并三個(gè).xls文件作為學(xué)生成績(jī)?cè)磾?shù)據(jù)(score_source.sheet),表中數(shù)據(jù)可以用學(xué)號(hào)前4位進(jìn)行學(xué)生所在年級(jí)標(biāo)識(shí);②復(fù)制源數(shù)據(jù)到新工作表學(xué)分統(tǒng)計(jì)(credit_count.sheet),刪除冗余、隱私、敏感及不相關(guān)數(shù)據(jù)16列,保留需求相關(guān)數(shù)據(jù)6列,這6列數(shù)據(jù)項(xiàng)分別是:學(xué)號(hào)、開課學(xué)期、課程編號(hào)、成績(jī)標(biāo)志、學(xué)分、補(bǔ)重學(xué)期;③抽取通識(shí)選修課程相關(guān)數(shù)據(jù)項(xiàng)(課程編號(hào)、課程名稱、學(xué)分)到新工作表(gengral_course.sheet),抽取用于課程推薦相關(guān)數(shù)據(jù)項(xiàng)(學(xué)號(hào)、課程編號(hào)、學(xué)分)到新工作表(recommend1.sheet);④對(duì)相關(guān)數(shù)據(jù)項(xiàng)進(jìn)行數(shù)值化處理或填充,即用整數(shù)1~8替換開課學(xué)期,用整數(shù)0填充成績(jī)標(biāo)志列空白項(xiàng),用1替換補(bǔ)重學(xué)期列非空白項(xiàng)等。
Spark MLlib的推薦模型(用戶、商品、評(píng)分)對(duì)數(shù)據(jù)類型的要求比較單一,即要求用戶和商品的數(shù)據(jù)都是數(shù)值整型,在實(shí)際應(yīng)用中,一般都由用戶和商品的整數(shù)編號(hào)表示。
在數(shù)據(jù)庫(kù)中,設(shè)計(jì)創(chuàng)建了3個(gè)基本表和2個(gè)視圖?;颈碛校和ㄗR(shí)課程表、選課表、學(xué)號(hào)自然序號(hào)表;視圖有:模型訓(xùn)練數(shù)據(jù)集導(dǎo)出視圖、真實(shí)選課情況導(dǎo)出視圖。所有數(shù)據(jù)皆來(lái)自2015級(jí)學(xué)生成績(jī)?cè)次募杂猛粚脤W(xué)生做訓(xùn)練數(shù)據(jù)源,是因?yàn)樵谕瑢脤W(xué)生間進(jìn)行課程推薦會(huì)使得推薦更具有個(gè)性化,即用戶最大程度的預(yù)分類使得學(xué)生間的相似性判斷效率更高。以下對(duì)基本表結(jié)構(gòu)及數(shù)據(jù)進(jìn)行說(shuō)明。
1)課程表(course)
課程表數(shù)據(jù)主要包括為2015級(jí)學(xué)生開設(shè)的通識(shí)選修課學(xué)分等課程設(shè)置信息,如表1所示。
表中添加了一列“自然序號(hào)cid”,其值由自然數(shù)列填充,意在為訓(xùn)練推薦模型生成數(shù)值型的課程編號(hào),其中人文類(編號(hào)RW開頭)課程的自然序號(hào)為1~49、藝體類(編號(hào)YT開頭)課程的自然序號(hào)為50~65、自然類(編號(hào)ZR開頭)課程的自然序號(hào)為66~99,即按課程編號(hào)排序的自然序號(hào)編碼使得同類課程間相似性判斷效率更高。
表1 course表
2)選課表(elective)
選課表主要包括2015級(jí)學(xué)生的通識(shí)課的選修學(xué)分情況,如表2所示。將此表中的學(xué)號(hào)值替換為自然序號(hào)后,即可以導(dǎo)出為課程推薦模型(學(xué)號(hào)、課程號(hào)、學(xué)分)的訓(xùn)練數(shù)據(jù)集。
表2 elective表
3)學(xué)生自然序號(hào)對(duì)照表(sid_sno)
學(xué)號(hào)自然編號(hào)表將2015級(jí)所有學(xué)生進(jìn)行自然序列編號(hào),即所有學(xué)生按學(xué)號(hào)排序后,對(duì)應(yīng)進(jìn)行了自然數(shù)編號(hào)。如表3所示。
表3 sid_sno表
ALS算法(Alternating Least Squares交替最小二乘法),是一種求解矩陣分解問題的優(yōu)化方法,被用在求解Spark中所提供的推薦系統(tǒng)模型的最優(yōu)解。如表4中列出了Spark平臺(tái)下推薦模型中常用的功能包。
表4 ALS算法實(shí)現(xiàn)的常用功能
Spark-MLlib的訓(xùn)練數(shù)據(jù)集文件格式要求為.csv或.txt。課程推薦模型的訓(xùn)練測(cè)試采用離線方式,所以其訓(xùn)練數(shù)據(jù)集為數(shù)據(jù)庫(kù)視圖導(dǎo)出數(shù)據(jù),具體執(zhí)行時(shí)模型訓(xùn)練的輸入數(shù)據(jù)文件為elective_train.txt。
模型測(cè)試程序采用Java語(yǔ)言編碼,編譯環(huán)境為IntelliJ IDEA,程序功能主要包括三部分:訓(xùn)練數(shù)據(jù)文件讀取、顯示/隱式評(píng)分訓(xùn)練、推薦結(jié)果輸出。
1)關(guān)鍵代碼功能解析
(1)MatrixFactorizationModel model=ALS.train(ratingRDD, rank,iter)。
原型功能:顯式評(píng)分訓(xùn)練
參數(shù)解析:
①ratingRDD:訓(xùn)練集,數(shù)據(jù)格式(學(xué)生id、課程id、學(xué)分(0~2));
②rank:ALS矩陣分解因子,值太小擬合度不夠誤差大,值太大會(huì)導(dǎo)致模型泛化能力較差,建議值10~1000;
③iter:ALS算法重復(fù)計(jì)算次數(shù),值越大越精確,過大則太耗時(shí),建議值10~20。
(2)Rating[] predictProducts=model.recommendProducts(userID, N)。
原型功能:向指定用戶id推薦topN商品
參數(shù)解析:
① userID:指定的學(xué)生號(hào)sid,每次只能指定一個(gè)值。
②N:向?qū)W生推薦的課程門數(shù),此值越大準(zhǔn)確率越高,但也不宜過大;按每門課程1學(xué)分來(lái)累計(jì)并推薦課程門數(shù),通常需要推薦6門課,但由于有課程類別限制以及推薦模型的冷啟動(dòng)問題,所以建議N值取6~10。
2)模型測(cè)試結(jié)果
將train函數(shù)參數(shù)rank和iter分別設(shè)置為20、20,將recommendProducts函數(shù)參數(shù)N值設(shè)置為10,userID分別設(shè)置為52、146、239進(jìn)行三次測(cè)試,各參數(shù)測(cè)試結(jié)果及推薦評(píng)價(jià)如表5所示。
表5中,精確率、召回率以及調(diào)和平均數(shù)是根據(jù)以下列出的公式(1)~(3)計(jì)算得出的。(5)參見劉強(qiáng):《構(gòu)建企業(yè)級(jí)推薦系統(tǒng):算法、工程實(shí)現(xiàn)與案例分析》,北京:機(jī)械工業(yè)出版社, 2021年,第214—226頁(yè)。
表5 模型測(cè)試結(jié)果對(duì)照表
1)精確率(precision):指為學(xué)生推薦的候選集中有多少比例是學(xué)生真正感興趣的,即學(xué)生真正選修過的課程。
設(shè)U是所有提供推薦服務(wù)的學(xué)生全體的集合,針對(duì)其中的學(xué)生個(gè)體,Pu表示推薦的精確率,其計(jì)算公式如下:
(1)
其中Ru(N)是通過算法模型為學(xué)生u推薦的候選集,其中N是推薦的數(shù)量;學(xué)生真正選修的“課程”集即是Au。
2)召回率(recall):指學(xué)生真正選修的課程中有多少比例是推薦系統(tǒng)推薦的。設(shè)為針對(duì)學(xué)生u的召回率,其計(jì)算公式如下:
(2)
一般來(lái)說(shuō)N越大,召回率越高,精準(zhǔn)度越低,當(dāng)N為所有“標(biāo)的物”時(shí),召回率為1,而精準(zhǔn)度接近0。
3)調(diào)和平均數(shù)(F-measure):在實(shí)際構(gòu)建模型時(shí)需要權(quán)衡召回率和精確率,可以用兩者的調(diào)和平均數(shù)F1u來(lái)衡量推薦效果,具體計(jì)算公式如下:
(3)
對(duì)表5中列出的三個(gè)學(xué)生的推薦結(jié)果和相應(yīng)的評(píng)估參數(shù),可以分析總結(jié)為以下三點(diǎn):①學(xué)生所選課程中,有學(xué)分較高課程,則其推薦的召回率較高,這是因?yàn)橥扑]的topN是按學(xué)分從高到底排序的;②推薦精確率較低的主要原因是N值的設(shè)置大于總選課門數(shù),從而導(dǎo)致F1的值也較低,后續(xù)研究建議用訓(xùn)練的方式尋找合適的N值;③建議推薦的候選集能夠進(jìn)行差集或分類篩選,即針對(duì)學(xué)生還沒有選的課程進(jìn)行各自類別內(nèi)topN推薦。
只選部分?jǐn)?shù)據(jù)做測(cè)試評(píng)估是不夠的,通常需要針對(duì)模型進(jìn)行整體評(píng)價(jià),上述三個(gè)評(píng)估參數(shù)可以采用所有用戶的加權(quán)平均得到,即整體評(píng)價(jià)的精確率、召回率以及調(diào)和平均數(shù)的計(jì)算公式如下:
(4)
(5)
(6)
在使用Spark-MLlib的推薦系統(tǒng)時(shí),既可以使用公式(4)~(6)評(píng)估模型,也可以使用其提供的內(nèi)置函數(shù)進(jìn)行模型評(píng)價(jià),具體包括均方差(MSE)、均方根誤差(RMSE)、K值平均準(zhǔn)確率(MAPK)等評(píng)估指標(biāo),此部分的評(píng)估方法計(jì)劃在優(yōu)化后的模型測(cè)試中應(yīng)用。
本文研究的課程推薦模型面向高校通識(shí)課程的選修過程,在生成訓(xùn)練數(shù)據(jù)集時(shí)給出了數(shù)據(jù)庫(kù)基本表結(jié)構(gòu),可以作為平移到分布式數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)參考。鑒于模型評(píng)價(jià)指標(biāo)總體不超過50%,建議在后期能夠采集到課程評(píng)分的條件下,考慮采用將學(xué)分與評(píng)分加權(quán)聯(lián)合的方式使用。