張雙慶
摘要:文章首先介紹現(xiàn)存的基于用戶的協(xié)同過濾推薦算法,分析算法存在的問題。然后在此基礎(chǔ)上提出一種新的算法,新算法考察不同用戶對(duì)相同物品評(píng)分的差值,以此度量用戶與用戶的相似度。由于新算法只關(guān)心不同用戶對(duì)相同物品評(píng)分,因此既解決了數(shù)據(jù)稀疏導(dǎo)致的算法準(zhǔn)確度下降問題,同時(shí),又提升了算法效率。最后,利用MoiveLens數(shù)據(jù)集中的測(cè)試數(shù)據(jù)集對(duì)新算法和老算法進(jìn)行對(duì)比,從不同的維度比較新老算法的優(yōu)劣勢(shì)。
關(guān)鍵詞:推薦算法;協(xié)同過濾;數(shù)據(jù)稀疏;推薦效率;推薦精度
中圖分類號(hào):TP312? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? 文章編號(hào):1009-3044(2019)01-0019-03
User-based Collaborative Filtering Recommendation Algorithm
ZHANG Shuang-qing
(Shanghai University, Shanghai 200444, China)
Abstract: The article first introduces the existing user-based collaborative filtering recommendation algorithm and analyzes the problems of the algorithm. Then, based on this, a new algorithm is proposed. The new algorithm examines the difference between the scores of different users on the same item, and measures the similarity between the user and the user. Since the new algorithm only cares about the scores of the same items by different users, it not only solves the problem of the accuracy of the algorithm caused by data sparseness, but also improves the efficiency of the algorithm. Finally, the new algorithm and the old algorithm are compared by using the test data set in the MoiveLens data set to compare the advantages and disadvantages of the old and new algorithms from different dimensions.
Key words:recommended algorithm; collaborative filtering; data sparse; recommended efficiency; recommended accuracy
1 引言
截至2018年6月,我國(guó)網(wǎng)民規(guī)模達(dá)8.02億,互聯(lián)網(wǎng)普及率為57.7%;我國(guó)手機(jī)網(wǎng)民規(guī)模達(dá)7.88億,網(wǎng)民通過手機(jī)接入互聯(lián)網(wǎng)的比例高達(dá)98.3%[1]。隨著互聯(lián)網(wǎng)特別是移動(dòng)互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)爆炸式增長(zhǎng)。但是,人類所能接受和處理的數(shù)據(jù)卻沒有顯著增長(zhǎng),信息過載[2]已成為常態(tài)。目前解決信息過載的方式有兩種,一種是搜索引擎,另一種就是推薦系統(tǒng)[3]。推薦系統(tǒng)對(duì)用戶的歷史信息等進(jìn)行研究與挖掘,分析不同用戶的喜好,預(yù)測(cè)用戶對(duì)產(chǎn)品或信息的評(píng)分,從而推薦用戶評(píng)分較高的產(chǎn)品給用戶。好的推薦系統(tǒng)不僅能改善用戶體驗(yàn),還能提高服務(wù)效率。目前,推薦系統(tǒng)在電子商務(wù)、社交網(wǎng)絡(luò)、音視頻應(yīng)用等領(lǐng)域大展身手,不少新型應(yīng)用正是基于推薦系統(tǒng)建立起來的。
推薦系統(tǒng)中最重要的部分是推薦算法,它決定了推薦結(jié)果的好壞和系統(tǒng)性能的優(yōu)劣,是推薦系統(tǒng)至關(guān)重要的部分。常用的推薦算法主要包括基于內(nèi)容(content-based)推薦算法、協(xié)同過濾(collaborative filtering)推薦算法、基于人口統(tǒng)計(jì)學(xué)(demographic)推薦算法、基于知識(shí)(knowledge-based)推薦算法等[4]。協(xié)同過濾算法主要利用已有用戶群過去的行為或者意見預(yù)測(cè)當(dāng)前用戶可能喜歡或者對(duì)那些物品感興趣。此類算法在業(yè)界已經(jīng)廣泛應(yīng)用,本文主要從以此類算法為研究對(duì)象。
在大數(shù)據(jù)時(shí)代,數(shù)據(jù)的稀疏性普遍存在于各個(gè)系統(tǒng)中。數(shù)據(jù)稀疏[5]會(huì)導(dǎo)致兩個(gè)問題:推薦結(jié)果不準(zhǔn)確和推薦算法效率變低。大量稀疏的數(shù)據(jù)不僅占用計(jì)算時(shí)間,且對(duì)推薦結(jié)果產(chǎn)生噪聲干擾。顯然,這些是我們不愿意看到的。
本文提出一種新的算法,新算法考察不同用戶對(duì)相同物品評(píng)分的差值,以此度量用戶與用戶的相似度。由于新算法只關(guān)心不同用戶對(duì)相同物品評(píng)分,因此既解決了數(shù)據(jù)稀疏導(dǎo)致的算法準(zhǔn)確度下降問題,同時(shí),又提升了算法效率。
2 基于用戶協(xié)同過濾推薦算法與改進(jìn)
協(xié)同推薦算法主要有兩種,基于用戶的最近鄰?fù)扑](user-based nearest neighbor recommendation)算法、基于物品的余弦相似度(cosine similarity)算法[6]。本文主要討論基于用戶的近鄰?fù)扑]算法。
2.1 基于用戶的最近鄰?fù)扑]
表1顯示了當(dāng)前用戶Amy與其他用戶對(duì)物品的評(píng)分?jǐn)?shù)據(jù),評(píng)分范圍為1-5分,用戶給予物品評(píng)分為5則表示用戶喜歡此物品,評(píng)分為1代表用戶不喜歡此物品。在此表格中,推薦系統(tǒng)的任務(wù)是確定Amy是否喜歡她從來未見過的物品5(I5),為此,我們需要找到那些與Amy有著類似偏好的用戶,然后用這組用戶對(duì)物品5(I5)的評(píng)分來預(yù)測(cè)Amy是否喜歡此物品。
由公式1我們得知,用戶a,b的相似度由用戶a與用戶b評(píng)論過的所有物品的分?jǐn)?shù)決定。當(dāng)物品數(shù)量急劇增加時(shí),用戶感興趣的物品卻增長(zhǎng)緩慢,數(shù)據(jù)稀疏性問題開始顯現(xiàn)。基于用戶的最近鄰?fù)扑]算法的效率和準(zhǔn)確度下降。為此,我們提出了一種新的算法,以解決數(shù)據(jù)稀疏導(dǎo)致的算法效率與準(zhǔn)確度下降問題。
2.2 一種基于用戶評(píng)分差值的相似度算法
事實(shí)上,每個(gè)用戶的評(píng)論數(shù)與物品量可能存在數(shù)十個(gè)數(shù)量級(jí)的差距。為此,我們采用了一種新的算法來解決這個(gè)問題,新算法主要考察兩個(gè)用戶共同評(píng)論過的物品,用戶對(duì)相同物品評(píng)分的差值決定用戶的相似度。新算法公式如下:
2.3 驗(yàn)證兩種算法的優(yōu)劣性
本實(shí)驗(yàn)選用MovieLens[8] 100K 數(shù)據(jù)集對(duì)算法進(jìn)行訓(xùn)練和驗(yàn)證。數(shù)據(jù)集包括1000名用戶對(duì)1700部電影的100000個(gè)評(píng)分。數(shù)據(jù)分為2部分,一部分是訓(xùn)練數(shù)據(jù),另一部分是驗(yàn)證數(shù)據(jù)。通常使用平均絕對(duì)誤差(MAE)和均方根誤差(RMSE)來評(píng)估推薦算法的準(zhǔn)確性。
其中,f(u,i)是推薦算法計(jì)算出的用戶u對(duì)物品i的評(píng)分,rui是用戶u對(duì)物品i的真實(shí)評(píng)分,Rtest是測(cè)試集。
本文使用Python語(yǔ)言實(shí)現(xiàn)算法并測(cè)試測(cè)試算法的準(zhǔn)確性和效率。Python是一種動(dòng)態(tài)的、面向?qū)ο蟮哪_本語(yǔ)言,最初被設(shè)計(jì)用于編寫自動(dòng)化腳本(shell),隨著版本的不斷更新和語(yǔ)言新功能的添加,越來越多被用于獨(dú)立的、大型項(xiàng)目的開發(fā)[10]。以下是算法的實(shí)現(xiàn)偽代碼:
def getSimilar(u1,u2):
u1M = u1評(píng)論的電影集合
u2M = u2評(píng)論的電影集合
u1u2M = u1評(píng)論的電影集合<E:\知網(wǎng)文件\電腦\電腦01-02\電腦01\1xs201901\Image\image29.png>u2評(píng)論的電影集合
u_uPower = 0
k=0.5 #參數(shù)K
for m in u1u2M:
u1mR = u1對(duì)電影m的評(píng)分
u2mR = u2對(duì)電影m的評(píng)分
u_uR = 1-abs(float(u1mR)-float(u2mR))/2
u_uPower += u_uR
u_uSim = u_uPower/abs(u_uPower)*(1-(1-k)**abs(u_uPower))
return u_uSim
實(shí)驗(yàn)結(jié)果數(shù)據(jù)如下:
由圖1、圖2可知,當(dāng)鄰居數(shù)量較少時(shí),基于用戶的鄰域算法準(zhǔn)確度與新算法準(zhǔn)確度基本相同,但當(dāng)數(shù)據(jù)量增大,鄰居數(shù)量增多時(shí),基于新算法的優(yōu)勢(shì)就體現(xiàn)了出來,新算法的誤差小于基于近鄰?fù)扑]算法。由于新算法只考察用戶共同評(píng)論過的物品,所有當(dāng)數(shù)據(jù)稀疏度增加時(shí),算法耗時(shí)并未隨之增加。在數(shù)據(jù)稀疏時(shí),新算法的效率高于鄰域算法。
3 結(jié)論
當(dāng)k取不同值時(shí),推薦算法給出的結(jié)果不盡相同。我們可以通過大量數(shù)據(jù)訓(xùn)練算法,找出對(duì)應(yīng)最適合系統(tǒng)的k值,以求算法在精度方面達(dá)到系統(tǒng)的要求??傮w來說,新算法在準(zhǔn)確性和時(shí)效性方面有所提升。同時(shí),也存在一些問題,如當(dāng)鄰居用戶大量提升時(shí),公式3、4中的<E:\知網(wǎng)文件\電腦\電腦01-02\電腦01\1xs201901\Image\image32.png>項(xiàng)會(huì)快速增加,導(dǎo)致用戶相似度趨近于1。此時(shí)我們需要對(duì)<E:\知網(wǎng)文件\電腦\電腦01-02\電腦01\1xs201901\Image\image32.png>進(jìn)行求導(dǎo),以減小數(shù)據(jù)范圍對(duì)推薦精度的影響。
參考文獻(xiàn):
[1] 中國(guó)互聯(lián)網(wǎng)信息中心.第42次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》[EB/OL]. http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201808/t20180820_70488.htm.
[2] Landhuis E. Scientific literature: Information overload[J]. Nature, 2016, 535(7612):457-458.
[3] Wei J, He J, Chen K, et al. Collaborative Filtering and Deep Learning Based Recommendation System For Cold Start Items[J]. Expert Systems with Applications, 2017, 69:29-39.
[4] Ricci F, Rokach L, Shapira B, et al. Recommender Systems Handbook[M].Springer US, 2011.
[5] Shepperd M, Cartwright M. Predicting with sparse data[J]. 2001, 27(11):987-998.
[6] 弗朗西斯科·里奇,等,李艷民.推薦系統(tǒng)[M].機(jī)械工業(yè)出版社,2015.
[7] 王國(guó)霞, 劉賀平. 個(gè)性化推薦系統(tǒng)綜述[J].計(jì)算機(jī)工程與應(yīng)用,2012, 48(7):66-76.
[8] Harper F M, Konstan J A. The MovieLens Datasets: History and Context[M].ACM, 2015.
[9] 朱郁筱,呂琳媛.推薦系統(tǒng)評(píng)價(jià)指標(biāo)綜述[J].電子科技大學(xué)學(xué)報(bào),2012, 41(2):163-175.
[10] 百度百科. Python(計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言)[EB/OL]. https://baike.baidu.com/item/Python/407313.