閆俊輝
(運城學院數學與信息技術學院,運城 044000)
“智慧圖書館”將人與人、物與物、人與物通過信息技術緊密結合在一起[1],在智慧圖書館中,讀者數據獲取更便利、更全面、更廣泛,可以更加準確地刻畫讀者的信息需求,并據此進行精準推薦。因此,怎樣準確把握讀者的閱讀及信息需求并向其進行智慧型圖書推薦成為需要考慮的關鍵問題。
推薦系統被證明是一種解決信息過載和長尾物品問題的有效工具,在日常閱讀新聞資訊、網上購物時,都能看到各種各樣的推薦。圖書個性化推薦最早是亞馬遜公司為了提升長尾圖書的用戶抵達率而提出的,據VentureBeat 統計,圖書個性化推薦為亞馬遜貢獻了35%的銷售額[2]。目前的推薦算法主要包括協同過濾推薦算法、基于內容的推薦算法、基于用戶-產品二部圖關系的推薦算法及混合推薦算法。Mooney 等[3]開發了一種圖書推薦系統,它利用簡單的信息提取技術從Web 收集到物品的半結構化信息,基于給定項目的信息和用戶的配置文件來向用戶推薦文檔、項目和服務。多維度研究是從不同的角度以及不同的層次研究問題,不再是單向和單一維度思考問題,然而在個性化推薦系統領域中的多維度分析很少。其中,Ma 等[4]在考慮新浪微博的個性化推薦問題時,提出從用戶維度和關鍵詞語維度來研究微博推薦系統個性化以及準確性的問題。其他較少的學術論文只是提出多維研究的概念,尚沒有明確的研究方法。
因此,本文提出了一種新型的基于多維分析和用戶聚類研究的個性化圖書推薦算法。一方面,通過用戶在智慧圖書館借閱圖書的數據構建起“用戶-圖書商品”二維矩陣,從用戶維度考慮,以每本圖書作為用戶的屬性,計算用戶相似性更新“用戶-圖書商品”矩陣。同樣,從商品的維度考慮,分析每個商品的介紹等內容,計算商品之間的相似度,將其作為權重再次更新“用戶-圖書商品”矩陣。另一方面,利用第一部分得到矩陣計算用戶之間相似性,實現用戶聚類。然后在目標用戶類別內,研究目標用戶與其他用戶之間關系和選購商品上的差異,實現top-N商品推薦。圖1 概述了本文所提出的圖書商品推薦系統的結構和內容。

圖1 個性化圖書推薦系統框架
本文研究的內容都是文本詞語空間向量,由于余弦相似性對于詞語空間向量以及稀疏向量的研究有較好的適用性,因此本文使用余弦相似性方法計算對象之間的相關系數。
本文使用K 均值作為用戶聚類算法。K 均值聚類算法是基于距離的典型聚類方法,其主要的思想是利用距離的概念判定節點之間的相似度,距離越大,相似度越小[5]。
在n維歐氏空間中,每個點都是高維度數據,其中兩個點A={A1,A2,A3,…,An},B={B1,B2,B3,…,Bn}之間的距離ρ(A,B)可以由下式計算得出:
再根據歐幾里得距離計算K 均值算法中用戶之間相似度:
針對智慧圖書館的圖書商品,本文提出了基于多維度關系和用戶聚類的個性化推薦算法。爬取用戶借閱過的圖書商品的數據、智慧圖書館館藏中圖書商品的信息以及外部百科網站關于圖書商品的介紹。引入用戶相關與商品相關的因素到個性化推薦中,隨后通過K均值聚類實現用戶聚類,研究類內目標用戶的圖書個性化推薦。以下展示了本文的圖書個性化推薦模型。
輸入:用戶和借閱過的圖書商品數據以及圖書商品的介紹信息
輸出:針對目標用戶的個性化推薦列表(top-N)
Step 1:數據預處理后構建用戶-圖書商品矩陣Mcb
Step 2:依據原始用戶-商品矩陣Mcb計算用戶之間的相關系數,獲得用戶相似方陣Mc×c,firstMcb=Mc×c×Mcb,即考慮用戶維度信息,第一次更新用戶-圖書商品矩陣,將firstMcb矩陣標準化,得到M′cb
Step 3:根據百度百科和維基百科等資料網站得出圖書商品的介紹信息,分詞后構建圖書-關鍵詞矩陣,在此基礎上計算圖書商品之間的相似性,得到圖書相關性方陣Mb×b,secondMcb=M′c×b×Mb×b,即考慮圖書維度信息,再次更新用戶-商品矩陣,將secondMcb矩陣標準化,得到
Step 5:每個類別內的用戶聯系緊密,親密度更高。選取目標研究對象,研究類中其他用戶購買過,而該目標用戶沒有買過的圖書,圖書集合為B
Step 6:根據其他用戶借閱的信息,將圖書集合B中的所有圖書進行打分,依照評分前N位生成top-N推薦列表,將該列表作為個性化推薦結果推送給目標用戶
該個性化推薦算法的創新點在于,將用戶相關性和圖書商品相關性考慮進“用戶-圖書商品”矩陣,以用戶借閱圖書商品的信息計算用戶相關性,以圖書的外部資料測算圖書商品相似性,實現兩步更新“用戶-圖書商品”矩陣。在此矩陣基礎上,完成用戶K 均值聚類,在每個類別內,用戶之間相關性較高,根據圖書商品的推薦得分,將目標用戶沒有借閱過,而類別內其他用戶借閱過的商品形成top-N商品推薦,這種方式既考慮了推薦的準確性,也考慮了推薦的新穎性。
本文選取了某圖書館的165條用戶數據、借閱的35 條圖書商品的數據以及外部百科網站的35 條圖書商品介紹數據,從多維度和用戶聚類來改善個性化推薦的研究。
根據獲取到的用戶數據和其借閱過商品的數據,構建165×35的初始“用戶-圖書商品”二維矩陣M165×35,其中Ci(i= 1,2,…,165)代表用戶編號,Bj(j= 1,2,…,35)代表圖書商品編號,矩陣里面的數值0代表沒有買過,1代表買過。
根據圖2所示的數據,以圖書商品作為用戶的屬性,構建165條用戶向量,使用余弦相似計算用戶之間的相似度,構建165×165 的用戶相似矩陣M165×165。 利用矩陣相乘M165×165×M165×35= firstM165×35,將新的矩陣標準化,得到基于用戶關系更新后的“用戶-圖書商品”矩陣M′165×35,如圖3所示。

圖2 初始“用戶-圖書商品”二維矩陣

圖3 更新后的“用戶-圖書商品”矩陣
更新后的矩陣考慮了用戶相關關系和圖書商品相關關系,更加全面地體現了用戶與圖書商品之間的聯系。根據更新后的矩陣的數據,將圖書商品作為用戶的屬性特征,實現K 均值用戶聚類。聚類結果如圖4所示。

圖4 K均值聚類結果示意圖
同一類別中用戶關聯性較強,不同類別內用戶關聯性較弱。本文取圖4 中方框內的節點為代表類別進行研究,以C16 為目標研究對象。由聚類結果可知,與C16 在同一類別中的用戶還有C104、C144、C4、C119、C27、C84、C102、C72、C24、C14、C94、C8、C97 以及C88。在C16所在的類別中,除去C16已經購買過的圖書商品,考慮類內其他用戶借閱的商品推薦得分。以更新后的“用戶-圖書商品”矩陣為基礎,將矩陣中的系數作為權重加到原始“用戶-圖書商品”矩陣中,通過對應相乘和商品列數值相加的方式計算出商品的總得分。從前一步全部圖書商品數據中提取出C16 所在類的圖書商品數據,得出類內其他用戶借閱(C16 沒有購買)的圖書商品的得分。前5 個得分最高的圖書商品作為top-5 圖書推薦給用戶C16,即針對目標用戶完成圖書商品的個性化推薦。top-5 的推薦圖書商品列表及其得分見表1。

表1 推薦商品得分
準確度經常用來評價推薦系統中推薦算法的效果,本文使用準確度指標中準確率和召回率的加權平均F1指標來評估本文的推薦算法。
通過設置推薦商品數N的不同,得到推薦系統在一系列推薦實踐下的評價指標準確率、召回率以及F1 的值。以此來驗證推薦系統的穩定性與持久性,排除偶然的因素。圖5 顯示的是不同推薦算法下F1值的變化。

圖5 不同推薦系統的評價指標F1值比較
由圖5 可以看出,隨著推薦商品個數的增加,本文的推薦算法評價指標F1 值在0.4~0.7之間波動,呈上升趨勢。同時,與基于原始矩陣推薦商品的方法比起來,本文的推薦算法F1值較大,說明本文算法更優,推薦效果更好。
為提高圖書推薦算法的準確性,解決推薦系統中冷啟動的問題,本文從多維度加權和用戶聚類兩種方法實現圖書商品個性化推薦。充分考慮用戶之間的相關關系和圖書商品之間的相關關系,將兩者以數據加權的形式填補到“用戶-圖書商品”矩陣中,不斷更新原始二維矩陣,使之更加合理準確。通過K 均值聚類的方式給類別內目標用戶推薦得分最高的top-5 圖書商品,本文的推薦算法獲得較好的評價指標F1值。
優質的個性化推薦,能夠精準地為用戶提供其感興趣的圖書商品,不但提高用戶的閱讀體驗,而且增強閱讀者對于智慧圖書館的粘性。未來的研究可以使用外部信息對用戶維度的數據再次進行優化,豐富“用戶-圖書商品”二維矩陣數據,進一步提高推薦系統的準確性。