周澤宇,王春玲
(北京林業大學 北京 100083)
隨著現代信息技術的廣泛應用,移動互聯網、云計算、大數據等新興技術迅猛發展,全球數據量呈爆炸式增長,全球數據中心流量僅2015年就已經達到4.7ZB,預計到2020年的時候,全球的數據總量將達到40ZB。那么,如何使用戶更加方便地、容易地從海量數據中檢索出所目標資源,如何有效地、合理地組織和管理網絡數據信息,成為電子信息領域進一步發展所遇到的重要問題之一。
推薦系統能夠為用戶提供個性化的服務,它針對于“信息超載”現象,能夠有效地進行信息過濾、信息細化等工作,并幫助用戶高效的查詢目標。
協同過濾推薦技術是目前發展較為完善的推薦技術之一。近年來,協同過濾推薦系統逐步廣泛應用于社交、電商、新聞等領域,其發展歷史上主要有Tapestry、GroupLens、Netflix、Amazon等典型案例。協同過濾推薦算法融合了大數據、社會網絡分析和關鍵用戶分析三方面熱點技術,能夠有效解決用戶興趣的準確捕捉問題,以提高用戶推薦質量。
個性化推薦系統的概念誕生于20世紀90年代,其主要發展是跟隨電子商務興起的腳步,而后逐漸成為一個獨立的課題。現如今,個性化推薦技術的應用已經拓展至諸多領域,包括影音娛樂、社交媒體甚至閱讀學習等方面[1]。個性化推薦技術的技術核心在于推薦算法和推薦應用兩方面,根據不同推薦應用的推薦需求和限制條件,應選擇使用不同的推薦算法。
協同過濾算法的發展受到用戶反饋數據稀疏性問題和系統擴展性問題的制約,近年來,國內外學者在提高推薦效率和系統拓展性方面做出許多研究。為有效提高推薦系統的可拓展性,有學者提出利用二維矩陣將項目表示成用戶項目矩陣,以確定用戶或項目之間的關系并計算得出推薦項目[2]。另有人提出可以使用奇異值分解技術,進行特征向量的降維處理,從而減少算法查找最近鄰居所需的計算量,以提高可拓展性[3]。為提高系統的推薦質量,Elkahky等人提出了一種跨域用戶模型的多視圖深度學習方法,該方法使用用戶瀏覽歷史和搜索內容的特征集來代表用戶,然后用深度學習的方法將用戶和項目映射到一個潛在空間使用其用戶與首選項目之間的相似性最大化,產生推薦[4]。
個性化推薦技術的推薦效率、實用性和準確性在不斷提升,但用戶需求也在不斷提高。盡管有關于協同過濾技術的理論研究及應用系統實現兩方面都取得了不錯的成果,但該算法仍存在諸多問題,如數據稀疏性、推薦準確性、冷啟動、拓展性和穩定性等。
個性化推薦技術是根據用戶的興趣特點和購買行為,經過數據分析,從而向用戶推薦其可能感興趣的信息和商品的過程。推薦算法可以在計算用戶之間相似度時,加入用戶個人項目偏好信息,以豐富用戶數據,確保相似度的準確性,盡量避免數據稀疏性帶來的不利影響。
個性化推薦系統的標準形式化定義為:設用戶集合U={u1,u2,……,un},項目集合I={i1,i2,……,im},有關推薦的相關系數Res(),Res(u,i)表示系統對于項目i推薦給用戶u的預測評價,全序集合Res(u,i)在一定范圍內浮動,是非負實數。個性化推薦的本質就是找到關于推薦目標用戶u來說推薦度最大的N個項目的集合Iu,并返回給用戶。
2.2.1 基于用戶的協同過濾算法(User-based Collaborative Filtering) 基于用戶的協同過濾算法的基本思想是:假設過去有相同愛好的用戶在將來也會有相同的愛好。基于假設,協同過濾算法無需考慮網絡信息資源,只需要依靠系統中系統篩選出的與目標相似的用戶或項目信息,即可通過計算分析得到推薦依據。
基于用戶的協同過濾算法的基本原理是:根據系統中用戶的歷史活動記錄和偏好信息,計算目標用戶與其他用戶之間的相似度,得到用戶之間的相似度矩陣,進而為活動用戶選擇近鄰集,最后,分析近鄰用戶對候選推薦項目的反饋信息,預測目標用戶對候選推薦項目的評分,進而確定推薦項并推薦給目標用戶[5]。
2.2.2 基于項目的協同過濾算法(Item-based Collaborative Filtering) 實踐發現基于用戶的協同過濾算法在數據稀疏性和系統可拓展性方面具有較大的問題,Sarwar等人經過研究并在2001年,提出了基于項目的協同過濾算法。
其基本原理是:通過分析所有用戶對項目的反饋信息,計算得到各個項目之間的相似度,再根據系統中的用戶歷史信息,分析目標用戶的個人偏好,對比偏好信息和項目的相似性,將相似度高的項目推薦給目標用戶[6]。
2.2.3 基于模型的協同過濾算法 基于模型的協同過濾算法,通常利用統計方法或者機器學習進行建模運算,使系統能夠處理用戶在離線狀態下所需的計算,根據用戶歷史信息和對用戶建模并進行預計算,在線狀態時則使用用戶偏好模型進行喜好分析,從而對用戶產生推薦,以達到快速響應。該算法具有穩定性高,時效性高的優點,但需要大量用戶的反饋數據,且使用條件受限,只在用戶興趣與特征比較穩定的環境中,具有較高的推薦效率。該方法將算法中最為主要的核心問題在于計算用戶評分的方法,在推薦精確度上一般比同類其他算法稍差,算法的實用性也受到一定限制。
3.1.1 算法功能設計 設計目標是高校課程推薦系統能夠在為學生用戶提供詳細的課程信息的同時,根據其個人偏好,為其智能推薦合適的課程。初次推薦時,系統可根據用戶設置的自定義標簽,選擇具有相同標簽的課程為目標用戶進行推薦。應用社會標簽系統,避免協同過濾算法冷啟動現象帶來的問題。數據庫信息完善后,系統將以課程收藏信息作為用戶對項目的反饋數據,根據Collection數據表,獲取用戶偏好,從而計算用戶間相似度,通過相似度較高的用戶的收藏信息為目標用戶提供課程推薦。
3.1.2 數據庫設計 與協同過濾推薦算法實現相關的數據表有Course課程表、User用戶表、Collection收藏表等。Course表和User表分別用來存儲課程信息和用戶信息,Collection表包含userid屬性和courseid屬性,用以建立課程和用戶之間的關聯,并向算法提供用戶對課程的反饋信息。
3.2.1 協同過濾推薦算法的一般實現過程 用戶、推薦方法和項目資源是個性化推薦實現過程中最重要的三個要素。協同過濾推薦系統通常使用的推薦分析方法,首先建立用戶個人信息,通過用戶反饋評分信息,了解用戶的行為特征、習性與偏好信息,然后再將資料庫中的所有資料或所有新增資料與用戶個人信息進行匹配,進行相關數據處理工作,最后利用算法提取用戶的偏好或特征,找出類似的群組提供給用戶[7]。
基于用戶的協同過濾推薦技術的推薦算法實現步驟一般包括以下三個部分:用戶喜好的收集與表示、選擇近鄰集和根據近鄰集為用戶返回推薦結果。
(1)用戶行為數據收集:應用算法時,通過數據庫中用戶的歷史數據收集信息并表示用戶的喜好,將用戶偏好信息進行整理。
(2)建立用戶鄰居:協同過濾技術根據評分矩陣、用戶歷史行為,選擇合適的公式方法計算用戶間相似性,得到與目標用戶相似的用戶集,稱之為用戶鄰居,將這個最近鄰居使用過的標簽,作為目標用戶的推薦標簽。根據系統情況選擇合適的計算方式,不同的相似度計算方法,可能得到不同的相似度結果。
(3)產生推薦:收集近鄰用戶對候選推薦項目的反饋信息,預測目標用戶對候選項目的評分,主要使用的預測方式有兩種,預測活動用戶對任意項n的評分和Top-N推薦列表。最終,將預測評分較高的項目推薦給目標用戶或為目標用戶提供推薦列表。
基于項目的協同過濾推薦步驟與基本相似,但用項目之間的相似性代替基于用戶的算法中的用戶之間的相似性,作為推薦的計算依據。該推薦算法的一般實現過程包括以下步驟:
(1)計算項目間相似度:與計算用戶間相似度相同,建立項目評分矩陣,項目相似度矩陣用行和列表示項目,rij表示項目i和項目j之間的相似度。再根據公式計算項目間相似度。目前主要用于計算項目間相似度的方法有余弦向量相似度、Pearson相關系數等。
(2)選擇近鄰:目前主要使用設定閾值和K最近鄰兩種方法,與“基于用戶的協同過濾”不同的是,從活動用戶的已評分項目集中選擇待預測項目的相似近鄰。
(3)產生推薦:與基于用戶的推薦相同,可以根據Top-N推薦列表選擇推薦項,或通過對給定項目預測評分進行挑選。
3.2.2 相似性度量方法 推薦算法中涉及許多用戶、項目、商品或標簽等之間相似度的計算,相似度的計算方式是有關推薦算法最主要研究的問題之一,在不同的數據量或推薦要求的限制下,選擇不同的推薦方法,應使用不同的相關度計算公式。基于夾角余弦的方法和基于皮爾遜相關系數的方法,是應用范圍最廣的兩種相似度計算方法[8]。
(1)余弦相似度:

公式中rU,S是用戶u對商品s的打分,SUV是用戶u和用戶v共同購買的商品。sim(a,b)的取值在0到1之間,其值越大表示用戶u,v之間的相似性越大。
(2)Pearson相關系數:

rU表示用戶u的平均打分,rV表示用戶v的平均打分,rU,S是用戶u對商品s的打分,SUV是用戶u和用戶v共同購買的商品。根據Pearson公式計算得到的相似度取值范圍為-1到1,1表示完全正相關,-1表示完全負相關,0表示無關。但是該相似度并沒有考慮重疊數對相似度結果的影響。
(3)歐幾里得距離:

根據用戶u對商品s的打分rU,S和用戶v對商品s的打分rv,S,計算用戶u和用戶v的歐幾里得距離。該方法也沒有考慮重疊數對相似度結果的影響。
3.2.3 UBCF算法在選課系統中的實現過程
根據上述推薦步驟和2.2.2中基于用戶的協同過濾推薦算法的實現原理,本項目中UBCF算法應用過程如流程圖圖1所示,包括5個步驟,3個主要過程:

(1)選取數據集
共選取北京林業大學信息學院30名學生用戶、20門課程的信息作為算法實驗數據,近鄰K取值為5,即選擇5個相似近鄰組成近鄰集。學生用戶和課程屬性作為算法輸入數據,構造用于表示用戶偏好的HashMap:UserPreferMap和用于表示用戶相似性的HashMap:UserSimMap。可用一個m*n的矩陣R來表示用戶的信息數據,矩陣中的Rij代表示用戶i對推薦對象j的反饋,就可以得到用戶-項目評分矩陣。用戶相似性矩陣與其類似。
在UserPreferMap中,填入用戶對課程的評分,即本項目中的收藏情況。用戶已收藏用項目評分2表示,用戶歷史收藏用項目評分1表示,用戶未曾收藏用項目評分0表示。
(2)計算皮爾相關系數:
應用上文2.2.5中皮爾遜相關系數公式,分別計算目標用戶x與其他用戶y之間相似度,相關系數的絕對值越大,相關度越大。
調用數學函數計算公式:

將用戶之間的相似度計算結果保存在UserSimMap中。
用戶相似度結果如下(推薦度排名前5名):

(3)根據近鄰相似度獲得對目標用戶的推薦課程:
構造用于表示預推薦課程的預測評分的HashMap:predictScoreMap,讀取UserPreferMap和UserSimMap數據。課程i關于用戶u的預測推薦分數Res(u,i)為,目標用戶u與user1,user2,…,userk的相關系數與其對課程i的項目評分Rui乘積之和,即:

根據目標用戶近鄰集,分別計算所有課程關于目標用戶的預測推薦評分,并存入predictScoreMap中。根據Top-N方法,按照預測評分對所有課程重新進行由大到小排序,按順序對目標用戶進行推薦。
(1)數據稀疏性問題(Sparsity)
數據的稀疏性問題是協同過濾推薦算法所面臨的最主要問題之一。通常用戶自愿給出的評價很少,嚴重會導致系統有效數據缺乏,使用項目-評分矩陣獲取相關系數時,算法很難精準的計算出用戶或項目之間的相似度,易致使用戶鄰居計算不準確,嚴重影響推薦質量。
(2)冷啟動問題(Cold-start)
當一個新用戶或新項目啟動系統推薦任務時,或是一個全新的系統初次啟動時,推薦系統無法從數據庫中采集到用戶的歷史數據,從而無法預測用戶未來的興趣。
(3)擴展性問題
商業網站通常會從在數以萬計的用戶和項目,推薦算法在計算最近鄰居時的搜索時間和空間將會非常龐大。面對巨大的數據量,很難保證算法的實時性。
每種推薦算法都有其各自的優缺點,在面對復雜且數據繁瑣的項目時,協同過濾算法具有更加高的效率,卻無法如而基于內容推薦,能夠為特殊興趣用戶服務,但基于內容推薦較難發現用戶的潛在興趣。因此,使用組合推薦(Hybrid Recommendation),將多個推薦算法混合在一起,能夠達到更好地推薦效果。目前領域內關于混合推薦技術研究和應用的方向最主要集中于基于內容推薦和協同過濾推薦的組合。
推薦技術在如今的各個領域中廣泛應用,與搜索引擎不同,推薦系統不需要用戶手動檢索所需信息,而是根據用戶的歷史行為記錄、興趣偏好等數據,得出用戶的潛在偏好,再通過預測分析向目標用戶推薦其最可能感興趣的信息或商品。
目前,關于UBCF算法的研究已經成熟,可以有效利用已有學生用戶信息和課程信息為目標學生推薦自身符合條件的課程。但為了提高推薦質量,可以嘗試將U-CF-I即基于用戶和基于項目的混合推薦算法應用于高校課程推薦系統中,能夠進一步提高課程推薦的準確度。
個性化推薦系統目前已廣泛應用于各個領域,在高校課程推薦中應用協同過濾推薦算法,可以有效地幫助學生用戶了解課程相關信息,從而協助學生進行選課工作。推薦算法有關于高等教育還可以作用于高校的教學資源分配、教學質量評估等方面,對于高校教育和遠程教育有重要意義。