高立強 繆 凱
(南京工程學院計算機工程學院,江蘇 南京 211167)
隨著信息技術和互聯網的發展,知識共享的速度和體量得到了突破和飛躍。然而在信息技術加速知識傳播的同時,不可避免地造成了信息過載現象(Information Overload)的問題[1]。無論是信息消費者還是信息生產者都遇到了很大的挑戰。2020 年在疫情的沖擊下,網絡教育成為時代寵兒,在線課程也面臨著信息過載的問題:用戶急速增加,課程數量龐大,但質量參差不齊。為了充分發掘優質課程,滿足用戶復雜需求,需要一種針對網絡課程的推薦算法。
目前,推薦系統大致分為以下幾種:基于內容的推薦、協同過濾推薦、基于知識的推薦、基于網絡結構的推薦、組合推薦及其他推薦[2]。其中,協同過濾算法利用用戶的行為數據,通過分析所有用戶的互動數據,使推薦列表能夠越來越滿足用戶的個性化需求。協同過濾推薦一般分為兩類:基于用戶的協同過濾推薦算法和基于物品的協同過濾推薦算法[3]。基于用戶的協同過濾算法的基本思想是找到與目標用戶興趣相似的用戶集合所喜歡的而目標用戶不認識的物品;而基于物品的協同過濾算法的基本思想是找到與目標用戶喜歡的物品相似的物品[4]。協同過濾算法擁有善于推薦復雜的非結構化對象、善于發現興趣點、推薦性能隨用戶增多而提升等特點。但也存在諸多問題,如冷啟動、數據稀疏性、推薦質量依賴歷史數據集等。
目前,大多數的推薦算法針對電子商務和圖書電影音樂進行研究。針對網絡課程的推薦算法相對研究較少。文獻[5]中,通過引入對課程文本內容的挖掘,使用課程文本向量計算課程相似度,增加物品特征,進而預測目標用戶對潛在課程興趣集的評分,達到對目標用戶進行課程推薦的目的。文獻[6]中,對傳統的基于內容的推薦算法在物品建模以及相似度計算方面存在的語義分析不足的缺陷進行改進,并提出了一種基于內容和word2vec的慕課推薦算法。文獻[7]通過挖掘E-Learning 平臺的用戶數據特點,實現基于用戶協同過濾的個性化課程推薦。
基于物品的協同過濾算法給用戶推薦那些和他們之前喜歡的物品相似的物品,該算法并不利用物品的內容屬性,它主要通過分析用戶的行為記錄計算物品之間的關聯。該算法認為,物品A和物品B具有很大的關聯性是因為喜歡物品A的用戶大都也喜歡物品B。
在網絡課程的推薦系統中,課程A和課程B之間具有很大的配合度是因為學習A 課程的用戶大都也學習過B 課程。同時,專業知識的學習往往有很大的關聯性,下一階段的學習內容和過往學習通常屬于同一學科科目。
本文的改進型網絡課程推薦算法首先通過用戶評分、課程完成度、收藏情況等反饋數據計算用戶對于已選課程的興趣度。然后根據課程所屬大科目劃分數據集,這樣極大地增加了課程之間存在高配合度的概率,解決了數據稀疏性的問題。將這些課程構造成課程集合,利用不同用戶對同一課程的興趣度依次計算集合中所有課程之間配合度。根據配合度和用戶已選課程的興趣度計算用戶對未知課程的興趣度,生成排序列表。最后通過實驗確定推薦N值,將前N個課程作為TopN列表推薦給用戶。
利用課程完成度、收藏和評分等反饋數據,計算用戶對已知課程的興趣度,公式為:

rui取值范圍[0,2],精確到萬分位,數值越高代表興趣度越高;Pui為用戶u對課程i的評分,取值為[1,10]的整數,默認為7;Tui為用戶u對課程i的完成度,取值范圍[0,1],精確到百分位,Lui為用戶u是否對課程i有收藏行為,若有則為1,反之為0。
當課程數量較多時,在下一步計算物品配合度矩陣代價會很大,同時存在嚴重的數據稀疏性問題。由于同一大學科類目下課程之間的配合度要遠高于不同學科之間課程的配合度,因此在計算課程配合度之前,先根據其所屬的科目標簽,劃分不同的數據集。這樣縮小了課程配合度的計算量,同時一定程度上緩解了數據稀疏性的問題。
定義當用戶對已知課程的興趣度rui>0.76 時,則視為有傾向性。根據上文所述的“學習A課程的用戶一般也學習了B課程”,定義A、B課程間的配合度為:

其中,WAB表示A、B課程間的配合度,N(A)為對A課程有傾向性的用戶數量,N(B)為對B 課程有傾向性的用戶數量。
為了增加推薦的覆蓋率,懲罰熱門課程的權重。同時根據IUF(Inverse User Frequence),懲罰活躍用戶的權重。修正后的配合度計算公式為:

其中,N(u)為用戶u 有傾向性的課程數量。N(A)和N(B)分別為對A課程和B課程有傾向性的用戶數量。
在得知同一大科目數據集中課程之間的配合度后,通過如下公式計算用戶u對課程j的興趣度:

其中,N(u)是用戶有傾向性的課程集合,S(i,K)是和課程i配合度最高的K個物品的集合,wij是課程i和j的配合度,rui是用戶u對課程i的興趣度。由于測試的數據集較小,這里K取5。該公式的含義是,和用戶歷史上具有傾向性的課程配合度越高的課程,越有可能在用戶的推薦列表中獲得較高的排名。
在獲得了用戶對未知課程的興趣度后,根據興趣度排序推薦前N名課程,這里N的取值會顯著影響覆蓋率和準確度等評測指標,通過測試實驗最終確定向用戶推薦的TopN列表。
由于目前從大型公開課網站獲取用戶的選課情況等個人信息困難,為了順利進行數據測試,我們采用了數據仿真模擬的方法,僅對計算機學科數據集進行仿真模擬。首先,爬取某網站計算機類別下的在線課程名稱,再通過問卷調查的方式得到用戶數據,包含歷史行為和未來傾向。通過這種方式來最大限度模擬網絡課程學習的真實場景。雖然實際在線學習的選課情況更加復雜,但以上實驗數據模擬了用戶在進行網絡課程學習時的主觀傾向,能夠反映出實驗算法的特點。本文通過比較同一數據集下N 的取值分析證明算法的效果。
在網站提供推薦服務的時候,對于TopN 推薦算法一般采用準確率,召回率和覆蓋率來進行預測準確率的判斷。
(1)準確率的定義為:

R(u)是根據用戶的行為給出的推薦列表,T(u)是用戶的行為列表。
(2)覆蓋率的定義為:

R(u)是根據用戶的行為給出的推薦列表,I是總物品列表。
(3)召回率的定義為:

R(u)是根據用戶的行為給出的推薦列表,T(u)是用戶的行為列表。
由于不同的N值,將會顯著影響到算法的各項評測指標的數值,因此,在實際的網站應用中,只有選擇合適的推薦N值,才能取得最好的推薦效果。由于本文所選取的數據集較小,因此,N值為從1 到28,間隔3 選取N值,所得的數據如圖1準確率,圖2召回率,圖3 F值圖,圖4覆蓋率所示。

圖1 準確率

圖2 召回率

圖3 F值
從圖1 中可以看出,隨著推薦數目N的不斷增加,該算法所形成的準確率總體呈先上升后下降趨勢,當N值取值為16 時,準確率取得最高,并隨著N值的增大,準確率反而成一個下降趨勢。因此,可以得出準確率與N值并不成明顯的正相關或者負相關的關系。圖2中所示,召回率隨著推薦數據N的不斷增加,總體呈一個上升趨勢。由于推薦N值的增加,推薦數目也在提高,其跟用戶實際行為列表的重復度也會隨之提高,然而用戶的行為列表是一定的,因此不難理解,隨著推薦N值的提高,召回率呈現一個上升的趨勢。然而準確率與召回率此消彼伏,與N值并沒有一個很明顯的正負相關關系,因此采用F值,即準確率與召回率的調和平均數來確定一個對于該數據集最合適的推薦N值。從圖3 中可以看出,當N值取16時,所獲得的F值最高,因此,在基于本數據集和本算法中,推薦N值取得16時,效果最佳。從圖4 中可以看出,覆蓋率隨著N值的增加,明顯呈一個上升的趨勢,直到覆蓋率穩定不變,達到最大值。

圖4 覆蓋率
本文提出了改進型協同過濾的網絡課程推薦算法,首先根據反饋數據計算用戶對已知課程的興趣度,然后根據用戶傾向性計算同一學科類別數據集下課程間的配合度,并在計算中對熱門物品和活躍用戶附加懲罰以提高覆蓋率,最后,根據用戶對已知課程的興趣度和配合度計算對未知課程的配合度并排序為推薦列表。通過實驗驗證了劃分學科類別、計算興趣度并判定傾向性、基于課程協同過濾等符合網絡課程的特性,具有較好的網絡課程推薦性能。