嚴春燕+戴仕明



摘 要: 互聯網產生的海量信息帶來了“信息超載”的問題。文章基于協同過濾算法對用戶喜好進行了研究。闡述了協同過濾的基本思想,對用戶喜好數據的采集及預處理過程進行了研究;在數據分析過程中提出幾種常用的計算相似度的方法并進行了比較;研究了協同過濾算法的兩個分支的不同適用場景,并與基于內容的算法進行比較,對現有算法存在的不足提出了改進。
關鍵詞: 協同過濾; 用戶喜好; 數據采集; 預處理; 相似度
中圖分類號:TP391.9 文獻標志碼:A 文章編號: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 引言
隨著互聯網的快速發展,數據信息正在成指數量級增長,而用戶很難從中找到自己感興趣的內容,這就形成了“信息超載(Information overload)[1]”的問題。為了很好地解決用戶需求與互聯網龐大的數據之間的矛盾,推薦算法是解決這個矛盾的主要技術。
協同過濾算法[2]是目前最廣泛應用的算法。協同過濾算法常被用于分析用戶潛在感興趣的物品,這些依據來自于其他相似用戶對產品的喜好分析。簡單來說就是:物以類聚,人以群分。
1 協同過濾的基本思想
協同過濾算法最早出現于1992年,被用于郵件過濾系統,是目前較為流行的推薦算法。協同過濾具有預測和推薦的功能,協同過濾算法的出現標志著推薦系統的產生。協同過濾也被認為是集體智慧[2]的典范,不需要對項目進行特別處理,而是通過用戶建立起物品與物品之間的聯系,喜歡相同物品的用戶之間更有可能具有相同的喜好。協同過濾算法分為兩類,一類是基于用戶(User-based)的協同過濾算法,另一類是基于物品(Item-based)的協同過濾算法。
1.1 基于用戶的協同過濾算法
基于用戶的協同過濾算法[3]的基本原理是根據所有用戶對物品的評分,發現與當前用戶喜好相似的其他用戶,在應用中一般采用K-最近鄰(K-Nearest-
Neighbor,KNN)算法[4],然后,基于這些相似用戶的喜好信息,為當前用戶進行推薦。這個算法主要包括兩步:
⑴ 找到和當前用戶喜好相似的用戶集,計算兩個用戶的喜好相似度;
⑵ 找到這個用戶集中用戶喜歡的,且當前用戶沒有聽說過的物品推薦給當前用戶。
1.2 基于物品的協同過濾算法
基于物品的協同過濾算法[5]的基本原理是根據用戶的所有歷史喜好數據來計算物品的相似度,然后把與用戶喜歡的物品相似的物品推薦給用戶。這個算法主要包括兩步:
⑴ 計算物品之間的相似度;
⑵ 根據物品的相似度和用戶的歷史行為給用戶推薦物品。
2 數據采集及預處理過程
2.1 數據采集的方式
用戶喜好數據的采集可以從下面表1這幾種用戶行為方式中發現用戶喜好,并通過分組和加權這兩種不同的組合方式對用戶行為進行處理。
⑴ 以Web日志的方式。從用戶給網站服務器發出http請求開始,網站服務器就會在Log文件中添加一條記錄,記錄遠程主機名(或IP地址)、發送請求的日期、請求返回的狀態等。隨后網站服務器會以http形式將頁面返回到用戶的瀏覽器內,之后會有專門的處理服務器對大量Log文件進行處理,產生網站分析報表,如圖1所示。
[網站服務器][瀏覽器網頁][處理服務器][網站分析報] [http請求][http形式返回][Log文件]
不同的數據采集方式有不同的優缺點,表2對三鐘數據采集方式的優缺點進行了詳細的比較,為各網站開發者在選擇數據采集方式時作為參考。
2.2 數據預處理
大量的原始數據中存在著很多模糊的、重復的、不完整的、有噪聲的數據,會嚴重影響到數據分析的執行效率,甚至可能導致最后結果誤差很大,因此,在進行數據分析之前,需要對原始數據進行預處理,提高數據的質量。數據預處理主要包括數據清理,數據集成,數據變換與數據規約等技術。如圖4所示:
3 數據分析
3.1 相似度的計算
預處理之后,得到了用戶喜好,再通過用戶喜好來計算相似用戶或物品,然后基于用戶或者物品進行推薦?;谟脩艉突谖锲愤@兩種算法都需要計算相似度,下面介紹幾種常用的相似度計算方法:
⑴ 歐幾里得距離
假設X,Y是n維空間的兩個點,
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
則它們的歐幾里德距離:
則相似度,需要在歐幾里得距離上進行一個轉換:
⑵ 皮爾遜相關系數(Pearson correlation coefficient)
皮爾遜相關系數常用于計算兩個變量之間的緊密程度,取值在[-1,+1]之間,相關系數的絕對值越大,相關性越強,相關系數大于0是正相關,相關系數小于0是負相關。
假設X,Y是n維空間的兩個點,
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
則它們的皮爾遜相關系數:
⑶ 余弦相似度(Cosine similarity)
用空間向量中兩個向量夾角的余弦值,來表示兩個向量之間的差異。取值在[-1,1]之間,余弦值越接近1,兩個向量夾角越小,越相似。
假設X,Y是兩個n維向量,
X=(x1,x2,x3,…,xn);
Y=(y1,y2,y3,…,yn);
則它們的余弦相似度:
3.2 基于用戶和基于物品的適用場景
根據User-based基本原理可以看出User-based更加社會化,更傾向于推薦相似用戶中的熱點。在新聞類網站中,用戶喜好往往是其次,熱門程度和時效性是新聞推薦的重點,所以User-based給用戶推薦和他有相同喜好的人關注的新聞,這樣既保證了熱點和時效性,又兼顧了個性化。
但在圖書推薦系統、電子商務和電影網站等方面,用戶數量往往遠遠大于物品數量,如果User-based需要消耗更大的空間,此時基于Item-based能發揮更大的作用。因為在這些網站中,用戶的喜好一般比較固定,Item-based能更好地給用戶推薦相似物品,增加用戶對推薦系統的信任度。
3.3 與基于內容算法進行比較
基于內容算法[6]的核心思想是依據物品或內容的元數據,再通過元數據尋找物品或內容的相似度,然后基于用戶歷史喜好記錄,給用戶推薦相似物品?;趦热莸乃惴ㄖ豢紤]了物品本身的性質,將物品按標簽方式形成集合,基于用戶的歷史喜好記錄推薦相似物品,如果你選擇了集合中的一個,則向你推薦集合中的其他物品。而協同過濾算法融合了集體智慧的思想,在大量用戶行為中尋找答案,既基于用戶購買的歷史記錄,又基于用戶的相似度來推薦物品,這樣基于協同算法推薦的精確度就會更高。
3.4 現有算法的不足以及改進
本文的協同過濾算法,在實際推薦系統中存在冷啟動問題,在基于用戶的協同過濾算法中存在用戶活躍度問題[7],以及在基于物品的協同過濾算法中存在物品流行度問題[7]。為解決這三類問題,提出以下幾種改進方法。
對于冷啟動問題,可以分為新用戶冷啟動問題、新物品冷啟動問題以及新系統冷啟動問題。
⑴ 對于新用戶冷啟動問題,可以把熱門排行結果推薦給新用戶,待用戶數據充足之后,再進行個性化推薦。
⑵ 對于物品冷啟動問題,可以通過計算物品內容信息來得到物品相似度,再給用戶推薦與內容相似的物品??梢詫⑽锲繁硎境梢粋€關鍵詞向量,將這些專有名詞和其他一些重要詞組成關鍵詞集合,最后對集合中的關鍵字進行排名,再用TF-IDF公式[8]計算關鍵詞的權重,最后生成關鍵詞向量。
⑶ 對于新系統冷啟動問題,在沒有用戶行為數據和物品內容信息計算相似度的情況下,可以使用專家標記的方式。
用戶活躍度問題改進,用戶活躍度能隱式地推斷用戶對未知物品喜好的可能性。本文定義用戶活躍度與其瀏覽過的物品數量成正比,那么活躍度低的用戶產生的用戶行為,對計算物品相似度更加有作用,這就需要懲罰用戶的活躍度。
物品流行度問題改進,物品流行度也可以隱式地表示用戶喜好。本文定義物品流行度與瀏覽該物品的用戶數量成正比,那么冷門物品被瀏覽更能計算出用戶的相似度,因此需要懲罰物品的流行度。
4 結束語
本文從數據采集、數據預處理、相似度計算、算法適用場景這幾方面進行了深入的研究,并將基于內容算法與協同過濾算法進行了比較,之后對現有算法存在的不足進行改進,提高了算法的準確度和覆蓋率。下一步將研究如何將基于用戶和基于物品的協同過濾算法根據不同的權重結合起來,在考慮用戶相似度的同時也兼顧物品的相似度,以此提高推薦的精確度。
參考文獻(References):
[1] 李書寧.互聯網信息環境中信息超載問題研究[J].情報科學,
2005.10:149-152
[2] 項亮.推薦系統實踐(第3版)[M].人民郵電出版社,2012.
[3] 榮輝桂,火生旭,胡春華,莫進俠.基于用戶相似度的協同過濾
推薦算法[J].通信學報,2014.2:16-24
[4] 余小鵬,周德翼.一種自適應k-最近鄰算法的研究[J].計算機
應用研究,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] 陳潔敏,湯庸,李建國,蔡奕彬.個性化推薦算法研究[J].華南師
范大學學報(自然科學版),2014.5:8-15
[7] 王錦坤,姜元春,孫見山,孫春華.考慮用戶活躍度和項目流行
度的基于項目最近鄰的協同過濾算法[J].計算機科學,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