周澤宇,王春玲
(北京林業(yè)大學(xué) 北京 100083)
隨著現(xiàn)代信息技術(shù)的廣泛應(yīng)用,移動互聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)等新興技術(shù)迅猛發(fā)展,全球數(shù)據(jù)量呈爆炸式增長,全球數(shù)據(jù)中心流量僅2015年就已經(jīng)達(dá)到4.7ZB,預(yù)計(jì)到2020年的時候,全球的數(shù)據(jù)總量將達(dá)到40ZB。那么,如何使用戶更加方便地、容易地從海量數(shù)據(jù)中檢索出所目標(biāo)資源,如何有效地、合理地組織和管理網(wǎng)絡(luò)數(shù)據(jù)信息,成為電子信息領(lǐng)域進(jìn)一步發(fā)展所遇到的重要問題之一。
推薦系統(tǒng)能夠?yàn)橛脩籼峁﹤€性化的服務(wù),它針對于“信息超載”現(xiàn)象,能夠有效地進(jìn)行信息過濾、信息細(xì)化等工作,并幫助用戶高效的查詢目標(biāo)。
協(xié)同過濾推薦技術(shù)是目前發(fā)展較為完善的推薦技術(shù)之一。近年來,協(xié)同過濾推薦系統(tǒng)逐步廣泛應(yīng)用于社交、電商、新聞等領(lǐng)域,其發(fā)展歷史上主要有Tapestry、GroupLens、Netflix、Amazon等典型案例。協(xié)同過濾推薦算法融合了大數(shù)據(jù)、社會網(wǎng)絡(luò)分析和關(guān)鍵用戶分析三方面熱點(diǎn)技術(shù),能夠有效解決用戶興趣的準(zhǔn)確捕捉問題,以提高用戶推薦質(zhì)量。
個性化推薦系統(tǒng)的概念誕生于20世紀(jì)90年代,其主要發(fā)展是跟隨電子商務(wù)興起的腳步,而后逐漸成為一個獨(dú)立的課題?,F(xiàn)如今,個性化推薦技術(shù)的應(yīng)用已經(jīng)拓展至諸多領(lǐng)域,包括影音娛樂、社交媒體甚至閱讀學(xué)習(xí)等方面[1]。個性化推薦技術(shù)的技術(shù)核心在于推薦算法和推薦應(yīng)用兩方面,根據(jù)不同推薦應(yīng)用的推薦需求和限制條件,應(yīng)選擇使用不同的推薦算法。
協(xié)同過濾算法的發(fā)展受到用戶反饋數(shù)據(jù)稀疏性問題和系統(tǒng)擴(kuò)展性問題的制約,近年來,國內(nèi)外學(xué)者在提高推薦效率和系統(tǒng)拓展性方面做出許多研究。為有效提高推薦系統(tǒng)的可拓展性,有學(xué)者提出利用二維矩陣將項(xiàng)目表示成用戶項(xiàng)目矩陣,以確定用戶或項(xiàng)目之間的關(guān)系并計(jì)算得出推薦項(xiàng)目[2]。另有人提出可以使用奇異值分解技術(shù),進(jìn)行特征向量的降維處理,從而減少算法查找最近鄰居所需的計(jì)算量,以提高可拓展性[3]。為提高系統(tǒng)的推薦質(zhì)量,Elkahky等人提出了一種跨域用戶模型的多視圖深度學(xué)習(xí)方法,該方法使用用戶瀏覽歷史和搜索內(nèi)容的特征集來代表用戶,然后用深度學(xué)習(xí)的方法將用戶和項(xiàng)目映射到一個潛在空間使用其用戶與首選項(xiàng)目之間的相似性最大化,產(chǎn)生推薦[4]。
個性化推薦技術(shù)的推薦效率、實(shí)用性和準(zhǔn)確性在不斷提升,但用戶需求也在不斷提高。盡管有關(guān)于協(xié)同過濾技術(shù)的理論研究及應(yīng)用系統(tǒng)實(shí)現(xiàn)兩方面都取得了不錯的成果,但該算法仍存在諸多問題,如數(shù)據(jù)稀疏性、推薦準(zhǔn)確性、冷啟動、拓展性和穩(wěn)定性等。
個性化推薦技術(shù)是根據(jù)用戶的興趣特點(diǎn)和購買行為,經(jīng)過數(shù)據(jù)分析,從而向用戶推薦其可能感興趣的信息和商品的過程。推薦算法可以在計(jì)算用戶之間相似度時,加入用戶個人項(xiàng)目偏好信息,以豐富用戶數(shù)據(jù),確保相似度的準(zhǔn)確性,盡量避免數(shù)據(jù)稀疏性帶來的不利影響。
個性化推薦系統(tǒng)的標(biāo)準(zhǔn)形式化定義為:設(shè)用戶集合U={u1,u2,……,un},項(xiàng)目集合I={i1,i2,……,im},有關(guān)推薦的相關(guān)系數(shù)Res(),Res(u,i)表示系統(tǒng)對于項(xiàng)目i推薦給用戶u的預(yù)測評價,全序集合Res(u,i)在一定范圍內(nèi)浮動,是非負(fù)實(shí)數(shù)。個性化推薦的本質(zhì)就是找到關(guān)于推薦目標(biāo)用戶u來說推薦度最大的N個項(xiàng)目的集合Iu,并返回給用戶。
2.2.1 基于用戶的協(xié)同過濾算法(User-based Collaborative Filtering) 基于用戶的協(xié)同過濾算法的基本思想是:假設(shè)過去有相同愛好的用戶在將來也會有相同的愛好。基于假設(shè),協(xié)同過濾算法無需考慮網(wǎng)絡(luò)信息資源,只需要依靠系統(tǒng)中系統(tǒng)篩選出的與目標(biāo)相似的用戶或項(xiàng)目信息,即可通過計(jì)算分析得到推薦依據(jù)。
基于用戶的協(xié)同過濾算法的基本原理是:根據(jù)系統(tǒng)中用戶的歷史活動記錄和偏好信息,計(jì)算目標(biāo)用戶與其他用戶之間的相似度,得到用戶之間的相似度矩陣,進(jìn)而為活動用戶選擇近鄰集,最后,分析近鄰用戶對候選推薦項(xiàng)目的反饋信息,預(yù)測目標(biāo)用戶對候選推薦項(xiàng)目的評分,進(jìn)而確定推薦項(xiàng)并推薦給目標(biāo)用戶[5]。
2.2.2 基于項(xiàng)目的協(xié)同過濾算法(Item-based Collaborative Filtering) 實(shí)踐發(fā)現(xiàn)基于用戶的協(xié)同過濾算法在數(shù)據(jù)稀疏性和系統(tǒng)可拓展性方面具有較大的問題,Sarwar等人經(jīng)過研究并在2001年,提出了基于項(xiàng)目的協(xié)同過濾算法。
其基本原理是:通過分析所有用戶對項(xiàng)目的反饋信息,計(jì)算得到各個項(xiàng)目之間的相似度,再根據(jù)系統(tǒng)中的用戶歷史信息,分析目標(biāo)用戶的個人偏好,對比偏好信息和項(xiàng)目的相似性,將相似度高的項(xiàng)目推薦給目標(biāo)用戶[6]。
2.2.3 基于模型的協(xié)同過濾算法 基于模型的協(xié)同過濾算法,通常利用統(tǒng)計(jì)方法或者機(jī)器學(xué)習(xí)進(jìn)行建模運(yùn)算,使系統(tǒng)能夠處理用戶在離線狀態(tài)下所需的計(jì)算,根據(jù)用戶歷史信息和對用戶建模并進(jìn)行預(yù)計(jì)算,在線狀態(tài)時則使用用戶偏好模型進(jìn)行喜好分析,從而對用戶產(chǎn)生推薦,以達(dá)到快速響應(yīng)。該算法具有穩(wěn)定性高,時效性高的優(yōu)點(diǎn),但需要大量用戶的反饋數(shù)據(jù),且使用條件受限,只在用戶興趣與特征比較穩(wěn)定的環(huán)境中,具有較高的推薦效率。該方法將算法中最為主要的核心問題在于計(jì)算用戶評分的方法,在推薦精確度上一般比同類其他算法稍差,算法的實(shí)用性也受到一定限制。
3.1.1 算法功能設(shè)計(jì) 設(shè)計(jì)目標(biāo)是高校課程推薦系統(tǒng)能夠在為學(xué)生用戶提供詳細(xì)的課程信息的同時,根據(jù)其個人偏好,為其智能推薦合適的課程。初次推薦時,系統(tǒng)可根據(jù)用戶設(shè)置的自定義標(biāo)簽,選擇具有相同標(biāo)簽的課程為目標(biāo)用戶進(jìn)行推薦。應(yīng)用社會標(biāo)簽系統(tǒng),避免協(xié)同過濾算法冷啟動現(xiàn)象帶來的問題。數(shù)據(jù)庫信息完善后,系統(tǒng)將以課程收藏信息作為用戶對項(xiàng)目的反饋數(shù)據(jù),根據(jù)Collection數(shù)據(jù)表,獲取用戶偏好,從而計(jì)算用戶間相似度,通過相似度較高的用戶的收藏信息為目標(biāo)用戶提供課程推薦。
3.1.2 數(shù)據(jù)庫設(shè)計(jì) 與協(xié)同過濾推薦算法實(shí)現(xiàn)相關(guān)的數(shù)據(jù)表有Course課程表、User用戶表、Collection收藏表等。Course表和User表分別用來存儲課程信息和用戶信息,Collection表包含userid屬性和courseid屬性,用以建立課程和用戶之間的關(guān)聯(lián),并向算法提供用戶對課程的反饋信息。
3.2.1 協(xié)同過濾推薦算法的一般實(shí)現(xiàn)過程 用戶、推薦方法和項(xiàng)目資源是個性化推薦實(shí)現(xiàn)過程中最重要的三個要素。協(xié)同過濾推薦系統(tǒng)通常使用的推薦分析方法,首先建立用戶個人信息,通過用戶反饋評分信息,了解用戶的行為特征、習(xí)性與偏好信息,然后再將資料庫中的所有資料或所有新增資料與用戶個人信息進(jìn)行匹配,進(jìn)行相關(guān)數(shù)據(jù)處理工作,最后利用算法提取用戶的偏好或特征,找出類似的群組提供給用戶[7]。
基于用戶的協(xié)同過濾推薦技術(shù)的推薦算法實(shí)現(xiàn)步驟一般包括以下三個部分:用戶喜好的收集與表示、選擇近鄰集和根據(jù)近鄰集為用戶返回推薦結(jié)果。
(1)用戶行為數(shù)據(jù)收集:應(yīng)用算法時,通過數(shù)據(jù)庫中用戶的歷史數(shù)據(jù)收集信息并表示用戶的喜好,將用戶偏好信息進(jìn)行整理。
(2)建立用戶鄰居:協(xié)同過濾技術(shù)根據(jù)評分矩陣、用戶歷史行為,選擇合適的公式方法計(jì)算用戶間相似性,得到與目標(biāo)用戶相似的用戶集,稱之為用戶鄰居,將這個最近鄰居使用過的標(biāo)簽,作為目標(biāo)用戶的推薦標(biāo)簽。根據(jù)系統(tǒng)情況選擇合適的計(jì)算方式,不同的相似度計(jì)算方法,可能得到不同的相似度結(jié)果。
(3)產(chǎn)生推薦:收集近鄰用戶對候選推薦項(xiàng)目的反饋信息,預(yù)測目標(biāo)用戶對候選項(xiàng)目的評分,主要使用的預(yù)測方式有兩種,預(yù)測活動用戶對任意項(xiàng)n的評分和Top-N推薦列表。最終,將預(yù)測評分較高的項(xiàng)目推薦給目標(biāo)用戶或?yàn)槟繕?biāo)用戶提供推薦列表。
基于項(xiàng)目的協(xié)同過濾推薦步驟與基本相似,但用項(xiàng)目之間的相似性代替基于用戶的算法中的用戶之間的相似性,作為推薦的計(jì)算依據(jù)。該推薦算法的一般實(shí)現(xiàn)過程包括以下步驟:
(1)計(jì)算項(xiàng)目間相似度:與計(jì)算用戶間相似度相同,建立項(xiàng)目評分矩陣,項(xiàng)目相似度矩陣用行和列表示項(xiàng)目,rij表示項(xiàng)目i和項(xiàng)目j之間的相似度。再根據(jù)公式計(jì)算項(xiàng)目間相似度。目前主要用于計(jì)算項(xiàng)目間相似度的方法有余弦向量相似度、Pearson相關(guān)系數(shù)等。
(2)選擇近鄰:目前主要使用設(shè)定閾值和K最近鄰兩種方法,與“基于用戶的協(xié)同過濾”不同的是,從活動用戶的已評分項(xiàng)目集中選擇待預(yù)測項(xiàng)目的相似近鄰。
(3)產(chǎn)生推薦:與基于用戶的推薦相同,可以根據(jù)Top-N推薦列表選擇推薦項(xiàng),或通過對給定項(xiàng)目預(yù)測評分進(jìn)行挑選。
3.2.2 相似性度量方法 推薦算法中涉及許多用戶、項(xiàng)目、商品或標(biāo)簽等之間相似度的計(jì)算,相似度的計(jì)算方式是有關(guān)推薦算法最主要研究的問題之一,在不同的數(shù)據(jù)量或推薦要求的限制下,選擇不同的推薦方法,應(yīng)使用不同的相關(guān)度計(jì)算公式?;趭A角余弦的方法和基于皮爾遜相關(guān)系數(shù)的方法,是應(yīng)用范圍最廣的兩種相似度計(jì)算方法[8]。
(1)余弦相似度:
公式中rU,S是用戶u對商品s的打分,SUV是用戶u和用戶v共同購買的商品。sim(a,b)的取值在0到1之間,其值越大表示用戶u,v之間的相似性越大。
(2)Pearson相關(guān)系數(shù):
rU表示用戶u的平均打分,rV表示用戶v的平均打分,rU,S是用戶u對商品s的打分,SUV是用戶u和用戶v共同購買的商品。根據(jù)Pearson公式計(jì)算得到的相似度取值范圍為-1到1,1表示完全正相關(guān),-1表示完全負(fù)相關(guān),0表示無關(guān)。但是該相似度并沒有考慮重疊數(shù)對相似度結(jié)果的影響。
(3)歐幾里得距離:
根據(jù)用戶u對商品s的打分rU,S和用戶v對商品s的打分rv,S,計(jì)算用戶u和用戶v的歐幾里得距離。該方法也沒有考慮重疊數(shù)對相似度結(jié)果的影響。
3.2.3 UBCF算法在選課系統(tǒng)中的實(shí)現(xiàn)過程
根據(jù)上述推薦步驟和2.2.2中基于用戶的協(xié)同過濾推薦算法的實(shí)現(xiàn)原理,本項(xiàng)目中UBCF算法應(yīng)用過程如流程圖圖1所示,包括5個步驟,3個主要過程:
(1)選取數(shù)據(jù)集
共選取北京林業(yè)大學(xué)信息學(xué)院30名學(xué)生用戶、20門課程的信息作為算法實(shí)驗(yàn)數(shù)據(jù),近鄰K取值為5,即選擇5個相似近鄰組成近鄰集。學(xué)生用戶和課程屬性作為算法輸入數(shù)據(jù),構(gòu)造用于表示用戶偏好的HashMap:UserPreferMap和用于表示用戶相似性的HashMap:UserSimMap。可用一個m*n的矩陣R來表示用戶的信息數(shù)據(jù),矩陣中的Rij代表示用戶i對推薦對象j的反饋,就可以得到用戶-項(xiàng)目評分矩陣。用戶相似性矩陣與其類似。
在UserPreferMap中,填入用戶對課程的評分,即本項(xiàng)目中的收藏情況。用戶已收藏用項(xiàng)目評分2表示,用戶歷史收藏用項(xiàng)目評分1表示,用戶未曾收藏用項(xiàng)目評分0表示。
(2)計(jì)算皮爾相關(guān)系數(shù):
應(yīng)用上文2.2.5中皮爾遜相關(guān)系數(shù)公式,分別計(jì)算目標(biāo)用戶x與其他用戶y之間相似度,相關(guān)系數(shù)的絕對值越大,相關(guān)度越大。
調(diào)用數(shù)學(xué)函數(shù)計(jì)算公式:
將用戶之間的相似度計(jì)算結(jié)果保存在UserSimMap中。
用戶相似度結(jié)果如下(推薦度排名前5名):
(3)根據(jù)近鄰相似度獲得對目標(biāo)用戶的推薦課程:
構(gòu)造用于表示預(yù)推薦課程的預(yù)測評分的HashMap:predictScoreMap,讀取UserPreferMap和UserSimMap數(shù)據(jù)。課程i關(guān)于用戶u的預(yù)測推薦分?jǐn)?shù)Res(u,i)為,目標(biāo)用戶u與user1,user2,…,userk的相關(guān)系數(shù)與其對課程i的項(xiàng)目評分Rui乘積之和,即:
根據(jù)目標(biāo)用戶近鄰集,分別計(jì)算所有課程關(guān)于目標(biāo)用戶的預(yù)測推薦評分,并存入predictScoreMap中。根據(jù)Top-N方法,按照預(yù)測評分對所有課程重新進(jìn)行由大到小排序,按順序?qū)δ繕?biāo)用戶進(jìn)行推薦。
(1)數(shù)據(jù)稀疏性問題(Sparsity)
數(shù)據(jù)的稀疏性問題是協(xié)同過濾推薦算法所面臨的最主要問題之一。通常用戶自愿給出的評價很少,嚴(yán)重會導(dǎo)致系統(tǒng)有效數(shù)據(jù)缺乏,使用項(xiàng)目-評分矩陣獲取相關(guān)系數(shù)時,算法很難精準(zhǔn)的計(jì)算出用戶或項(xiàng)目之間的相似度,易致使用戶鄰居計(jì)算不準(zhǔn)確,嚴(yán)重影響推薦質(zhì)量。
(2)冷啟動問題(Cold-start)
當(dāng)一個新用戶或新項(xiàng)目啟動系統(tǒng)推薦任務(wù)時,或是一個全新的系統(tǒng)初次啟動時,推薦系統(tǒng)無法從數(shù)據(jù)庫中采集到用戶的歷史數(shù)據(jù),從而無法預(yù)測用戶未來的興趣。
(3)擴(kuò)展性問題
商業(yè)網(wǎng)站通常會從在數(shù)以萬計(jì)的用戶和項(xiàng)目,推薦算法在計(jì)算最近鄰居時的搜索時間和空間將會非常龐大。面對巨大的數(shù)據(jù)量,很難保證算法的實(shí)時性。
每種推薦算法都有其各自的優(yōu)缺點(diǎn),在面對復(fù)雜且數(shù)據(jù)繁瑣的項(xiàng)目時,協(xié)同過濾算法具有更加高的效率,卻無法如而基于內(nèi)容推薦,能夠?yàn)樘厥馀d趣用戶服務(wù),但基于內(nèi)容推薦較難發(fā)現(xiàn)用戶的潛在興趣。因此,使用組合推薦(Hybrid Recommendation),將多個推薦算法混合在一起,能夠達(dá)到更好地推薦效果。目前領(lǐng)域內(nèi)關(guān)于混合推薦技術(shù)研究和應(yīng)用的方向最主要集中于基于內(nèi)容推薦和協(xié)同過濾推薦的組合。
推薦技術(shù)在如今的各個領(lǐng)域中廣泛應(yīng)用,與搜索引擎不同,推薦系統(tǒng)不需要用戶手動檢索所需信息,而是根據(jù)用戶的歷史行為記錄、興趣偏好等數(shù)據(jù),得出用戶的潛在偏好,再通過預(yù)測分析向目標(biāo)用戶推薦其最可能感興趣的信息或商品。
目前,關(guān)于UBCF算法的研究已經(jīng)成熟,可以有效利用已有學(xué)生用戶信息和課程信息為目標(biāo)學(xué)生推薦自身符合條件的課程。但為了提高推薦質(zhì)量,可以嘗試將U-CF-I即基于用戶和基于項(xiàng)目的混合推薦算法應(yīng)用于高校課程推薦系統(tǒng)中,能夠進(jìn)一步提高課程推薦的準(zhǔn)確度。
個性化推薦系統(tǒng)目前已廣泛應(yīng)用于各個領(lǐng)域,在高校課程推薦中應(yīng)用協(xié)同過濾推薦算法,可以有效地幫助學(xué)生用戶了解課程相關(guān)信息,從而協(xié)助學(xué)生進(jìn)行選課工作。推薦算法有關(guān)于高等教育還可以作用于高校的教學(xué)資源分配、教學(xué)質(zhì)量評估等方面,對于高校教育和遠(yuǎn)程教育有重要意義。