毛勇
摘 要: 推薦算法是目前互聯(lián)網(wǎng)環(huán)境下廣泛使用的技術(shù)之一。其中協(xié)同過濾推薦算法是目前應(yīng)用最廣泛最成熟的推薦技術(shù)。文章介紹了協(xié)同過濾推薦算法的基本概念和原理,對協(xié)同過濾推薦算法的相似度計(jì)算公式和評價(jià)指標(biāo)進(jìn)行了歸納整理,總結(jié)分析協(xié)同過濾推薦算法存在的問題,以及目前眾多學(xué)者對這些問題的解決方案,最后介紹了協(xié)同過濾推薦算法的發(fā)展方向。
關(guān)鍵詞: 推薦算法; 協(xié)同過濾; 個(gè)性化推薦; 預(yù)測推薦
中圖分類號:TP399 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2018)07-28-04
Abstract: Recommendation algorithm is one of the most widely used technologies in the Internet environment. Among them, collaborative filtering recommendation algorithm is currently the most widely used and the most matured recommendation technology. This paper mainly introduces the basic concepts and principles of collaborative filtering recommendation algorithm, summarizes the similarity calculation formula and evaluation index of collaborative filtering recommendation algorithm, summarizes and analyzes the existing problems of collaborative filtering recommendation algorithm, as well as the solutions to these problems of many scholars at present, and finally, the development direction of collaborative filtering recommendation algorithm is introduced.
Key words: recommendation algorithm; collaborative filtering; personalized recommendation; prediction recommendation
0 引言
隨著互聯(lián)網(wǎng)和信息技術(shù)的迅猛發(fā)展,用戶往往很難從海量的數(shù)據(jù)中獲取到自己所需要的信息,傳統(tǒng)的搜索引擎和信息過濾技術(shù)只能被動(dòng)的為用戶提供信息服務(wù),當(dāng)用戶的信息需求不明確時(shí),這些技術(shù)很難有效地幫助用戶。因此,如何更高效更精準(zhǔn)地為用戶提供信息服務(wù),成為制約互聯(lián)網(wǎng)信息服務(wù)發(fā)展的一個(gè)主要問題。在解決這個(gè)問題方面,推薦系統(tǒng)相對于傳統(tǒng)的推薦引擎和信息過濾技術(shù)有著明顯的優(yōu)勢。推薦系統(tǒng)能根據(jù)用戶的歷史訪問記錄信息,來為用戶進(jìn)行精準(zhǔn)高效的個(gè)性化推薦服務(wù)。推薦算法主要分為:基于內(nèi)容的推薦算法、協(xié)同過濾推薦算法和混合推薦算法。其中協(xié)同過濾推薦算法是當(dāng)前應(yīng)用較為廣泛和成功的推薦算法。
1 基于協(xié)同過濾的推薦算法
1992年Goldberg、Nicols、Oki和Terry首次提出協(xié)同過濾的概念[1]。協(xié)同過濾算法是一種典型的利用集群智慧的方法,它的核心思想為:對于具有相同或相似興趣愛好的用戶A和B,當(dāng)用戶A喜歡某一個(gè)物品時(shí),用戶B可能對這個(gè)物品也有著相似的興趣度。協(xié)同過濾算法一般采用最近鄰技術(shù),利用用戶對項(xiàng)目的歷史評分?jǐn)?shù)據(jù),通過相似度計(jì)算產(chǎn)生目標(biāo)用戶的最近鄰集合。
經(jīng)過多年發(fā)展,協(xié)同過濾算法主要分為兩類:基于內(nèi)存(Memory-based)的協(xié)同過濾推薦算法和基于模型(Model-based)的協(xié)同過濾推薦算法[2]。而基于內(nèi)存的協(xié)同過濾推薦算法又可以分為:基于用戶的協(xié)同過濾算法(User Based Collaborative Filtering,UBCF)和基于項(xiàng)目的協(xié)同過濾推薦算法(Item-Based Collaborative Filtering,IBCF)。
1.1 基于內(nèi)存的協(xié)同過濾算法:
在一部分中文文獻(xiàn)中,基于內(nèi)存的協(xié)同過濾算法也被翻譯為“基于記憶”的協(xié)同過濾算法,基于內(nèi)存的協(xié)同過濾推薦算法主要分為三步。
⑴ 收集用戶信息
收集可以代表用戶興趣的信息集合,構(gòu)建用戶-項(xiàng)目評分矩陣如下:
⑵ 相似性計(jì)算
相似度計(jì)算是基于內(nèi)存的協(xié)同過濾推薦算法的基礎(chǔ)步驟,通過相似度計(jì)算可以獲得用戶之間興趣偏好的相似程度或兩個(gè)項(xiàng)目的相似程度。
以下是兩種常用的相似度計(jì)算方法。
方法一 夾角余弦相似度(Cosine Similarity)
夾角余弦相似度將每個(gè)用戶評分?jǐn)?shù)據(jù)看做n維向量,兩個(gè)向量之間的夾角余弦值表示這兩個(gè)用戶之間的相似程度,夾角余弦值越小表示這兩個(gè)用戶之間的相似度越高,具有相似的興趣偏好。夾角余弦相似度公式為:
皮爾森相關(guān)系數(shù)(Pearson Correlation Coefficient PCC)[3]:是余弦相似度在維度缺失情況下的一種改進(jìn),在兩個(gè)用戶共有的評分項(xiàng)目上進(jìn)行相似度計(jì)算,皮爾森相關(guān)系數(shù)公式如下:
其中,Iuv表示用戶u和用戶v共有的評分項(xiàng)目,rui和rvi分別表示用戶u和用戶v對項(xiàng)目i的評分,,分別表示用戶u和用戶v各自的項(xiàng)目平均分。
方法二 修正的余弦相似度(Adjusted Cosine Similarity)
余弦相似度更多的是從方向上區(qū)分差異,而對絕對的數(shù)值不敏感,因此無法從每個(gè)維度來衡量數(shù)值的差異。針對這種情況,就出現(xiàn)了修正的余弦相似度,公式如下所示:
其中,Iuv表示用戶u和用戶v共有的評分項(xiàng)目,rui和rvi分別表示用戶u和用戶v對項(xiàng)目i的評分,,分別表示用戶u和用戶v各自的項(xiàng)目平均分,Iu和Iv表示用戶u和用戶v各自的評分項(xiàng)目。
⑶ 生成推薦列表
最近鄰集合的產(chǎn)生方法有兩種,一種是設(shè)置相似度闕值,只有高于闕值才判定為相似用戶,另一種是指定目標(biāo)用戶的最近鄰個(gè)數(shù)。
1.1.1 基于用戶的協(xié)同過濾算法
基于用戶的協(xié)同過濾推薦算法通過比較目標(biāo)用戶的一系列行為或評分信息和其他用戶之間的相似程度,來計(jì)算出目標(biāo)用戶的最近鄰集合,也就是和目標(biāo)用戶興趣偏好類似的用戶集合,然后將最近鄰集合中的用戶最感興趣的內(nèi)容或項(xiàng)目作為推薦內(nèi)容推薦給目標(biāo)用戶。
1.1.2 基于項(xiàng)目的協(xié)同過濾算法
隨著推薦系統(tǒng)的發(fā)展,會(huì)出現(xiàn)這樣一種現(xiàn)象,推薦系統(tǒng)數(shù)據(jù)庫中的項(xiàng)目數(shù)量固定或者增長緩慢,與之相反的是推薦系統(tǒng)的用戶快速增長,因此推薦算法計(jì)算出的項(xiàng)目之間的相似度矩陣更新頻率很低?;陧?xiàng)目的協(xié)同過濾算法認(rèn)為:用戶對不同項(xiàng)目的評分具有相似性,因此,在為目標(biāo)用戶進(jìn)行推薦時(shí),可以先計(jì)算項(xiàng)目之間的相似程度,當(dāng)需要預(yù)測用戶對某一個(gè)項(xiàng)目的評分或喜愛程度時(shí),可以參照用戶已經(jīng)評價(jià)過的項(xiàng)目評分來進(jìn)行計(jì)算?;谖锲返膮f(xié)同過濾算法就是找到和“目標(biāo)用戶”喜歡的物品相似的物品,然后把相似的物品推薦給“目標(biāo)用戶”。例如我很喜歡《黑客帝國》,而《盜夢空間》和《黑客帝國》相似度很高,推薦系統(tǒng)就可以給我推薦《盜夢空間》,實(shí)際上我也很喜歡《盜夢空間》。
1.2 基于模型的協(xié)同過濾算法
基于內(nèi)存的協(xié)同過濾推薦算法在推薦計(jì)算過程中,推薦算法通過相似度計(jì)算對用戶未訪問過的項(xiàng)目進(jìn)行評分預(yù)測,在這個(gè)過程中,用戶的所有評分?jǐn)?shù)據(jù)都在評分預(yù)測中充分發(fā)揮作用,形成一種全局推薦,因此基于內(nèi)存的推薦算法一般都可以提供較為滿意的推薦質(zhì)量,但是隨著用戶數(shù)量和項(xiàng)目數(shù)量的增加,全局推薦計(jì)算將占用大量系統(tǒng)內(nèi)存資源,很難滿足一些在線推薦服務(wù)的實(shí)時(shí)性要求。針對這一問題,眾多學(xué)者將機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的計(jì)算模型與協(xié)調(diào)過濾推薦算法相結(jié)合,研究出了基于模型協(xié)同過濾推薦算法。
基于內(nèi)存的協(xié)同過濾推薦算法之間在用戶-項(xiàng)目評分矩陣上進(jìn)行運(yùn)算和產(chǎn)生推薦結(jié)果,而基于模型的協(xié)同過濾推薦算法首先對用戶-項(xiàng)目評分矩陣進(jìn)行分析和數(shù)據(jù)挖掘,通過機(jī)器學(xué)習(xí)的算法或統(tǒng)計(jì)學(xué)的相關(guān)數(shù)學(xué)模型建立相符的評分預(yù)測模型,最后根據(jù)目標(biāo)用戶已有的評分?jǐn)?shù)據(jù),來對目標(biāo)用戶未評分的項(xiàng)目進(jìn)行評分預(yù)測。
2 協(xié)同過濾推薦算法評價(jià)指標(biāo)
⑴ 預(yù)測準(zhǔn)確度
預(yù)測準(zhǔn)確度是衡量一個(gè)推薦系統(tǒng)或者推薦算法預(yù)測用戶行為的一個(gè)重要指標(biāo),在計(jì)算預(yù)測準(zhǔn)確度時(shí),需要將包含用戶歷史行為記錄的數(shù)據(jù)集分割為訓(xùn)練集和測試集。通過在訓(xùn)練集上建立用戶的行為和興趣模型預(yù)測用戶在測試集上的行為,并計(jì)算預(yù)測的結(jié)果和測試集中數(shù)據(jù)的重合度。通常評分預(yù)測準(zhǔn)確度通過均方根誤差(RMSE)和平均絕對誤差(MAE)來計(jì)算[4]。
⑵ 覆蓋率
覆蓋率(coverage)表示一個(gè)推薦系統(tǒng)對項(xiàng)目長尾的挖掘能力,具體指的就是推薦算法預(yù)測出來的項(xiàng)目占項(xiàng)目總數(shù)的比例,推薦算法推薦的數(shù)量越多,表示推薦算法的推薦質(zhì)量越高。在信息論和經(jīng)濟(jì)學(xué)中有兩個(gè)著名的指標(biāo)用來定義覆蓋率。
⑶ 多樣性
多樣性指標(biāo)主要考慮到用戶的興趣是多樣的,例如用戶可能同時(shí)喜歡動(dòng)作電影,戰(zhàn)爭電影和文藝電影,當(dāng)推薦列表中的項(xiàng)目都包含這三類電影時(shí),才能夠滿足用戶的多樣性需求。多樣性代表著推薦列表中的項(xiàng)目應(yīng)該是不屬于同一類目的,也就是這些項(xiàng)目應(yīng)該是不同的,存在差異性。
3 協(xié)同過濾推薦算法存在的問題
⑴ 數(shù)據(jù)稀疏問題
數(shù)據(jù)稀疏問題是推薦系統(tǒng)中普遍存在的現(xiàn)象。協(xié)同過濾算法是在用戶-項(xiàng)目評分矩陣的基礎(chǔ)上進(jìn)行相似度計(jì)算和預(yù)測推薦,而在正常的推薦系統(tǒng)中,用戶不可能對系統(tǒng)中的每一個(gè)項(xiàng)目都作出評分,因此在用戶-項(xiàng)目評分矩陣中存在著大量的空白項(xiàng)。在對用戶或者項(xiàng)目之間進(jìn)行相似性計(jì)算時(shí),缺乏客觀準(zhǔn)確的評分?jǐn)?shù)據(jù),最終出現(xiàn)推薦結(jié)果不夠精準(zhǔn)的問題。
針對這個(gè)問題,學(xué)術(shù)界研究了許多方法來解決這個(gè)問題:①矩陣填充。通常是對沒有評分?jǐn)?shù)據(jù)的項(xiàng)目填入一個(gè)固定的缺省值或者填入其他用戶在這個(gè)項(xiàng)目上的平均值。②矩陣降維和奇異值分解(SVD)[5]。采用奇異值分解的方法去掉不重要的和用噪音,降低矩陣維度,增加矩陣數(shù)據(jù)的稠密程度。③采用預(yù)測評分對用戶-項(xiàng)目評分矩陣的空白評分項(xiàng)進(jìn)行填充[6]。常用的方法有BP神經(jīng)網(wǎng)絡(luò)、Na?ve Bayesian分類器等,通過這些方法預(yù)測用戶對項(xiàng)目的評分情況。
⑵ 冷啟動(dòng)問題
冷啟動(dòng)是數(shù)據(jù)稀疏問題的一個(gè)特殊情況,它分為新項(xiàng)目冷啟動(dòng)問題和新用戶冷啟動(dòng)問題。冷啟動(dòng)出現(xiàn)的原因是,當(dāng)一個(gè)新用戶或者一個(gè)新的項(xiàng)目加入到系統(tǒng)時(shí),該用戶沒有對系統(tǒng)中的項(xiàng)目進(jìn)行推薦或者一個(gè)新的項(xiàng)目加入到系統(tǒng)后短時(shí)間內(nèi)沒有用戶對其進(jìn)行評價(jià)。推薦算法在進(jìn)行相似度計(jì)算時(shí)因?yàn)槿鄙僭u分?jǐn)?shù)據(jù),因此很難為新用戶或新項(xiàng)目匹配到相似用戶或相似項(xiàng)目。
⑶ 可擴(kuò)展性問題
協(xié)同過濾算法的核心是通過對用戶-項(xiàng)目評分矩陣來進(jìn)行相似度計(jì)算,而在推薦系統(tǒng)中,用戶和項(xiàng)目的數(shù)量隨著時(shí)間的變化而增加,也就意味著在進(jìn)行相似度計(jì)算時(shí),龐大的矩陣計(jì)算將會(huì)嚴(yán)重影響推薦算法的推薦效率。針對這一問題,經(jīng)典的解決方法有k-means聚類、EM(Expectation-Maximization)算法、Gibbs Sampling 算法和模糊聚類算法等。
⑷ 興趣漂移問題
興趣漂移問題在現(xiàn)實(shí)情境中是經(jīng)常存在的。因?yàn)橛脩舻呐d趣變化會(huì)隨著生活環(huán)境,年齡增長等外界原因或者自身性格變化的內(nèi)部原因而改變,但是推薦系統(tǒng)很難根據(jù)用戶的歷史記錄來敏銳的捕捉到這點(diǎn),這就導(dǎo)致推薦算法推薦和預(yù)測用戶可能感興趣的內(nèi)容與用戶實(shí)際關(guān)注和感興趣的內(nèi)容產(chǎn)生脫節(jié)。針對這一問題,業(yè)內(nèi)專家主要采用顯式反饋和隱式反饋相結(jié)合的方法,或者將用戶的地理位置、登錄時(shí)間等因素考慮在內(nèi),進(jìn)一步進(jìn)行精準(zhǔn)的推薦。
4 總結(jié)和展望
協(xié)同過濾推薦算法是目前應(yīng)用最廣泛最成功的推薦算法,在電子商務(wù)、互聯(lián)網(wǎng)音樂視頻等領(lǐng)域有著不可忽視的作用。本文圍繞協(xié)同過濾推薦算法這一主題,重點(diǎn)介紹了協(xié)同過濾推薦算法的核心思想、算法分類、算法過程和協(xié)同過濾推薦算法所存在的問題以及相應(yīng)的解決方案。綜合分析協(xié)同過濾推薦算法的發(fā)展趨勢,我們可以看出雖然協(xié)同過濾推薦算法相比之前的只針對用戶-項(xiàng)目評分矩陣這一顯式反饋因素進(jìn)行考慮,現(xiàn)在的協(xié)同過濾推薦算法在算法性能和用戶興趣挖掘方面有了很大進(jìn)步,同時(shí)與機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的一些前沿算法相結(jié)合也有了良好的效果。但是隨著現(xiàn)代社會(huì)人們生活節(jié)奏的加快,其興趣需求的變化頻率也隨之加快,如何更加敏銳靈活的感知用戶的興趣變化,這些方面也是以后需要繼續(xù)研究的方向。
參考文獻(xiàn)(References):
[1] Goldberg D, Nichols D, Oki B M, et al.Using collaborative filtering to weavr an information tapestry[J].Communications of the ACM.December,1992.35(12):61-70
[2] 查大元.個(gè)性化推薦系統(tǒng)的研究和實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011.28(10):7-8,42
[3] Tao Jun, Zhang Ning. Collaborative Filtering Algorithm Based on Interest-Class[J]. Computer System&Applications;,2011.5:55-59
[4] 任磊.推薦系統(tǒng)關(guān)鍵技術(shù)研究[D].華東師范大學(xué),2012.
[5] 孫小華.協(xié)同過濾系統(tǒng)的稀疏性與冷啟動(dòng)問題研究[D].浙江大學(xué),2005.
[6] Shan H,Kattge J,Reich P,et al.Gap Filling in the Plant Kingdom-Trait Prediction Using Hierarchical Probabilistic Matrix Factorization[J]. arXiv preprint arXiv:1206.6439,2012.