顏培皓
摘要:當前高校內(nèi)個人所有的紙質(zhì)圖書因無法得到及時流通而導(dǎo)致相應(yīng)資源的閑置甚至浪費的問題日趨嚴重。在分析高校個人圖書資源共享現(xiàn)狀基礎(chǔ)上,融合“互聯(lián)網(wǎng)+”環(huán)境下的共享經(jīng)濟理念,首先設(shè)計了一種高校圖書共享需求及其運用模式,其次運用非負矩陣分解算法實現(xiàn)了一種動態(tài)圖書資源推薦方法,以解決圖書資源檢索和快速定位目標對象需求的問題,最后,運用Spring、Struts和Hibernate等技術(shù)實現(xiàn)了圖書共享系統(tǒng)。實驗結(jié)果表示,所實現(xiàn)的系統(tǒng)針對不同用戶的個性化需求,能夠快速預(yù)測其最有可能希望使用的書籍資源,以提高圖書資源的利用率和受益群體。
關(guān)鍵詞:共享圖書;非負矩陣分解;推薦算法;資源調(diào)度;個性化需求
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)12-0287-04
Research and Application of Book Sharing System Based on Non-negative Matrix Factorization
YAN Pei-hao
(College of Computer & Communication Engineering, China University of Petroleum(East China), Qingdao 266580, China)
Abstract: At present, the problem of idle or even wasted resources of individual paper books in the university due to the inability to get timely circulation has become increasingly serious. Based on the analysis of the status quo of individual book resource sharing in colleges and universities, and integrating the concept of sharing economy under the "Internet +" environment,it firstly designs a university book sharing demand and its application mode, and secondly uses a non-negative matrix factorization algorithm to implement a dynamic book resource recommendation method, which is used to solve the problem of library resource retrieval and rapid target object selection. Finally, it implements a book sharing system using technologies such as Spring, Struts, and Hibernate. The experimental results show that the implemented system can quickly predict the book resources that it is most likely to use for the individualized needs of different users, so as to improve the utilization and beneficiary groups of book resources.
Key words: sharing books; non-negative matrix factorization; recommended algorithm; scheduling of resources; individualized demands
1 背景
圖書的存在價值在于閱讀,其也是高校師生提高自身素質(zhì)和交流的重要窗口。而高校中,大部分學(xué)生閱讀完圖書之后就不會再看,畢業(yè)時當成了廢紙賣掉或者扔掉。這導(dǎo)致圖書無法及時流通,從而造成圖書資源浪費[1]?!盎ヂ?lián)網(wǎng)+”下共享經(jīng)濟通過第三方網(wǎng)絡(luò)平臺整合閑置資源,打通供需渠道,能夠有效解決供需雙方信息流通的不對稱問題,為使圖書價值達到最大化提供了一種新的契機[2]。
目前,已有很多研究致力于圖書共享方面的工作[3],大多是對海量數(shù)據(jù)資源進行簡單檢索和結(jié)果堆放,仍存在無法滿足個性化需求的問題[4]。為了使用者在眾多的圖書資源中快速尋找到自己真正需要的資源,通過讀者的行為獲取讀者的興趣愛好[5]?;诹餍卸鹊乃惴╗6]根據(jù)PV(頁面訪問量)、UV(獨立訪客量)、分享等數(shù)據(jù)生成一種推薦度進行排序,再按照推薦度的高低向指定用戶進行推薦。該算法的優(yōu)勢在于簡單適用于初次使用系統(tǒng)的新用戶,但針對用戶的個性化需求無法滿足。
基于內(nèi)容的算法(Content-Based Recommendations CBR)[7]是獲取用戶喜歡的物品后,分析該物品的特征從而獲取與該物品特征相似山外物品推薦給用戶。算法有效地解決了針對用戶個性化推薦的問題,對于新加入物品的推薦概率大大提升。但無法實現(xiàn)對新用戶的推薦而且對物品特征的提取比較困難。
協(xié)同過濾算法(Collaborative Filtering CF)是[8]在推薦算法中應(yīng)用相對廣泛且相對推薦效果較好的,基于用戶的CF通過分析各個用戶對物品的評價計算用戶的相似度從而推送相似用戶的喜好物品?;谖锲返腃F 與其原理類似,只是將關(guān)聯(lián)關(guān)系改變成物品與物品之間。這兩種算法的主要思想比較容易理解,推薦的準確性也比較高。但仍存在一些問題:依賴用戶對物品的確切的評分會導(dǎo)致評分高的物品被推薦幾率過高,小眾用戶或小眾物品可能在很長的時間段里不會被推薦,以及計算相似性矩陣的稀疏性問題和系統(tǒng)的冷啟動問題。在此基礎(chǔ)上,鄧愛林[9]等人提出了一種基于項目評分預(yù)測的協(xié)同過濾算法,根據(jù)項目間的相似性預(yù)測用戶對尚未評分項目的評分,以提高推薦的質(zhì)量。李林峰[10]等人提出了一種基于時序行為的協(xié)同過濾推薦算法,通過構(gòu)建基于時間序列的行為(只需用戶的行為時間,而不需要其他的信息),獲取相鄰近的產(chǎn)品或用戶的相互影響關(guān)系,從而預(yù)測用戶對物品的實際評分,提升推薦的精度。這兩種算法均從一定的角度解決了傳統(tǒng)協(xié)同過濾推薦算法的不足,但其本質(zhì)上仍是直接基于物品的推薦,在針對根據(jù)物品特征值進行推薦上有所欠缺。
針對不同用戶的個性化需求,快速預(yù)測其最有可能希望使用的書籍資源,本文基于非負矩陣分解算法設(shè)計并實現(xiàn)了一款高校圖書共享系統(tǒng),以期來提高圖書資源受益群體。
2 圖書共享及推薦系統(tǒng)的功能設(shè)計
2.1 高校圖書共享模式概述
以高校圖書館為例,高校圖書館可將預(yù)先為教師和學(xué)生分配的線下用戶借閱圖書的身份識別信息(如工號或?qū)W號)錄入本系統(tǒng)并為每位用戶預(yù)先分配一定的信用值,教師或?qū)W生登錄本系統(tǒng)后可發(fā)布閑置圖書以供共享,發(fā)布書籍時,為每本書籍提供用戶認為最符合書籍內(nèi)容的幾個標簽,同時設(shè)定所發(fā)布書籍的信用值和數(shù)量。用戶每共享一本書籍,可在自己的信用值基礎(chǔ)上增加信用值。當用戶在平臺上借閱書籍時,可通過書籍搜索查詢相關(guān)書籍,若查詢不到,可發(fā)布需求,高校圖書館管理人員可根據(jù)用戶需求的統(tǒng)計信息有針對性的補充書籍,也可查看線下圖書館是否有相關(guān)紙質(zhì)書籍,可根據(jù)用戶留下的聯(lián)系方式聯(lián)系用戶。當用戶查詢到所需借閱的書籍時,用戶提交申請后,系統(tǒng)首先判斷書籍數(shù)量是否足夠,數(shù)量不足時自動推薦用戶感興趣的相關(guān)書籍,數(shù)量充足時判斷用戶信用值是否大于所借書籍信用值總和,用戶信用值充足時,系統(tǒng)設(shè)置時間自動審批,同時也可由圖書館管理人員操作審核,審核通過后分配書籍給用戶,同時扣除用戶相應(yīng)信用值。用戶完成借閱后,可根據(jù)線上信息歸還書籍到指定地點,也可歸還至高校圖書館。
2.2 系統(tǒng)功能設(shè)計
依據(jù)所設(shè)計的高校圖書共享模式,本文所設(shè)計的高校圖書共享與推薦系統(tǒng)功能模塊如圖1所示。
2.2.1 前臺網(wǎng)頁模塊功能
2.2.1.1 用戶賬戶管理
由于共享經(jīng)濟目前最大的問題是用戶的信用問題,故本系統(tǒng)設(shè)定兩大用戶角色,學(xué)生用戶和教師用戶,且用戶必須為本校真實在校教師或?qū)W生且登錄時需用工號或?qū)W號。為了讓更多的用戶體驗共享服務(wù),也是為了更多的用戶可以主動加入共享群體中,系統(tǒng)為每一個用戶分配一定信用值的初始值,以供初次使用本系統(tǒng)的用戶體驗共享圖書服務(wù)。
2.2.1.2 我的信用
顯示當前用戶的信用值,初始信用,用戶每共享一本書籍,信用值增加,申請借閱書籍時,根據(jù)書籍得總信用值,扣除用戶相應(yīng)的信用值。當用戶信用分為0 時,無法享受借閱服務(wù)。當用戶借閱書籍逾期超過 30 天時,列入黑名單,不再允許該用戶借閱書籍。
2.2.1.3 我的借閱
此功能用來查看用戶已經(jīng)申請借閱書籍訂單的信息,系統(tǒng)的審批狀態(tài),針對系統(tǒng)已經(jīng)審批的訂單,用戶在完成借閱書籍后,可在此功能模塊中點擊還書。
2.2.1.4 發(fā)布圖書
任意一個注冊過的用戶在登錄后,可以點擊發(fā)布圖書功能發(fā)布共享圖書信息。包括選擇待發(fā)布書籍類別、填寫書籍名稱、書籍介紹(包括作者、出版社、書籍 ISBN)同時針對每本圖書設(shè)置五個標簽作為后續(xù)為用戶推薦圖書的特征值。書籍的信用值和數(shù)量默認設(shè)置為 1,用戶可根據(jù)自己發(fā)布的圖書的質(zhì)量和數(shù)量輸入新的信用值和數(shù)量,書籍的發(fā)布者默認為當前登錄用戶。
2.2.1.5 書籍搜索與推薦
隨著平臺的不斷推廣,書籍數(shù)量不斷增多,為了方便用戶在最短的時間內(nèi)找到自己需要的書籍,設(shè)置書籍搜索功能供輸入書籍全部或部分名稱來搜索目標書籍。若已發(fā)布的共享圖書不存在用戶所需要的書籍,則系統(tǒng)將會根據(jù)非負矩陣分解自動推薦出其他相關(guān)書籍,其具體實現(xiàn)將在第3部分闡述。
2.2.1.6 圖書展示
圖書展示主要用來展示目前平臺上所有被用戶共享的書籍,對展示出來的書籍用戶可以點擊查看對應(yīng)書籍的信息介紹包括書籍名稱、作者、出版社、ISBN 以及書籍的數(shù)量和書籍的信用值,同時用戶可以對書籍進行評價和查看該書籍的評價。書籍的評價功能作為用戶了解書籍的內(nèi)容和書籍的質(zhì)量的參考,也可作為后續(xù)建立一個多維度的信用評價體系時的衡量標準。
2.2.1.7 發(fā)布需求
此功能針對用戶在平臺上找不到所需要的書籍時,點擊發(fā)布需求,填寫用戶的姓名、聯(lián)系方式、郵箱和需求書籍的名稱以及基本介紹內(nèi)容,同時記錄用戶發(fā)布需求的時間。
2.2.1.8 借書清單
保存當前用戶以及申請但未完成借閱的書籍,滿足用戶一次可能借閱多本書的需求,同時用戶可以查看當前已經(jīng)申請的書籍,并可以繼續(xù)添加或刪除。
2.2.2 后臺模塊功能
2.2.2.1 用戶管理
用戶管理包括對管理員自己的賬戶密碼的修改,以及對系統(tǒng)用戶信息查看和刪除。
2.2.2.2 需求信息管理
查看用戶發(fā)布的書籍需求信息,當平臺上有該書籍時,可根據(jù)用戶留下的聯(lián)系方式告知用戶。
2.2.2.3 借閱信息管理
查看所有用戶申請借閱的訂單信息,包括借閱時間,受理狀態(tài)等信息,同時在系統(tǒng)未自動審批時限內(nèi),可輔助人工受理訂單。
2.2.2.4 書籍管理
此功能包括對圖書的基本信息的管理、圖書類別的管理。管理員也可以發(fā)布圖書,同時考慮到用戶可能對書籍分類不明確,增加書籍類別功能設(shè)置在管理員下。
3 基于非負矩陣分解的圖書推薦算法
3.1 非負矩陣分解算法概述
基于矩陣分解的推薦算法通常會有很高的預(yù)測精度、良好的可伸縮性和高度的靈活性[11],可以將用戶和物品的特征轉(zhuǎn)換為隱語義的特征,然后通過計算用戶與物品之間隱語義的相關(guān)性進行推薦。在圖書共享系統(tǒng)中,應(yīng)用非負矩陣分解的推薦算法,綜合考慮通過讀者之間的相似性、讀者與書籍之間信息的分析,同時考慮數(shù)據(jù)量大引起的時間空間復(fù)雜度高的問題,以優(yōu)化函數(shù)為目標,在達到全局最優(yōu)的同時,提高預(yù)測的準確度[12]。
基于共享圖書的非負矩陣分解推薦算法用于(在用戶申請書籍而書籍數(shù)量不足時,向用戶推薦與之申請書籍類型相同或相似的書籍)。結(jié)合基于少部分用戶對少部分物品的評分,我們希望預(yù)測出目標用戶對其他未評分物品的評分,進而將評分高的書籍推薦給目標用戶。除了有評分信息外,數(shù)據(jù)集中還包含有用戶信息、書籍信息和對書籍評分的時間戳等信息。即便如此,數(shù)據(jù)依然非常稀疏,構(gòu)成的用戶-書籍的評分矩陣中,評分信息只占比較少的一部分[13],因此矩陣中會存在很多的未知信息,我們需要比較準確地了解和預(yù)測出用戶對相應(yīng)書籍的偏好情況。
3.2 算法描述
在上述算法思想的基礎(chǔ)上,通過部分用戶和部分書籍之間的評分數(shù)據(jù),其他部分的評分為空白的,用已有的部分稀疏數(shù)據(jù)矩陣來預(yù)測矩陣中空白位置書籍與用戶之間的評分關(guān)系,找到最高評分的書籍推薦給用戶。
基于共享圖書的非負矩陣推薦算法分兩個步驟執(zhí)行,利用非負矩陣分解的算法進行預(yù)測打分值,尋找到該用戶可能會打分較高的書籍進行書籍推薦。算法設(shè)計如下:
3.2.1 對未打分書籍進行評分預(yù)測
將用戶對書籍打分的數(shù)據(jù)計入數(shù)據(jù)集,構(gòu)成用戶-書籍矩陣,在矩陣中,由用戶對每一本書籍的打分和未對書籍打分的情況構(gòu)成,如下表所示:
將用戶-書籍矩陣分解為兩個矩陣相乘的形式,上圖中矩陣[M]為[m]行[n]列的形式,即[m]個用戶與其對應(yīng)打分[n]本書籍的信息,分解為[m×k]的矩陣[P]和[k×n]的矩陣[Q]的乘積:
[Mm×n=PTm×kQk×n] (1)
其中[k]為潛在因子的數(shù)目,也就是書籍對應(yīng)表現(xiàn)出的特征,矩陣[P]可以表示為用戶-潛在因子矩陣,該矩陣的數(shù)值表示用戶對于不同因子元素的偏好,矩陣[Q]表示潛在因子-書籍矩陣,表示每本書籍所含有的因子元素的部分,通過上表中的非負矩陣分解得到潛在因子與不同用戶和不同書籍之間的關(guān)系矩陣。
采用線性回歸的思想將矩陣[M]進行分解,為了讓用戶對書籍的評分和用矩陣乘積得到的書籍評分殘差盡可能小,采取均方差作為損失函數(shù)來尋找到最終的分解矩陣[P]和[Q]。對于其中某一個用戶對其中一本書的評分[mij],用非負矩陣分解的算法得到對應(yīng)的[qTjPi] ,對應(yīng)的損失函數(shù)即均方差為 [(mij-qTjPi)2]的值應(yīng)盡可能小,累加所有用戶對所有書籍的評分數(shù)據(jù),期望將損失函數(shù)和最小化,同時為了防止過擬合,加入正則化項得到優(yōu)化目標函數(shù)公式如下:
[argmin︸pi,qji,j(mij-qTjPi)2+λ(pi22+qj22)] (2)
通過梯度下降法進行優(yōu)化計算,分別對[pi]和[qj]求導(dǎo)迭代得到極小值下所對應(yīng)的的[pi]和[qj]值,此時的迭代公式為:
[pi=pi+α(Eijqj-λpi)qj=qj+α(Eijpi-λqj)] (3)
其中,[Eij=Rij-d=1DUdiVdj] (4)
從而對于用戶對書籍的未知評分,通過[qTjPi]得到的預(yù)測值如表2所示
3.2.2 推薦書籍
矩陣分解模型把用戶偏好和書籍屬性投影到同一個隱因子空間,以用戶偏好和書籍屬性的匹配程度來預(yù)測評分得到上文所述的矩陣,對其中某一用戶的預(yù)測打分情況對分值進行降序排序,將分值較高的書籍推薦給用戶,同時避開用戶已經(jīng)借閱過的書籍。
3.3 算法實現(xiàn)效果
基于非負矩陣分解的圖書推薦算法執(zhí)行情況如下表3、表4所示:
結(jié)果分析:通過非負矩陣算法得到的預(yù)測矩陣中各評分值可以知道,對用戶3的推薦中打分值最高的為書籍3,測試用例中,用戶3和用戶5有較強的相似性,而推薦書籍3正是用戶5所評分最高的書籍,通過特征值得到用戶三對特征1較感興趣而特征2興趣點差,與推薦書籍的潛在因子值基本相符。從而程序的執(zhí)行結(jié)果比較好得驗證了算法的思想。
3.4 系統(tǒng)實現(xiàn)效果
本文結(jié)合運用Spring、Struts和Hibernate等技術(shù)實現(xiàn)了圖書共享與推薦系統(tǒng),并通過非負矩陣算法實現(xiàn)推薦系統(tǒng)界面如下圖3所示,在用戶對書籍進行申請而書籍數(shù)量不足時,對不同用戶興趣點的不足進行書籍推薦,實現(xiàn)了高校圖書共享系統(tǒng)的基本功能以及推薦系統(tǒng)的個性化書籍推薦場景。
圖2 共享圖書系統(tǒng)推薦書籍界面
4結(jié)束語
本文依據(jù)高校圖書館在各個方面對圖書、教材等的需求以及對閑置書籍處理的問題,結(jié)合共享經(jīng)濟的模式并應(yīng)用基于共享圖書的非負矩陣分解的圖書推薦算法,實現(xiàn)了對閑置圖書的再利用、對圖書的共享以及針對不同用戶提供個性化的圖書推薦服務(wù)。在研究一些常用推薦算法的基礎(chǔ)上,設(shè)計與實現(xiàn)了基于共享圖書的非負矩陣分解推薦算法。
參考文獻:
[1] 王飛龍. 交易成本與零售商業(yè)模式的變遷——以圖書流通行業(yè)為例[J]. 中國流通經(jīng)濟, 2018, 32(4).
[2] 王家寶, 敦帥, 黃晴悅. 當閑置資源遇見“互聯(lián)網(wǎng)+”--分享經(jīng)濟的風靡之道[J]. 企業(yè)管理, 2016(6): 55-57.
[3] 趙琰, 戴曉翔, 詹慶東. 互聯(lián)網(wǎng)思維下圖書共享模式研究[J]. 圖書情報工作, 2018, 62(3): 33-38.
[4] 李民, 王穎純, 劉燕權(quán). “211工程”高校圖書館館藏資源推薦系統(tǒng)調(diào)查探析[J]. 圖書情報工作, 2016(9): 55-60.
[5] 李克潮, 梁正友. 基于多特征的個性化圖書推薦算法[J]. 計算機工程, 2012, 38(11): 34-37.
[6] 何佶星, 陳汶濱, 牟斌皓. 流行度劃分結(jié)合平均偏好權(quán)重的協(xié)同過濾個性化推薦算法[J]. 計算機科學(xué), 2018, 45(s1): 506-509.
[7] 呂學(xué)強, 王騰, 李雪偉, 等. 基于內(nèi)容和興趣漂移模型的電影推薦算法研究[J]. 計算機應(yīng)用研究, 2018, 35(3): 717-720.
[8] 李偉霖, 王成良, 文俊浩. 基于評論與評分的協(xié)同過濾算法[J]. 計算機應(yīng)用研究, 2017, 34(2): 361-364.
[9] 鄧愛林, 朱揚勇, 施伯樂. 基于項目評分預(yù)測的協(xié)同過濾推薦算法[J]. 軟件學(xué)報, 2003, 14(9): 1621-1628.
[10] 李林峰, 劉真, 魏港明, 等. 基于共享知識模型的跨領(lǐng)域推薦算法[J]. 電子學(xué)報, 2018, 46(8): 1947-1953.
[11] 栗茂林, 梁霖, 陳元明, 等. 基于聚類優(yōu)化的非負矩陣分解方法及其應(yīng)用[J]. 中國機械工程, 2018, 29(6): 720-725.
[12] 劉慧婷, 陳艷, 肖慧慧. 基于用戶偏好的矩陣分解推薦算法[J]. 計算機應(yīng)用, 2015(S2): 118-121.
[13] 聶常超. 一種基于矩陣分解的電影推薦算法[J]. 電子設(shè)計工程, 2016, 24(19): 73-75.
【通聯(lián)編輯:謝媛媛】