黃沁芳
(集美大學誠毅學院 福建省廈門市 361021)
當前隨著互聯網信息技術的快速發(fā)展,各大高校紛紛建立智慧圖書館來實現圖書的信息化管理。為了滿足高校學生對于圖書館服務的個性化需求,圖書推薦算法也在日益改進和創(chuàng)新。推薦系統被認為是一種非常有效的信息過濾工具,通過分析用戶的歷史行為數據,為用戶推薦個性化的內容[1]。協同過濾是推薦系統中應用最廣泛的算法之一[2],但它存在數據稀疏性和冷啟動問題。深度學習基于數據來進行特征學習,而卷積神經網絡是其中的一種學習方法,它能從大量的輸入輸出數據中找出相應的映射關系。本文將卷積神經網絡的內容推薦應用到推薦系統的協同過濾算法中,從而緩解數據稀疏性和冷啟動的問題,提高推薦結果準確率。
深度學習是神經網絡發(fā)展的產物,神經網絡是對人腦或一些生物神經網絡特征的抽象和建模,能夠從外界進行學習,并以生物類似的交互方式來適應外界環(huán)境[3]。深度學習分為監(jiān)督學習和無監(jiān)督學習。監(jiān)督學習包含了多層感知機、卷積神經網絡等學習模型;而無監(jiān)督學習包含了自動編碼器、稀疏編碼器和深度置信網等學習模型。
卷積神經網絡是由多層的神經元構成,其網絡結構主要包括輸入層、卷積層、池化層、全連接層和輸出層。實際上,卷積神經網絡就是將大量輸入的數據進行訓練,從而學習到數據中的特征,找出輸入數據和輸出數據之間的映射關系。
圖1:基于卷積神經和協同過濾的混合推薦算法
圖2:卷積神經網絡結構圖
圖3:卷積神經網絡模型準確率和損失率
圖4:推薦結果準確性對比圖
推薦系統主要分為協同過濾推薦、基于內容推薦和混合推薦,其中協同過濾是目前使用最廣泛的推薦算法之一。協同過濾算法是通過收集用戶的歷史記錄來發(fā)現用戶和物品之間的關聯性,借此向用戶提供可能感興趣的推薦。它分為基于鄰居的協同過濾和基于模型的協同過濾,基于鄰居的協同過濾又分為基于用戶協同過濾和基于項目協同過濾[4]?;谟脩舻膮f同過濾是通過收集用戶歷史行為或偏好數據生成用戶-物品矩陣,利用相似度算法找到與當前用戶有相似興趣愛好的用戶,將此用戶喜好的物品推薦給當前用戶。基于項目的協同過濾是通過收集偏好物品的相似性生成物品-用戶矩陣,利用相似度算法找到用戶喜歡的相似物品推薦給用戶。在協同過濾算法中如果出現新用戶或物品時,或者數據少比較稀疏時,很難收集到偏好信息找到相似用戶或物品,導致無法生成推薦,這就存在冷啟動和數據稀疏問題。
本文針對的是高校圖書館,用戶以學生教師為主,采用基于用戶的協同過濾算法。通過收集學生教師對圖書的評分和評價行為構建讀者-圖書矩陣,尋找相似讀者形成推薦結果。再將卷積神經網絡訓練模型所產生的推薦結果與協同過濾的推薦結果進行線性組合,形成更為準確的推薦列表,也從而解決了圖書信息少,用戶評價少的冷啟動和數據稀疏問題。具體步驟如圖1 所示。
(1)收集相關信息包括用戶圖書搜索記錄和圖書信息例如書名、作者、出版社、簡介等,作為輸入數據進行模型訓練,得出用戶最可能感興趣的三類圖書,生成推薦列表1。
(2)提取用戶的圖書評分信息以及評論信息,形成用戶-圖書矩陣,通過計算相似度尋找相似用戶,根據相似用戶的喜愛產生推薦列表2。
(3)將推薦列表1 和推薦列表2 進行內容線性組合,生成最后的推薦列表。
通過訪問圖書信息數據庫和讀者搜索記錄數據庫,提取所需要數據,經過數據清洗和過濾,利用jieba 分詞工具進行分詞,生成詞向量訓練所需要的圖書語料庫。使用Word2Vec 中Skip-Gram 模型對圖書語料庫進行訓練生成詞向量。Word2Vec 是基于中文語料庫的,可以處理自然語言。生成的詞向量作為卷積神經網絡的輸入數據,進行下一步的訓練。
本文的卷積神經網絡模型主要由輸入層、卷積層、池化層、全連接層和輸出層構成,如圖2 所示。
輸入層:此層中輸入的數據是中文詞語的詞向量,圖中的k 表示300 維,n 為100。一行詞向量為一個詞語,將n 個詞語則構成一個句子,可表示為:x1:n=x1⊕x2⊕x3⊕…⊕xn,其中xi∈Tk表示第i個詞語的K 維的詞向量。
卷積層:此層作用是提取詞向量的特征,輸入數據大小為100×300。卷積結果為di,即di=f(v·xi:i+h-1+a),其中f 為非線性函數,本文采用的是ReLU 函數;v∈Thk為卷積核,v 表示寬度為k維高度維h 個單詞的向量;a 表示函數的截距。在本文的模型中卷積核有三種,大小分別是3×300、4×300,5×300,其中n-h+1 的值為96,所以最后輸出大小為96*128。
池化層:此層是實現降維和過濾噪聲。它將卷積層的輸出結果集合D 的最大值取出來,組成輸出結果。池化窗口大小也分為三種3、4 和5;輸入數據大小是96×128,對應的輸出數據大小分別為32×128、24×128 和19×128。池化層輸出結果將會進入下一個卷積層進行特征提前。
表1:讀者-圖書評分矩陣R(m,n)
融合層:本文模型中卷積核和池化窗口都有三種,融合層將組合這三種結果,進行線性連接。輸入數據分別是三個128 維向量,則輸出數據則變?yōu)橐粋€384 維向量。
全連接層:來自融合層的384 維向量,在全連接層最終輸出結果維度為53。此層使用了Dropout 函數,取值為0.2,用來來實現80%神經元的局部連接,忽略掉20%的神經元數據,這樣在某種程度上避免了過擬合。同時還使用Softmax函數,來實現多分類功能。
本文以Tensorflow 和Keras 作為框架搭建卷積神經網絡進行模型訓練,采用交叉熵損失函數。模型的準確率和損失率如圖3 所示。從圖中可以看出在剛開始訓練時損失值很大,當迭代次數達到一定數量時逐漸趨向平穩(wěn);而準確率在開始時不斷上升然后隨著迭代次數趨向平穩(wěn)。在詞向量維度300,迭代次數為20 時準確率可以到達95.2%。因此可以將此卷積神經網絡模型應用到推薦系統中。
從學校圖書館的讀者借閱信息數據庫獲取讀者對圖書的評分和評價信息,并對數據進行清洗,將活躍程度低的用戶以及無效的數據過濾掉,最后構建成讀者-圖書矩陣。假設有m 個讀者,讀者集合為U={U1,U2,U3,…,Um};n 種圖書,圖書集合為B={B1,B2,B3,…, Bn};m 個讀者n 種圖書構成的m×n 階的讀者-圖書評分矩陣R(m,n),如表1 所示。
要尋找相似讀者,需要計算相似度,常用的方法有皮爾遜相關系數、歐幾里得距離法和余弦值法。本文采用的是皮爾遜相關系數。假設讀者u 與讀者v 的相似度sim(u,v),Iuv表示讀者u 與讀者v 對圖書評分的交集。相似度結果區(qū)間在[0,1],結果值越大,表示越相似。
通過讀者的相似度,計算出讀者u 對圖書i 的偏好預測值Pu,i,KNNp表示與讀者u 最相似的k 個讀者的集合,分別表示讀者u 和v 對所有圖書的平均評分。
將預測值Pu,i由大到小排列,生成Top-N 推薦列表,將其中的N 本圖書推薦給讀者。評估推薦系統的準確性指標最常用的是準確率(Precision)、召回率(Recall)和F1 值,假設R(u)是訓練集中得出的推薦列表,T(u)是測試集中得出的推薦列表,相應公式如下:
本文在實驗中將評分矩陣數據分兩部分,作為訓練集數據占80%,測試集數據占20%。實驗結果驗證推薦的準確率為3.54%,召回率為2.83%,F1 值為3.04%。
以用戶圖書搜索記錄和圖書信息作為輸入數據,通過卷積神經網絡進行模型訓練,得出用戶最可能感興趣的三類圖書,生成最熱門評分最高的推薦列表,與協同過濾算法生成的Top-N 推薦列表,進行內容線性組合生成最后的推薦列表。計算最終的推薦結果準確率為5.10%,召回率為4.65%,F1 值為4.93%,相對于協同過濾而言,推薦結果準確性明顯提高了如圖4 所示。
通過實驗對比,相對于單一的協同過濾推薦系統,卷積神經網絡和協同過濾相結合的混合推薦系統推薦效果更好。
為了實現從大量圖書資源中向高校學生推薦他們感興趣的圖書,本文提出了將卷積神經網絡的推薦結果和協同過濾算法的推薦結果向結合,組成一種混合推薦系統,從而提高了推薦的準確率,并緩解了冷啟動和數據稀疏問題。