馮麗娟 郭夢詩
(鄭州科技學(xué)院電子與電氣工程學(xué)院)
隨著數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)通信技術(shù)的飛速發(fā)展,目前多數(shù)高校圖書館已經(jīng)開始使用計算機(jī)自動化處理模式取代傳統(tǒng)的人工服務(wù)模式,并且通過數(shù)據(jù)庫技術(shù)對圖書借閱和編目過程進(jìn)行管理。圖書館圖書管理系統(tǒng)經(jīng)過多年的積累,存儲了大量的信息。發(fā)現(xiàn)隱藏的有價值信息或關(guān)聯(lián)規(guī)則對圖書館管理和服務(wù)具有重要的指導(dǎo)意義。應(yīng)用數(shù)據(jù)挖掘技術(shù)在圖書館管理系統(tǒng)中非常重要,因為它能根據(jù)讀者的借閱記錄和借閱規(guī)律有效地發(fā)現(xiàn)教師和學(xué)生的閱讀興趣,給讀者推薦相關(guān)書籍,加強(qiáng)圖書館資源的整合和利用,調(diào)整書籍的布局模式。此外,充分有效的利用這項技術(shù)對于人們及時了解讀者的信息需求,提高圖書館的服務(wù)質(zhì)量,促進(jìn)圖書館管理具有很強(qiáng)的指導(dǎo)意義[1-3]。
正如相似度的計算和推薦算法的應(yīng)用。在相似度計算方面,用戶相似度或項目相似度的計算采用相同相似度的計算方法。常用的計算思路是:將項目的權(quán)值用N維空間向量表示,然后通過代數(shù)的方法測量兩個空間向量之間的距離和角度,從而表示相似度[4,5]。皮爾森相關(guān)系數(shù)是一種常用的基于相關(guān)系數(shù)的相似度計算方法。為了使計算準(zhǔn)確,通常需要找到評價的用戶。假設(shè)用戶i和j共同評價項目c, R為評價矩陣,則對應(yīng)的皮爾森相關(guān)系數(shù)計算公式如下:
余弦相似度是第二種相似度方法。如果項目i和j被看作兩個m維的用戶空間向量,進(jìn)行相似度計算是通過計算兩個向量的余弦角,然后,對于評分矩陣,i和j的相似度可以用以下公式計算:
調(diào)整余弦相似度是一種較為先進(jìn)的計算方法。在余弦相似度的計算過程中,不考慮用戶的評分標(biāo)準(zhǔn)不同(即部分用戶得分高,部分用戶得分低)。調(diào)整后的余弦相似度彌補(bǔ)了上述缺陷。具體來說,首先通過計算每個用戶的平均分來調(diào)整評分偏差向量的得分向量,然后求解余弦相似度,公式如下:
基于項目的相似度和基于用戶的相似度的方差分析:上述三個相似度公式都是基于項目相似度情景的,但實際上基于項目的相似度和基于用戶的相似度存在基本的區(qū)別。其中,基于項目的相似度計算公式根據(jù)評價矩陣中列向量的相似度求解相似度,而基于用戶的相似度計算公式根據(jù)評價矩陣中的行向量求解相似度。因此,以上三個公式可以分別使用。本文根據(jù)用戶的借閱情況計算用戶的相似度,因此讀者與圖書之間的相似度采用余弦相似度計算[6-9]。
在本文中關(guān)于推薦算法的使用,推薦算法是基于用戶和圖書的協(xié)同過濾推薦算法。相似的用戶和相似的書籍被探索。相似用戶被定義為借閱數(shù)量相同的用戶,相似書籍被定義為同一時期一起借的書籍?;谟脩舻膮f(xié)同過濾,用戶u和用戶v之間的相似度定義為n,書籍的借閱量由u和 v表示。n越大,用戶之間的得分向量和j更大,相似性度越大,說明這兩個用戶的相似度越高。對于每個用戶u,找到相似度最高的k個用戶,根據(jù)k個用戶的借閱記錄向v推薦圖書。在基于圖書的協(xié)同過濾中,將圖書b與圖書t的相似度定義為m,即兩者一起被借的數(shù)量。m越大,他們的相似性就越大。找出第一本相似點最多的q書并推薦給其他人?;谟脩舻膮f(xié)同過濾挖掘算法分為用戶模型的建立、最近鄰的搜索和推薦列表的生成三個階段。
首先,要建立讀者借閱模型。協(xié)同過濾算法的輸入數(shù)據(jù)通常表示為m*n個用戶的評價矩陣,其中第m行表示有m個讀者,第n列表示n本圖書;是第一個i閱讀器的第一個j項的得分值。評分值表示讀者是否借閱該書,如果是,空格填充1;如果不是,空格填充0,如表1所示。
表1 讀者
其次,應(yīng)找到最近的鄰居。在基于用戶的協(xié)同過濾推薦算法中,最重要的步驟是找到最近的鄰居用戶(相似讀者)。通過計算目標(biāo)閱讀者與其他閱讀者之間的相似度,計算出與目標(biāo)閱讀者最相似的近鄰集。第一步是搜索與目標(biāo)讀者最相似的近鄰集合,u與用戶UK在U中的相似度按降序排列。它的定義是:用戶共同借閱的圖書越多,u和UK之間的相似度就越大。下一步是選擇k個相似度大于設(shè)置閾值的用戶。假設(shè)k的最大值為20(當(dāng)然,其他參數(shù)(如5或10)也可以根據(jù)需要選擇)。
最后,生成圖書推薦列表。推薦結(jié)果保存在數(shù)據(jù)庫表中,包括讀者姓名、圖書卡號和推薦書目名稱。讀者登錄圖書推薦系統(tǒng)后,圖書推薦系統(tǒng)根據(jù)讀者的信息,將有針對性的推薦信息呈現(xiàn)給讀者,實現(xiàn)個性化的圖書推薦?;趫D書的協(xié)同過濾推薦算法的原理與基于用戶的協(xié)同過濾推薦算法相似,其主要過程包括圖書相似度的計算和推薦的生成。第一階段,計算圖書與圖書之間的相似度。計算書i和書j相似度的基本思想是基于讀者對書的評價矩陣;每個項目的得分被視為一個n維用戶空間向量。然后,根據(jù)相似度度量公式計算兩者之間的相似度。第二階段,根據(jù)生成的相似圖書列表,選擇相似度最高的前m本(如20本),并存儲在數(shù)據(jù)庫表中,以便圖書推薦系統(tǒng)可以隨時調(diào)用?;趫D書的協(xié)同過濾算法的關(guān)鍵步驟也是計算項目之間的相似度,選擇最相似的項目,類似于基于用戶的協(xié)同過濾。
協(xié)同過濾挖掘是由建立用戶模型、尋找最近鄰和生成推薦列表三個過程組成。下面幾節(jié)將闡述挖掘的實現(xiàn)過程。論文重點描述了基于用戶的協(xié)同過濾挖掘的實現(xiàn)過程。算法的具體處理流程如下圖1所示。
圖1 算法流程圖
由圖1可知,基于用戶的協(xié)同過濾算法首先輸入用戶物品的二維矩陣,然后采用相似度公式計算用戶之間的相似度,推導(dǎo)出用戶的偏好集,最后為每個用戶生成推薦列表。下一步是建立讀者圖書的二維矩陣模型,在SQL中建立推薦書數(shù)據(jù)庫,存儲推薦系統(tǒng)中使用的各種數(shù)據(jù)表。在介紹將從圖書館發(fā)行系統(tǒng)中篩選出的用戶借閱記錄復(fù)制到建立的借閱表中之后,算法將借閱表中讀者的借閱記錄復(fù)制到用戶表中的卡號和用戶名信息。
最后,是在book表中復(fù)制Borrow表中的書名。在上述數(shù)據(jù)準(zhǔn)備的基礎(chǔ)上,現(xiàn)階段是建立讀者圖書二維矩陣模型的時候。在初始化過程中,在借用記錄中填充二維矩陣后,算法繼續(xù)尋找最近鄰集?;谟脩舻膮f(xié)同過濾計算,首要目標(biāo)是得到一個與目標(biāo)用戶相似的用戶集。本文在此定義了20個以上的鄰居用戶(或根據(jù)需要設(shè)置其他鄰居的數(shù)量)。
在用戶相似度計算方面,本文主要定義了一個用戶二維矩陣top20booknums[users.count,20]。計算行數(shù)和20列以存儲20個具有最大相似度的用戶。相似度逐漸由高到低排序。同時,一個二維矩陣top20cardnums[users.count,20]被定義為在二維矩陣top20booknums中存儲用戶信息。接下來的任務(wù)是為每個用戶依次找到最相似的20個鄰居。用戶相似度是通過相似的借書數(shù)量來衡量的。由于上述過程已經(jīng)在二維借閱矩陣中填寫了讀者借閱記錄,其中1意味著“有借閱記錄”和0意味著“沒有借閱記錄”,本節(jié)將根據(jù)公式(2)計算用戶I和用戶j的相似度。如表1和表2所示,如果本文計劃計算讀者1和2之間的相似度,我們可以將讀者1的向量設(shè)為u1 =(1,0, 0, 1, 1)和讀者2的向量設(shè)為u2 =(1, 1, 1, 1, - 1)。讀者1和2之間的相似性可根據(jù)上述公式計算。通過這樣的類比,最終可以得知每個用戶最相似的20個鄰居。
通過以上相似度計算,本文獲得最多20個相似用戶,并將這20個用戶的信息和相似度值輸入到數(shù)據(jù)庫表User Similarity中。接下來的任務(wù)是為每一個用戶推薦一本書,即向目標(biāo)用戶推薦鄰居借閱的書籍。定義了二維矩陣后,通過在圖書推薦二維矩陣中輸入推薦信息,就可以得到每個讀者的圖書推薦信息。為強(qiáng)化推薦結(jié)果,對讀者的喜好進(jìn)行了特別排序。到目前為止,基于用戶的協(xié)同過濾結(jié)果已經(jīng)存儲在相應(yīng)的表中。當(dāng)用戶登錄系統(tǒng)時,系統(tǒng)會自動識別用戶信息并推薦相關(guān)書籍。
基于上述思路進(jìn)行編程,可得到如表2、表3所示的測試結(jié)果。從表3可以看出,兩種算法的推薦效率(即準(zhǔn)確率)會隨著鄰居閾值的增大而降低,歸因于協(xié)同過濾中存在的稀疏性和冷啟動問題。例如,基于用戶的協(xié)同過濾算法的稀疏性問題是圖書館的書號絕對高于學(xué)生號。被讀者借閱的書籍可能還不到圖書館藏書的2%。不同讀者借同一本書的可能性非常低,甚至為零。而研究結(jié)果表明,當(dāng)用戶評估項目總數(shù)小于10%時,容易導(dǎo)致評估矩陣數(shù)據(jù)的嚴(yán)重稀疏性。因此,本文算法無法找到與用戶具有相似偏好的鄰居。在基于圖書的協(xié)同過濾中也存在許多類似的問題?;跁膮f(xié)同過濾推薦與用戶以前喜愛的書籍風(fēng)格相同的書籍。該算法通過分析閱讀者對物品的評分來計算物品之間的相似度。因此,推薦同類書籍讓讀者借閱。應(yīng)注意特殊用戶問題是由于部分讀者的圖書證經(jīng)常被其他讀者借閱,這些讀者沒有固定的興趣和愛好。而這恰好構(gòu)成了基于用戶的協(xié)同過濾系統(tǒng)的前提。在這種情況下,系統(tǒng)很難為這些讀者找到鄰居,也不能給出精確的推薦信息。
表2 基于用戶的協(xié)同過濾
表3 基于用戶的協(xié)同過濾
比較兩種算法的推薦效果,基于圖書的協(xié)同過濾的預(yù)測成功率(準(zhǔn)確率)明顯高于基于用戶的協(xié)同過濾。原因與訓(xùn)練數(shù)據(jù)量有限有關(guān)。由于本文采用的借閱數(shù)據(jù)僅涵蓋2012年的借閱記錄,大部分讀者的借閱記錄都找不到。在該系統(tǒng)中,相似用戶的計算方法將其定義為項目的向量。讀者中有相當(dāng)罕見的常見借閱記錄。數(shù)據(jù)查詢和分析結(jié)果表明,許多讀者只有一本常見的借書。因此,用這種方法發(fā)現(xiàn)的鄰居可能不是擁有相同利益的鄰居。然而,這個問題在書中并沒有出現(xiàn)在基于相似性的算法中?;趫D書的協(xié)同過濾效果遠(yuǎn)遠(yuǎn)超過基于用戶的協(xié)同過濾效果。基于這個原因,很多購物網(wǎng)站和圖書網(wǎng)站設(shè)計了基于協(xié)同過濾的推薦系統(tǒng)。
在推薦效果方面,結(jié)果仍不盡如人意。一方面,檢索到的數(shù)據(jù)都記錄在2012年(自循環(huán)系統(tǒng)所使用的單位不能存儲借閱歷史總體的讀者,但只能查詢2012年的借閱記錄)和推薦的圖書信息系統(tǒng)不能發(fā)現(xiàn)在測試記錄。但這并不意味著讀者在2011年、2010年或更早的時候不再借書,也不意味著他們將不再借書。另一方面,通過以往的驗證結(jié)果表明,用戶或項目的鄰居號對推薦效果有很大的影響。例如,適當(dāng)縮短鄰居數(shù)閾值或圖書鄰居閾值,相應(yīng)圖書推薦的成功率也會提高。此外,根據(jù)作者的調(diào)查,許多讀者的借書證會被他人用來借書,這在一定程度上影響了推薦效果。
隨著數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)通信技術(shù)的飛速發(fā)展,絕大多數(shù)高校圖書館都已實現(xiàn)由傳統(tǒng)的手工服務(wù)模式向計算機(jī)自動處理模式的轉(zhuǎn)變。為了進(jìn)一步提高圖書館管理的信息化程度,本文采用改進(jìn)的基于協(xié)同過濾關(guān)聯(lián)規(guī)則的算法對高校圖書館管理數(shù)據(jù)挖掘進(jìn)行研究,并以圖書館的真實借閱記錄為基礎(chǔ),采用基于用戶和基于圖書的協(xié)同過濾技術(shù),設(shè)計合適的圖書推薦系統(tǒng),挖掘讀者借閱偏好與圖書關(guān)聯(lián),最終得出讀者借閱規(guī)則。這樣,系統(tǒng)就實現(xiàn)了適合讀者的個性化圖書推薦功能。最后,通過測試對推薦系統(tǒng)的有效性和預(yù)測性進(jìn)行評估,得出基于圖書的協(xié)同過濾算法比基于用戶的協(xié)同過濾算法具有更高的預(yù)測準(zhǔn)確率的結(jié)論,對圖書館的圖書推薦工作具有一定的參考價值。