武翔
【摘 要】在傳統(tǒng)圖書館服務中,用戶主要通過搜索來獲取所需信息,這是一種被動的服務方式,只能滿足用戶的基本需求。和搜索相比,推薦系統(tǒng)能通過研究用戶的歷史行為,發(fā)現(xiàn)用戶的興趣偏好,據(jù)此主動為用戶提供推薦服務。不但可以使用戶獲得滿意的結(jié)果,還能引導用戶發(fā)現(xiàn)自己的潛在需求。將推薦技術應用于圖書館系統(tǒng),是圖書館實現(xiàn)信息服務的有效手段,可以有效提高圖書館的服務質(zhì)量和圖書資源的利用率。本文提出一種多算法并行的混合推薦方法來產(chǎn)生推薦結(jié)果,滿足業(yè)務需求。
【關鍵詞】推薦系統(tǒng);混合推薦;數(shù)據(jù)挖掘;圖書推薦;算法
一、智能推薦系統(tǒng)概述
(一)什么是推薦系統(tǒng)
隨著信息技術和互聯(lián)網(wǎng)的發(fā)展,人們逐漸從信息匱乏的時代走入了信息過載的時代。在這個時代,無論是信息消費者還是信息生產(chǎn)者都遇到了很大的挑戰(zhàn):作為信息消費者,如何從大量信息中找到自己感興趣的信息是一件非常困難的事情;作為信息的生成者,如何讓自己生產(chǎn)的信息脫穎而出,受到廣大用戶的關注,也是一件非常困難的事情。推薦系統(tǒng)就是解決這一矛盾的重要工具。推薦系統(tǒng)的主要任務就是聯(lián)系用戶和信息,一方面幫助用戶發(fā)現(xiàn)對自己有價值的信息,另一方面讓信息能夠展現(xiàn)在對它感興趣的用戶面前,從而實現(xiàn)信息消費者和信息生產(chǎn)者的雙贏。
(二)智能推送系統(tǒng)總體設計
本系統(tǒng)根據(jù)業(yè)務場景,將混合推薦系統(tǒng)分為以下四大模塊:
* 猜你喜歡模塊
猜你喜歡模塊是整個系統(tǒng)最核心也是最重要的業(yè)務子模塊之一,根據(jù)用戶的實時收藏記錄進行實時計算,并實時推薦計算結(jié)果到前端進行展示。
* 相似圖書模塊
相似圖書模塊是根據(jù)圖書自身的屬性進行推薦(例如簡介、摘要、作者信息、關鍵詞、標簽、中圖法分類信息、評分等字段),對圖書之間的相似度進行度量和智能排序,結(jié)合用戶的離線瀏覽數(shù)據(jù)進行計算并最終在前端進行展示。
* 相似用戶模塊
相似用戶模塊是利用用戶本身的收藏、瀏覽等行為數(shù)據(jù)實時推薦與其相似的用戶。
* 日志分析模塊
日志分析模塊通過對用戶在平臺產(chǎn)生的瀏覽記錄進行離線分析、挖掘和計算,向其推薦圖書和相似用戶。日志分析模塊和猜你喜歡模塊互為一個完備事件組,對于沒有強行為(如收藏行為)的用戶,可以通過日志分析得到精確的推薦結(jié)果。從而保證了業(yè)務的完備性。
每個業(yè)務模塊獨立對應一種業(yè)務場景并承接一項計算任務,有離線計算也有在線實時計算,彼此相互協(xié)作卻互不干擾。從而有效保證了業(yè)務的完備性,計算的實時性,結(jié)果的可解釋性。
二、猜你喜歡模塊
(一)模塊邏輯結(jié)構
猜你喜歡是整個推薦系統(tǒng)最核心的模塊之一,通過Redis發(fā)布訂閱模式監(jiān)聽主題對象,當用戶在前端產(chǎn)生行為時觸發(fā)猜你喜歡模塊并進行實時計算,結(jié)果會直接插入redis中。為了保證實時計算效率,在模塊設計中引入聚類思想。在程序觸發(fā)之前,已離線計算出各簇的相似用戶。當新用戶發(fā)生觸發(fā)行為時,匹配最近的簇并與簇內(nèi)用戶進行相似度計算。如此設計,可以大幅提升算法的實時性。
(二)模塊功能
猜你喜歡算法借鑒了協(xié)同過濾的基本思想,大幅提升計算的效率來保證用戶喜歡一本圖書后,結(jié)果反饋的實時性和準確性。同時算法還讀取了用戶的歷史收藏數(shù)據(jù)來組成共同的索引向量,以保證該向量能最大程度的反應當前用戶的偏好。
目前,該算法根據(jù)功能流程劃分為以下四部分:
* 數(shù)據(jù)預處理:對數(shù)據(jù)進行清洗和轉(zhuǎn)化,輸出給算法
* K-均值算法:對用戶進行聚類分析
* 協(xié)同過濾算法:加權計算推薦結(jié)果
* 推薦模塊:綜合所有計算結(jié)果進行處理,智能排序,降低熱門圖書權重等功能。
(三)核心算法原理簡述
1.K-均值聚類算法
K-means算法是硬聚類算法,是典型的基于原型的目標函數(shù)聚類方法的代表,它是數(shù)據(jù)點到原型的某種距離作為優(yōu)化的目標函數(shù),利用函數(shù)求極值的方法得到迭代運算的調(diào)整規(guī)則。K-means算法以歐式距離作為相似度測度,它是求對應某一初始聚類中心向量V最優(yōu)分類,使得評價指標J最小。算法采用誤差平方和準則函數(shù)作為聚類準則函數(shù)。
2.基于用戶的協(xié)同過濾算法
協(xié)同過濾根據(jù)用戶對項目的評分來產(chǎn)生推薦,是目前在推薦系統(tǒng)應用最成功和廣泛的推薦技術。根據(jù)推薦生產(chǎn)過程的不同,通??梢詫f(xié)同過濾算法分為基于用戶的過濾和基于物品的過濾。本系統(tǒng)主要采用了基于用戶的協(xié)同過濾算法來產(chǎn)生推薦結(jié)果。根據(jù)算法的基本原理,可以把算法的實施分為四個階段:(1)用戶相似性計算;(2)選擇近鄰;(3)預測評分;(4)推薦?;趨f(xié)同過濾的推薦算法,實施簡單有效,可以發(fā)現(xiàn)用戶潛在的但自己尚未察覺的興趣偏好。但是,當用戶的評分數(shù)據(jù)較少時,這一方法無法產(chǎn)生推薦結(jié)果。當系統(tǒng)的數(shù)據(jù)規(guī)模不斷擴大后,推薦效率又會受到影響。
三、相似圖書模塊
(一)模塊邏輯結(jié)構
相似圖書模塊,在整個大數(shù)據(jù)推薦系統(tǒng)中處于離線部分,系統(tǒng)每日會定期計算當前日期前30天的用戶瀏覽圖書數(shù)據(jù)并和庫內(nèi)所有圖書計算相似度后插入redis數(shù)據(jù)庫中。如此設計可以很大程度降低redis數(shù)據(jù)庫的存儲壓力,方便后臺進行快速讀寫。提高讀寫效率。
(二)模塊流程
相似圖書算法借鑒了基于內(nèi)容推薦算法的思想,利用余弦相似度計算稀疏矩陣得到相似度矩陣。常用的距離度量方式有:皮爾遜系數(shù)、余弦相似度、曼哈頓距離、阿基米德距離等。這里選用余弦相似度進行度量,好處在于余弦相似度可以在任何維度的向量中進行比較。尤其在高維空間中表現(xiàn)突出。因為圖書內(nèi)容屬于文本向量,分詞后維度很高,所以在圖書推薦算法設計時,距離的度量均采用余弦相似度進行度量。
根據(jù)20/80法則,熱門圖書與用戶經(jīng)常瀏覽的圖書只占有數(shù)據(jù)庫量級的很小一部分。如果遍歷數(shù)據(jù)庫所有圖書來進行相似度的計算,會造成難以想象的時間復雜度和空間復雜度,并且計算量隨圖書量級的增長所消耗時間會呈現(xiàn)指數(shù)形式上升。為避免這種情況的出現(xiàn),在設計相似圖書算法的時候,采用日志數(shù)據(jù)和相似圖書計算相結(jié)合方式,同時引入隨機模塊,在保證非齊次性的同時,避免了重復性。
(三)核心算法原理簡述
1.基于內(nèi)容的推薦算法
基于內(nèi)容的信息推薦方法的理論依據(jù)主要來自于信息檢索和信息過濾,所謂的基于內(nèi)容的推薦方法就是根據(jù)用戶過去的瀏覽記錄來向用戶推薦用戶沒有接觸過的推薦項。主要是從兩個方法來描述基于內(nèi)容的推薦方法:啟發(fā)式的方法和基于模型的方法。啟發(fā)式的方法就是用戶憑借經(jīng)驗來定義相關的計算公式,然后再根據(jù)公式的計算結(jié)果和實際的結(jié)果進行驗證,然后再不斷修改公式以達到最終目的。而對于模型的方法就是根據(jù)以往的數(shù)據(jù)作為數(shù)據(jù)集,然后根據(jù)這個數(shù)據(jù)集來學習出一個模型。一般的推薦系統(tǒng)中運用到的啟發(fā)式的方法就是使用tf-idf的方法來計算,然后再根據(jù)被推薦項中的權重高的關鍵字來作為推薦項的屬性特征,然后再將這個兩個向量最相近的(與用戶特征的向量計算得分最高)的項推薦給用戶。在計算用戶特征向量和被推薦項的特征向量的相似性時,一般使用的是cosine方法,計算兩個向量之間夾角的cosine值。
四、相似用戶模塊
(一)模塊邏輯結(jié)構
相似用戶模塊邏輯與猜你喜歡基本相同,只是最終計算方式有所不同。
(二)核心算法原理簡述
1. TF-IDF轉(zhuǎn)換概述
TF-IDF的主要思想是:如果某個詞或短語在一篇文章中出現(xiàn)的頻率TF高,并且在其他文章中很少出現(xiàn),則認為此詞或者短語具有很好的類別區(qū)分能力,適合用來分類。TF-IDF實際上是:TF * IDF,TF詞頻(Term Frequency),IDF逆向文件頻率(Inverse Document Frequency)。TF表示詞條在文檔d中出現(xiàn)的頻率。IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具有很好的類別區(qū)分能力。
某一特定文件內(nèi)的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產(chǎn)生出高權重的TF-IDF。因此,TF-IDF傾向于過濾掉常見的詞語,保留重要的詞語。
五、日志分析模塊
(一)模塊邏輯結(jié)構
日志分析主要針對沒有顯性數(shù)據(jù)的用戶,如沒有收藏、點贊、評分等顯性行為。通過分析其瀏覽行為來進行推薦的方式。對于本系統(tǒng),每日會定時分析當天用戶的瀏覽日志,通過智能算法對當天用戶感興趣的圖書進行建模分析,做出圖書推薦。
日志分析模塊主要是為了保證業(yè)務邏輯上的完備性,對于平臺用戶,可能很大一部分都不會產(chǎn)生顯性數(shù)據(jù),對于之前的猜你喜歡模塊是無法進行圖書和相似用戶推薦。通過引入用戶的瀏覽日志,可以有效解決這一問題,保證了業(yè)務的完備性。
六、新書熱門推薦及冷啟動問題
(一)冷啟動問題
推薦系統(tǒng)需要根據(jù)用戶的歷史行為和興趣預測用戶未來的行為和興趣,因此,大量的用戶行為數(shù)據(jù)就成為推薦系統(tǒng)的重要組成部分和先決條件。
對于圖書推薦系統(tǒng)而言,在沒有歷史數(shù)據(jù)之前,冷啟動問題是一個非常嚴峻的挑戰(zhàn)。這需要在沒有用戶數(shù)據(jù)前就根據(jù)用戶的瀏覽行為做出相應的推薦。
本系統(tǒng)在設計之處就考慮到冷啟動問題,目前通過兩種設計方案解決冷啟動問題:
1.借助外部用戶數(shù)據(jù)來解決系統(tǒng)冷啟動問題:
通過網(wǎng)絡采集和抓取海量和圖書相關的用戶數(shù)據(jù)、用戶收藏數(shù)據(jù)、用戶評分數(shù)據(jù)、用戶評論、美文等數(shù)據(jù),通過清洗、去重、歸一化等處理后,作為系統(tǒng)自身冷啟動的原始數(shù)據(jù)。
2.采用基于圖書本身內(nèi)容的推薦算法來作為推薦的底層數(shù)據(jù):
基于內(nèi)容算法的本質(zhì)是用圖書自身的屬性作為參數(shù)進行關聯(lián)和計算。比如對于圖書的作者、標簽、評論、美文等信息通過分詞或建立主題模型組成一條向量來代表圖書本身,這樣就可以通過向量之間的計算等價代換到圖書之間、用戶之間相似度間的度量。
(二)新書、熱門圖書
對于新書和熱門模塊,系統(tǒng)會根據(jù)用戶瀏覽、收藏、評分、點贊等信息進行智能排序、智能推薦。一方面,系統(tǒng)實時抓取版署新出版圖書信息,滿足新書速遞的要求,另一方面,系統(tǒng)會根據(jù)新書本身的內(nèi)容和網(wǎng)絡數(shù)據(jù)對新書進行綜合排序,智能推薦給讀者用戶。
七、總結(jié)
本方案將基于內(nèi)容的算法、協(xié)同過濾技術、聚類等算法思想結(jié)合在一起,一個新的自動化推薦機制展示了出來。該方案具有以下優(yōu)勢:
* 基于圖書內(nèi)容的推薦可以有效解決圖書推薦冷啟動的問題,
* 協(xié)同過濾可以匹配相似用戶之間未發(fā)覺的興趣愛好,同時基于用戶的協(xié)同過濾在聚類時可以大幅降低系統(tǒng)的時間復雜度,避免維災難。通過混合推薦可以有效避免熱門資源始終被推薦,使系統(tǒng)更為強健。
* 引入隨機模塊和正則模塊,挖掘圖書長尾市場,避免推薦的齊次性和重復性。
* 日志分析模塊保證了業(yè)務的完備性,對于沒有強行為的用戶也可以通過瀏覽日志進行推薦。
* 算法再學習模塊,保證了隨著平臺數(shù)據(jù)的積累,算法的不斷自動調(diào)優(yōu)和智能推薦效果的提升。
【參考文獻】
[1] 江寶林,張淵.基于互關聯(lián)后繼樹的WEB日志挖掘[J].計算機應用與軟件,2004(05).
[2] 楊明.基于數(shù)據(jù)挖掘技術的個性化教學研究[D].云南大學,2004.
[3] 文春勇.基于關聯(lián)規(guī)則的推薦系統(tǒng)在數(shù)字圖書館中的應用[J].情報科學, 2007(6).
[4] 楊焱.基于項目聚類的協(xié)同過濾推薦算法的研究[D].東北師范大學,2005.