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