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