嚴(yán)春燕+戴仕明
摘 要: 互聯(lián)網(wǎng)產(chǎn)生的海量信息帶來(lái)了“信息超載”的問(wèn)題。文章基于協(xié)同過(guò)濾算法對(duì)用戶喜好進(jìn)行了研究。闡述了協(xié)同過(guò)濾的基本思想,對(duì)用戶喜好數(shù)據(jù)的采集及預(yù)處理過(guò)程進(jìn)行了研究;在數(shù)據(jù)分析過(guò)程中提出幾種常用的計(jì)算相似度的方法并進(jìn)行了比較;研究了協(xié)同過(guò)濾算法的兩個(gè)分支的不同適用場(chǎng)景,并與基于內(nèi)容的算法進(jìn)行比較,對(duì)現(xiàn)有算法存在的不足提出了改進(jìn)。
關(guān)鍵詞: 協(xié)同過(guò)濾; 用戶喜好; 數(shù)據(jù)采集; 預(yù)處理; 相似度
中圖分類(lèi)號(hào):TP391.9 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2017)07-56-04
Research on user preferences using collaborative filtering algorithm
Yan Chunyan1, Dai Shiming2
(1. College of Computer and Information, Jiangxi Agricultural University, Nanchang, Jiangxi 330045, China;
2. College of Software, Jiangxi Agricultural University)
Abstract: The massive information generated by the Internet brings the problem of "information overload". This paper studies user preferences by using collaborative filtering algorithm; Describes the basic idea of collaborative filtering, and studies the acquisition and pretreatment of user preference data; in the process of data analysis, several common used similarity algorithms are proposed and compared; the two branches of the collaborative filtering algorithm in different applicable scenes are studied, and compared with the content-based algorithm to improve the existing algorithms.
Key words: collaborative filtering; user preferences; data acquisition; pretreatment; similarity
0 引言
隨著互聯(lián)網(wǎng)的快速發(fā)展,數(shù)據(jù)信息正在成指數(shù)量級(jí)增長(zhǎng),而用戶很難從中找到自己感興趣的內(nèi)容,這就形成了“信息超載(Information overload)[1]”的問(wèn)題。為了很好地解決用戶需求與互聯(lián)網(wǎng)龐大的數(shù)據(jù)之間的矛盾,推薦算法是解決這個(gè)矛盾的主要技術(shù)。
協(xié)同過(guò)濾算法[2]是目前最廣泛應(yīng)用的算法。協(xié)同過(guò)濾算法常被用于分析用戶潛在感興趣的物品,這些依據(jù)來(lái)自于其他相似用戶對(duì)產(chǎn)品的喜好分析。簡(jiǎn)單來(lái)說(shuō)就是:物以類(lèi)聚,人以群分。
1 協(xié)同過(guò)濾的基本思想
協(xié)同過(guò)濾算法最早出現(xiàn)于1992年,被用于郵件過(guò)濾系統(tǒng),是目前較為流行的推薦算法。協(xié)同過(guò)濾具有預(yù)測(cè)和推薦的功能,協(xié)同過(guò)濾算法的出現(xiàn)標(biāo)志著推薦系統(tǒng)的產(chǎn)生。協(xié)同過(guò)濾也被認(rèn)為是集體智慧[2]的典范,不需要對(duì)項(xiàng)目進(jìn)行特別處理,而是通過(guò)用戶建立起物品與物品之間的聯(lián)系,喜歡相同物品的用戶之間更有可能具有相同的喜好。協(xié)同過(guò)濾算法分為兩類(lèi),一類(lèi)是基于用戶(User-based)的協(xié)同過(guò)濾算法,另一類(lèi)是基于物品(Item-based)的協(xié)同過(guò)濾算法。
1.1 基于用戶的協(xié)同過(guò)濾算法
基于用戶的協(xié)同過(guò)濾算法[3]的基本原理是根據(jù)所有用戶對(duì)物品的評(píng)分,發(fā)現(xiàn)與當(dāng)前用戶喜好相似的其他用戶,在應(yīng)用中一般采用K-最近鄰(K-Nearest-
Neighbor,KNN)算法[4],然后,基于這些相似用戶的喜好信息,為當(dāng)前用戶進(jìn)行推薦。這個(gè)算法主要包括兩步:
⑴ 找到和當(dāng)前用戶喜好相似的用戶集,計(jì)算兩個(gè)用戶的喜好相似度;
⑵ 找到這個(gè)用戶集中用戶喜歡的,且當(dāng)前用戶沒(méi)有聽(tīng)說(shuō)過(guò)的物品推薦給當(dāng)前用戶。
1.2 基于物品的協(xié)同過(guò)濾算法
基于物品的協(xié)同過(guò)濾算法[5]的基本原理是根據(jù)用戶的所有歷史喜好數(shù)據(jù)來(lái)計(jì)算物品的相似度,然后把與用戶喜歡的物品相似的物品推薦給用戶。這個(gè)算法主要包括兩步:
⑴ 計(jì)算物品之間的相似度;
⑵ 根據(jù)物品的相似度和用戶的歷史行為給用戶推薦物品。
2 數(shù)據(jù)采集及預(yù)處理過(guò)程
2.1 數(shù)據(jù)采集的方式
用戶喜好數(shù)據(jù)的采集可以從下面表1這幾種用戶行為方式中發(fā)現(xiàn)用戶喜好,并通過(guò)分組和加權(quán)這兩種不同的組合方式對(duì)用戶行為進(jìn)行處理。
⑴ 以Web日志的方式。從用戶給網(wǎng)站服務(wù)器發(fā)出http請(qǐng)求開(kāi)始,網(wǎng)站服務(wù)器就會(huì)在Log文件中添加一條記錄,記錄遠(yuǎn)程主機(jī)名(或IP地址)、發(fā)送請(qǐng)求的日期、請(qǐng)求返回的狀態(tài)等。隨后網(wǎng)站服務(wù)器會(huì)以http形式將頁(yè)面返回到用戶的瀏覽器內(nèi),之后會(huì)有專(zhuān)門(mén)的處理服務(wù)器對(duì)大量Log文件進(jìn)行處理,產(chǎn)生網(wǎng)站分析報(bào)表,如圖1所示。
[網(wǎng)站服務(wù)器][瀏覽器網(wǎng)頁(yè)][處理服務(wù)器][網(wǎng)站分析報(bào)] [http請(qǐng)求][http形式返回][Log文件]
不同的數(shù)據(jù)采集方式有不同的優(yōu)缺點(diǎn),表2對(duì)三鐘數(shù)據(jù)采集方式的優(yōu)缺點(diǎn)進(jìn)行了詳細(xì)的比較,為各網(wǎng)站開(kāi)發(fā)者在選擇數(shù)據(jù)采集方式時(shí)作為參考。
2.2 數(shù)據(jù)預(yù)處理
大量的原始數(shù)據(jù)中存在著很多模糊的、重復(fù)的、不完整的、有噪聲的數(shù)據(jù),會(huì)嚴(yán)重影響到數(shù)據(jù)分析的執(zhí)行效率,甚至可能導(dǎo)致最后結(jié)果誤差很大,因此,在進(jìn)行數(shù)據(jù)分析之前,需要對(duì)原始數(shù)據(jù)進(jìn)行預(yù)處理,提高數(shù)據(jù)的質(zhì)量。數(shù)據(jù)預(yù)處理主要包括數(shù)據(jù)清理,數(shù)據(jù)集成,數(shù)據(jù)變換與數(shù)據(jù)規(guī)約等技術(shù)。如圖4所示:
3 數(shù)據(jù)分析
3.1 相似度的計(jì)算
預(yù)處理之后,得到了用戶喜好,再通過(guò)用戶喜好來(lái)計(jì)算相似用戶或物品,然后基于用戶或者物品進(jìn)行推薦。基于用戶和基于物品這兩種算法都需要計(jì)算相似度,下面介紹幾種常用的相似度計(jì)算方法:
⑴ 歐幾里得距離
假設(shè)X,Y是n維空間的兩個(gè)點(diǎn),
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
則它們的歐幾里德距離:
則相似度,需要在歐幾里得距離上進(jìn)行一個(gè)轉(zhuǎn)換:
⑵ 皮爾遜相關(guān)系數(shù)(Pearson correlation coefficient)
皮爾遜相關(guān)系數(shù)常用于計(jì)算兩個(gè)變量之間的緊密程度,取值在[-1,+1]之間,相關(guān)系數(shù)的絕對(duì)值越大,相關(guān)性越強(qiáng),相關(guān)系數(shù)大于0是正相關(guān),相關(guān)系數(shù)小于0是負(fù)相關(guān)。
假設(shè)X,Y是n維空間的兩個(gè)點(diǎn),
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
則它們的皮爾遜相關(guān)系數(shù):
⑶ 余弦相似度(Cosine similarity)
用空間向量中兩個(gè)向量夾角的余弦值,來(lái)表示兩個(gè)向量之間的差異。取值在[-1,1]之間,余弦值越接近1,兩個(gè)向量夾角越小,越相似。
假設(shè)X,Y是兩個(gè)n維向量,
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
則它們的余弦相似度:
3.2 基于用戶和基于物品的適用場(chǎng)景
根據(jù)User-based基本原理可以看出User-based更加社會(huì)化,更傾向于推薦相似用戶中的熱點(diǎn)。在新聞?lì)惥W(wǎng)站中,用戶喜好往往是其次,熱門(mén)程度和時(shí)效性是新聞推薦的重點(diǎn),所以User-based給用戶推薦和他有相同喜好的人關(guān)注的新聞,這樣既保證了熱點(diǎn)和時(shí)效性,又兼顧了個(gè)性化。
但在圖書(shū)推薦系統(tǒng)、電子商務(wù)和電影網(wǎng)站等方面,用戶數(shù)量往往遠(yuǎn)遠(yuǎn)大于物品數(shù)量,如果User-based需要消耗更大的空間,此時(shí)基于Item-based能發(fā)揮更大的作用。因?yàn)樵谶@些網(wǎng)站中,用戶的喜好一般比較固定,Item-based能更好地給用戶推薦相似物品,增加用戶對(duì)推薦系統(tǒng)的信任度。
3.3 與基于內(nèi)容算法進(jìn)行比較
基于內(nèi)容算法[6]的核心思想是依據(jù)物品或內(nèi)容的元數(shù)據(jù),再通過(guò)元數(shù)據(jù)尋找物品或內(nèi)容的相似度,然后基于用戶歷史喜好記錄,給用戶推薦相似物品。基于內(nèi)容的算法只考慮了物品本身的性質(zhì),將物品按標(biāo)簽方式形成集合,基于用戶的歷史喜好記錄推薦相似物品,如果你選擇了集合中的一個(gè),則向你推薦集合中的其他物品。而協(xié)同過(guò)濾算法融合了集體智慧的思想,在大量用戶行為中尋找答案,既基于用戶購(gòu)買(mǎi)的歷史記錄,又基于用戶的相似度來(lái)推薦物品,這樣基于協(xié)同算法推薦的精確度就會(huì)更高。
3.4 現(xiàn)有算法的不足以及改進(jìn)
本文的協(xié)同過(guò)濾算法,在實(shí)際推薦系統(tǒng)中存在冷啟動(dòng)問(wèn)題,在基于用戶的協(xié)同過(guò)濾算法中存在用戶活躍度問(wèn)題[7],以及在基于物品的協(xié)同過(guò)濾算法中存在物品流行度問(wèn)題[7]。為解決這三類(lèi)問(wèn)題,提出以下幾種改進(jìn)方法。
對(duì)于冷啟動(dòng)問(wèn)題,可以分為新用戶冷啟動(dòng)問(wèn)題、新物品冷啟動(dòng)問(wèn)題以及新系統(tǒng)冷啟動(dòng)問(wèn)題。
⑴ 對(duì)于新用戶冷啟動(dòng)問(wèn)題,可以把熱門(mén)排行結(jié)果推薦給新用戶,待用戶數(shù)據(jù)充足之后,再進(jìn)行個(gè)性化推薦。
⑵ 對(duì)于物品冷啟動(dòng)問(wèn)題,可以通過(guò)計(jì)算物品內(nèi)容信息來(lái)得到物品相似度,再給用戶推薦與內(nèi)容相似的物品。可以將物品表示成一個(gè)關(guān)鍵詞向量,將這些專(zhuān)有名詞和其他一些重要詞組成關(guān)鍵詞集合,最后對(duì)集合中的關(guān)鍵字進(jìn)行排名,再用TF-IDF公式[8]計(jì)算關(guān)鍵詞的權(quán)重,最后生成關(guān)鍵詞向量。
⑶ 對(duì)于新系統(tǒng)冷啟動(dòng)問(wèn)題,在沒(méi)有用戶行為數(shù)據(jù)和物品內(nèi)容信息計(jì)算相似度的情況下,可以使用專(zhuān)家標(biāo)記的方式。
用戶活躍度問(wèn)題改進(jìn),用戶活躍度能隱式地推斷用戶對(duì)未知物品喜好的可能性。本文定義用戶活躍度與其瀏覽過(guò)的物品數(shù)量成正比,那么活躍度低的用戶產(chǎn)生的用戶行為,對(duì)計(jì)算物品相似度更加有作用,這就需要懲罰用戶的活躍度。
物品流行度問(wèn)題改進(jìn),物品流行度也可以隱式地表示用戶喜好。本文定義物品流行度與瀏覽該物品的用戶數(shù)量成正比,那么冷門(mén)物品被瀏覽更能計(jì)算出用戶的相似度,因此需要懲罰物品的流行度。
4 結(jié)束語(yǔ)
本文從數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、相似度計(jì)算、算法適用場(chǎng)景這幾方面進(jìn)行了深入的研究,并將基于內(nèi)容算法與協(xié)同過(guò)濾算法進(jìn)行了比較,之后對(duì)現(xiàn)有算法存在的不足進(jìn)行改進(jìn),提高了算法的準(zhǔn)確度和覆蓋率。下一步將研究如何將基于用戶和基于物品的協(xié)同過(guò)濾算法根據(jù)不同的權(quán)重結(jié)合起來(lái),在考慮用戶相似度的同時(shí)也兼顧物品的相似度,以此提高推薦的精確度。
參考文獻(xiàn)(References):
[1] 李書(shū)寧.互聯(lián)網(wǎng)信息環(huán)境中信息超載問(wèn)題研究[J].情報(bào)科學(xué),
2005.10:149-152
[2] 項(xiàng)亮.推薦系統(tǒng)實(shí)踐(第3版)[M].人民郵電出版社,2012.
[3] 榮輝桂,火生旭,胡春華,莫進(jìn)俠.基于用戶相似度的協(xié)同過(guò)濾
推薦算法[J].通信學(xué)報(bào),2014.2:16-24
[4] 余小鵬,周德翼.一種自適應(yīng)k-最近鄰算法的研究[J].計(jì)算機(jī)
應(yīng)用研究,2006.2:70-72
[5] A Collaborative Filtering Recommendation Algorithm
Based on Item and Cloud Model[J]. Wuhan University Journal of Natural Sciences,2011.1:16-20
[6] 陳潔敏,湯庸,李建國(guó),蔡奕彬.個(gè)性化推薦算法研究[J].華南師
范大學(xué)學(xué)報(bào)(自然科學(xué)版),2014.5:8-15
[7] 王錦坤,姜元春,孫見(jiàn)山,孫春華.考慮用戶活躍度和項(xiàng)目流行
度的基于項(xiàng)目最近鄰的協(xié)同過(guò)濾算法[J].計(jì)算機(jī)科學(xué),2016.12:158-162
[8] Belkin N,Croft B. Information filtering and information
re-trieval[J]. Communications of the ACM,1992.35(12):29-37