華北電力大學經濟管理系 張 歡 鄒 沖
在越來越多高校采用學分制管理模式的今天,選課系統是一個高校教務系統中不可或缺的部分。但是,目前絕大多數的選課系統對課程只是進行課程及課程簡介的簡單展示,未對課程特征進行深入的描述,更缺乏針對學生屬性的不同進行推薦(包括對學生推薦課程及對課程推薦學生,以下簡稱課程推薦)。黃海東(2009)提出按照先來后到的方式進行選課。李中英(2006)提出根據概率隨機分配學生的課程選擇。趙建平(2006)和張戈(2010)都分別對按照概率分配選課結果的方案進行了改進,提出了動態概率的抽簽選課方式。劉敦濤(2006)和楊春蓉(2007)提出了按名額比例分配算法和分志愿篩選算法。
不管是先來后到還是隨機分配都沒有根據課程和學生的特征來進行課程的推薦和篩選,不利于課程與最適宜的學生的匹配。因此,本研究提出根據課程特征參數將課程及學生的需求描述為多維向量,根據兩者的余弦相似度大小為學生推薦選修課程及為學生推薦課程(如圖1★所示)。學生評教已經成為國內外高校收集信息資料、實現質量監控、加強教學管理、促進教學工作的重要手段。

圖1 選課系統課程推薦與反饋流程圖
在參考了Ivana Ognjanovic以及Trang Phan對學生選課動機的分析后,本文選定了“課程課時數”、“課程作業量”、“實踐教學占比”、“考試成績均值”、“課程接納人數”、“課堂氣氛活躍程度”、“教師授課通俗程度”、“考勤考核嚴格程度”共8個課程描述參數。
每門課程都可以看作是由以上8個課程描述參數(取值范圍為大于等于0且小于等于9的實數)作為8個分量組成的8維向量,為方便起見,統一按照“課程課時數、課程作業量、實踐教學占比、考試成績均值、課程接納人數、課堂氣氛活躍程度、教師授課通俗程度、考勤考核嚴格程度”的次序分別設置8個分量,因此每個課程表示為一個8維向量,稱為課程描述向量,用C表示。

對于學生而言,在選擇課程的時候,也需要從課程列表中的大量課程進行篩選,選出最合適自己的課程。這8個參數在這里是針對學生這一角色而言的,是描述學生對課程的需求,稱為學生需求參數。用S表示。

在同一套計算體系中,課程描述向量和學生需求向量的對應分量必須設置為同一個課程描述參數,否則后續的計算算法和計算結果將會變得無意義。
首先給出余弦相似度及加權余弦相似度的概念,然后基于加權余弦相似度分析基于相似度的課程推薦機制。
計算課程和學生之間的相似度,余弦相似度方法(Cosine Similarity)。余弦相似度用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似。
余弦相似度計算公式為:

在實際應用中,對于不同的學生來說,8個參數所占的貢獻值極有可能是不一致的。為解決這種各參數貢獻值不均勻的問題,需要引入權重的概念。某一個指標的權重是指該指標在整體評價中的相對重要程度。對于一個學生需求向量S、待比較的課程描述向量C及其權重向量W:

更能反映學生需求和課程描述的匹配程度的加權相似度需要按以下算法計算得出:

教務系統中的所有共m門可選課程C1,C2,…,Cm組成了一個課程集合C={C1,C2,…,Cm},教務系統中的所有共n名在冊學生S1,S2,…,Sn組成了一個學生集合S={S1,S2,…,Sn}。當課程集合中的所有課程都確定了課程描述參數、學生集合中的所有學生確定了學生需求參數時,每一門課程就可以用一個課程描述向量來表示,每一名學生也可以用一個學生需求向量來表示。對于S中的學生S1,遍歷一次整個課程集合C,以該學生對應的學生需求向量對每一個課程描述向量進行一次相似度的計算,按照這個操作,遍歷一次整個學生集合,讓每一個學生Si(1<i<n)對應的學生需求向量對每一個課程描述向量都進行一次相似度的計算,最終將會得到m×n條記錄。
這樣的每一組就是同一名學生對于所有課程的匹配程度。在每一組內按相似度降序對所有記錄進行排序,序數值越小的記錄中的課程,就和該學生的需求越一致,可以在學生選課階段時向學生推薦,提高了學生選課的效率,也能夠讓學生選擇到更適合自己的課程。當選擇某門課程的學生數大于該門課程所能容納的學生數時,就要由選課系統按照相似度降序進行學生的推薦。使用課程選擇算法來進行課程推薦,是一種提高效率的有效手段。
現有兩名學生甲、乙。學生甲平常課程較多,希望選修的課程課時數較少,有時候還會因為特殊情況選擇曠課,他更傾向于理論型的學習,還希望能夠在大教室中和較多同學一起上課,因此他的學生描述向量S甲=(3,6,3,6,8,7,7,2);學生乙平常課程較少,能夠有較多的時間上選修課和完成課程作業,他希望課程中有更多的實踐機會而不是僅僅在課堂中聽課,因此它的學生描述向量S乙=(8,6,8,7,5,7,7,9)。
現有《科技信息檢索》、《大學語文》、《大學英語6》三門選修課程待選,其課程描述參數分別為C科技信息檢索=(3,8,4,7,6,7,6,5)、C大學語文=(8,7,7,6,4,7,7,8)、C大學英語6=(5,7,5,7,6,7,8,9)。按照公式(5)在兩名學生和三門課程之間兩兩進行相似度的計算,共得到6個相似度,如表1所示。

表1 兩名學生與三門課程的相似度
由表1可以看出,算法能夠得出《科技信息檢索》是最適合學生甲的課程,《大學語文》是最適合學生乙的課程。因此,將會表向學生甲、學生乙分別推薦《科技信息檢索》和《大學語文》選修課。