(浙江工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310023)
隨著信息化的飛速發(fā)展,數(shù)字圖書館的快速建設(shè),高校圖書館存儲(chǔ)了大量學(xué)生讀者的行為數(shù)據(jù),如何有效利用這些數(shù)據(jù)挖掘出有價(jià)值的信息成為了研究的重要方向。于此同時(shí),個(gè)性化推薦在網(wǎng)絡(luò)生活中的作用越來(lái)越明顯,準(zhǔn)確、高效的推薦系統(tǒng)可以挖掘用戶潛在的消費(fèi)傾向。高校圖書館個(gè)性化推薦是將高校圖書館大數(shù)據(jù)與個(gè)性化推薦結(jié)合的最好案列。
當(dāng)前主流的核心推薦算法[1-4]有:1) 基于內(nèi)容的推薦算法,它根據(jù)用戶過(guò)去喜歡的產(chǎn)品,為用戶推薦和他過(guò)去喜歡的產(chǎn)品相似的產(chǎn)品;2) 基于關(guān)聯(lián)規(guī)則的推薦算法,同一用戶借閱的不同圖書可以認(rèn)為之間有著關(guān)聯(lián)關(guān)系,從借閱信息中搜索關(guān)聯(lián)度最高的圖書集合可以作為圖書推薦的重要參考,李默等提出了一種基于標(biāo)簽和關(guān)聯(lián)規(guī)則挖掘的圖書組合推薦模型[5];3) 基于協(xié)同過(guò)濾的算法,基于用戶的協(xié)同過(guò)濾與項(xiàng)目無(wú)關(guān),它尋找當(dāng)前用戶最相似的鄰近用戶,推薦鄰近用戶借閱的圖書給當(dāng)前用戶。黃太波等在數(shù)據(jù)量不同的情況下對(duì)不同的協(xié)同過(guò)濾算法進(jìn)行了對(duì)比[6];何佶星等提出了一種基于項(xiàng)目評(píng)分系統(tǒng)的流行度劃分結(jié)合平均偏好權(quán)重的協(xié)同過(guò)濾推薦算法[7];此外,王鵬等還提出了一種基于社會(huì)網(wǎng)絡(luò)的圖書推薦算法[8]。
高校圖書館的圖書數(shù)量遠(yuǎn)大于學(xué)生數(shù)量,所以使用基于內(nèi)容的推薦算法或者基于內(nèi)容的協(xié)同過(guò)濾算法計(jì)算量太大,并不適用[9]。而基于用戶的協(xié)同過(guò)濾算法適合用戶比項(xiàng)目少(例如高校圖書館)的情況。該算法利用用戶之間的相似性通過(guò)周圍用戶對(duì)某項(xiàng)目的評(píng)分來(lái)計(jì)算目標(biāo)用戶對(duì)該項(xiàng)目的評(píng)分[10]。評(píng)分矩陣[11]定義如下:用戶對(duì)于項(xiàng)目的興趣可以表示為1 個(gè)U×I的矩陣R,行向量表示1 個(gè)用戶的評(píng)分集合,列向量表示1 個(gè)項(xiàng)目的被評(píng)分集合。4 個(gè)用戶與4 個(gè)項(xiàng)目的評(píng)分矩陣為
(1)
然而,目前高校圖書館普遍缺乏為讀者提供評(píng)分的渠道。文獻(xiàn)[12]使用借閱持續(xù)時(shí)間這個(gè)特征作為興趣度,文獻(xiàn)[13]在其基礎(chǔ)上增加了圖書的大眾受歡迎度的特征,但上述論文只是將特征直接使用,沒有作歸一化處理,導(dǎo)致結(jié)果偏差較大。筆者在兩者基礎(chǔ)上增加了續(xù)借次數(shù)作為興趣度模型的一部分,并做了歸一化處理。
高校圖書館圖書數(shù)量太大,導(dǎo)致讀者與圖書能產(chǎn)生關(guān)系的矩陣非常稀疏。聚類是緩解矩陣稀疏的方法之一[14-15],文獻(xiàn)[16]提出使用混合協(xié)同過(guò)濾的方法來(lái)解決矩陣稀疏的問題。該方法是在用戶協(xié)同過(guò)濾的基礎(chǔ)上,再使用基于項(xiàng)目的協(xié)同過(guò)濾來(lái)加權(quán)得到缺失的評(píng)分。在圖書借閱信息中,只能通過(guò)有限的信息來(lái)取得圖書之間的相似性權(quán)重,筆者提出使用中圖分類號(hào)計(jì)算出的類型因子作為加權(quán)的權(quán)重。
所以筆者提出了基于興趣度模型與類型因子的高校圖書推薦算法,它是一種在不改變現(xiàn)有高校圖書館系統(tǒng)的結(jié)構(gòu),完全基于借閱記錄的推薦算法。
協(xié)同過(guò)濾需要選擇具有用戶相關(guān)性的特征計(jì)算用戶之間的相似性。筆者使用讀者對(duì)不同類型圖書的借閱頻次u(i)作為讀者的特征,特征向量U=(u(1),u(2),…,u(n)),其中n為圖書類型的數(shù)量。
k鄰近搜索是1 個(gè)在尺度空間中尋找最近點(diǎn)的優(yōu)化問題。先選定1 個(gè)樣本,通過(guò)計(jì)算與樣本的距離,獲得與目標(biāo)節(jié)點(diǎn)距離最近的k個(gè)鄰居。使用U作為用戶特征。由于余弦相似能很好的反映讀者在各個(gè)圖書類型上的借閱比例,即用戶的借閱偏好的相似性,所以使用余弦相似來(lái)計(jì)算用戶之間的相似度為
(2)
將與目標(biāo)讀者的距離最小的k個(gè)近鄰讀者組成1 個(gè)讀者集合,用Uk表示。
提出使用讀者對(duì)某本圖書的借閱時(shí)長(zhǎng),該圖書的受大眾歡迎度以及續(xù)借次數(shù)3 個(gè)維度的特征來(lái)構(gòu)建興趣度模型。
2.2.1 借閱時(shí)長(zhǎng)
讀者對(duì)1 本圖書借閱時(shí)間越長(zhǎng)說(shuō)明其對(duì)該圖書越感興趣。計(jì)算1 條借閱記錄的借閱時(shí)長(zhǎng)百分比為
(3)
式中:Tr(u,i) 為讀者u返還圖書i的時(shí)間;Tb(u,i) 為讀者u借閱圖書i的時(shí)間;Tc為圖書館的超期臨界值。如果某條借閱數(shù)據(jù)超期,很有可能是學(xué)生忘記了歸還讀書,或借閱時(shí)間處于寒暑假,學(xué)生無(wú)法及時(shí)歸還圖書,應(yīng)該把這條數(shù)據(jù)作為噪聲數(shù)據(jù)刪除。然后將百分比映射為1~5的興趣度值,即
(4)
2.2.2 圖書受歡迎度
可以認(rèn)為在圖書館中被借閱次數(shù)越多的圖書,讀者感興趣的程度會(huì)越高。以圖書被借閱的次數(shù)t劃分圖書的受歡迎度,以圖書被借閱次數(shù)的最大值max為基準(zhǔn)將圖書劃分為5 個(gè)級(jí)別,分別賦予1~5的興趣度值,即
(5)
2.2.3 續(xù)借次數(shù)
只有讀者在對(duì)圖書非常感興趣的時(shí)候,才會(huì)對(duì)圖書進(jìn)行續(xù)借,否則即使在臨界時(shí)間內(nèi)還未看完也會(huì)將圖書歸還,由于續(xù)借次數(shù)tr對(duì)興趣度影響較大,所以將該因素的分值設(shè)置的相對(duì)較高,即
(6)
最終以3 個(gè)分量的平均值作為讀者u對(duì)圖書i的綜合興趣度值,即
like(u,i)=[like1(u,i)+like2(u,i)+
like3(u,i)]/3
(7)
2.3.1 圖書類型因子計(jì)算
根據(jù)中國(guó)圖書館圖書分類法,每一本圖書都有自己的圖書編號(hào),該編號(hào)是一串字符串序列S1S2…Sk…Slength,包括英文字母和數(shù)字,每1 個(gè)字符表示1 個(gè)類別,左邊的字符表示大的分類,右邊的字符表示小的分類。
兩本圖書之間的類型因子factor(i,j)為
(8)
式中:length為圖書編號(hào)的總位數(shù);k為圖書i和圖書j編號(hào)中最后一個(gè)相同字符的位置下標(biāo)。
2.3.2 補(bǔ)全興趣度矩陣中的數(shù)據(jù)
由于興趣度矩陣的稀疏性,通過(guò)計(jì)算近鄰讀者對(duì)已借圖書的興趣度進(jìn)行類型因子加權(quán)得到興趣度矩陣中缺失的數(shù)據(jù),即
(9)
式中:v為目標(biāo)讀者的近鄰讀者,v∈Uk;B(v) 為近鄰用戶v的圖書借閱集合。
2.3.3 協(xié)同過(guò)濾計(jì)算
將興趣度矩陣中的數(shù)據(jù)補(bǔ)全以后,接下來(lái)就可以使用協(xié)同過(guò)濾來(lái)計(jì)算目標(biāo)用戶對(duì)目標(biāo)圖書的推薦度like(u,i),即
(10)
式中sim(u,v) 為由式(2)計(jì)算出的讀者u與讀者v之間的余弦相似度。根據(jù)運(yùn)算結(jié)果,可以將預(yù)測(cè)出的目標(biāo)讀者u對(duì)圖書興趣度進(jìn)行排名,得到1 個(gè)top-N的推薦集合。
算法基于興趣度模型與類型因子的協(xié)同過(guò)濾算法
輸入目標(biāo)讀者u,用戶借閱記錄(包含賬號(hào),借閱圖書的中圖編號(hào)、圖書類別,借閱時(shí)間Tr和歸還時(shí)間Tb),圖書超期臨界值Tc,近鄰數(shù)k,推薦個(gè)數(shù)N。
輸出Top-N的圖書推薦列表
1) 統(tǒng)計(jì)讀者的借閱圖書類別頻次向量U。
2) 使用式(2)余弦相似公式得到與目標(biāo)讀者u最相似的k個(gè)近鄰讀者。
3) 使用式(7)計(jì)算所有近鄰讀者v對(duì)目標(biāo)圖書i的興趣度like(v,i)。若v與i不存在借閱關(guān)系,則執(zhí)行4);若存在借閱關(guān)系,執(zhí)行5)。
4) 使用式(8)計(jì)算圖書之間的類型因子,并使用式(9)補(bǔ)全評(píng)分矩陣中的缺失值。
5) 使用式(10)計(jì)算u對(duì)未借圖書i的興趣度like(u,i)。
6) 得到所有推薦圖書的預(yù)測(cè)興趣度最大的N個(gè)讀者。
由于高校圖書借閱數(shù)據(jù)興趣度矩陣稀疏的特點(diǎn),并且通過(guò)數(shù)據(jù)計(jì)算發(fā)現(xiàn)近鄰集合中被借閱多次的圖書只占所有圖書的3%,所以難以使用推薦命中率和查全率去評(píng)判算法的推薦效果。因此,選擇使用平均絕對(duì)誤差MAE來(lái)衡量算法的效果。MAE是最常用的一種衡量推薦算法效果的標(biāo)準(zhǔn)[17],它是推薦集合與測(cè)試集合的評(píng)分差值,即
(11)
實(shí)驗(yàn)環(huán)境為Intel(R) Core(TM)i7-4712MQ CPU @2.30 GHz,內(nèi)存8 G,500 G硬盤,操作系統(tǒng)為Windows 8,算法使用Java編寫。使用的數(shù)據(jù)來(lái)自浙江某高校圖書館2010年至2011年的借閱數(shù)據(jù)記錄,數(shù)據(jù)庫(kù)為mysql,涵蓋18 個(gè)學(xué)院,22 個(gè)圖書類型,借閱記錄543 958條。借閱記錄數(shù)據(jù)包括自增字段、用戶編號(hào)、用戶名稱、用戶性別、學(xué)院編號(hào)、學(xué)院名稱、操作類型、操作時(shí)間、中圖分類號(hào)、圖書名稱、圖書類型、圖書作者、圖書出版社、圖書出版年份和isbn編號(hào)等15 個(gè)維度。
實(shí)驗(yàn)剔除了部分字段缺失的借閱記錄和重復(fù)記錄。經(jīng)過(guò)對(duì)每位用戶在不同類型圖書上的借閱頻次的統(tǒng)計(jì)可以構(gòu)建1 張新的數(shù)據(jù)表。由于圖書有22 個(gè)類別,所以新表的數(shù)據(jù)一共有22 個(gè)維度。表1是從數(shù)據(jù)表中截取的一部分學(xué)生的圖書借閱頻次,從表1可以明顯發(fā)現(xiàn)不同學(xué)院的學(xué)生借閱圖書的類型分布差異非常明顯。
表1 用戶借閱頻次統(tǒng)計(jì)表Table 1 User borrowing frequency
接著將表1的用戶進(jìn)行最近鄰搜索。表2是當(dāng)近鄰數(shù)k=5 個(gè)時(shí),其中2 位讀者的近鄰用戶及用戶相似度。
表2 讀者近鄰用戶表Table 2 Reader’s close neighbor user
4.3.1 不同近鄰數(shù)k和不同推薦數(shù)N下的MEA比較
實(shí)驗(yàn)設(shè)置:為了對(duì)比算法在不同近鄰數(shù)k和不同推薦個(gè)數(shù)N環(huán)境下的推薦效果,使用1 000 名讀者的借閱記錄作為實(shí)驗(yàn)樣本數(shù)據(jù)進(jìn)行推薦,得到的實(shí)驗(yàn)結(jié)果如圖1所示。
實(shí)驗(yàn)分析:在推薦系統(tǒng)實(shí)踐當(dāng)中,選取近鄰數(shù)k的值是非常關(guān)鍵的,如果k值太小則推薦效率不高,如果k值太大,則會(huì)增大算法運(yùn)行負(fù)擔(dān)。從實(shí)驗(yàn)結(jié)果可以看出:當(dāng)近鄰數(shù)從10 個(gè)增加到50 個(gè)時(shí),推薦效果明顯增強(qiáng)。這是因?yàn)楫?dāng)近鄰數(shù)很少時(shí),能推薦的書目也很少,沒有包含目標(biāo)讀者喜歡的大部分圖書。當(dāng)近鄰數(shù)k達(dá)到60 個(gè)的時(shí)候,推薦效率不再有明顯的提升。這是因?yàn)楫?dāng)近鄰數(shù)達(dá)到一定數(shù)量后,推薦的圖書中幾乎包含了目標(biāo)用戶所有感興趣的圖書。
圖1 不同近鄰數(shù)k與不同推薦數(shù)N下的MEAFig.1 The MEA of different nearest neighbors k and the different recommended number N
還可以發(fā)現(xiàn)當(dāng)近鄰數(shù)比較少時(shí),推薦個(gè)數(shù)越少效果越好,這是因?yàn)榇藭r(shí)能推薦的書目比較少,包含目標(biāo)用戶喜歡的書也少,所以推薦的圖書越多,反而將用戶不喜歡的圖書推薦了出去。當(dāng)近鄰數(shù)比較多時(shí)則推薦個(gè)數(shù)越多效果越好,這是因?yàn)榇藭r(shí)能推薦的書目多,推薦列表中包含目標(biāo)用戶喜歡的書也多。
4.3.2 與其他兩種興趣度模型的MEA比較
實(shí)驗(yàn)設(shè)置:為了證明筆者提出的基于3 種因素建立的三維興趣度模型的推薦效果比文獻(xiàn)[11]中的一維興趣度模型和文獻(xiàn)[12]中的二維興趣度模型的效果更好,首先將其他兩種模型都進(jìn)行歸一化處理,否則無(wú)法比較。在不同近鄰數(shù)k參數(shù)下進(jìn)行了實(shí)驗(yàn)。設(shè)置推薦個(gè)數(shù)N為30,樣本讀者數(shù)量為1 000 人。實(shí)驗(yàn)結(jié)果如圖2所示。
圖2 不同興趣度模型的MEAFig.2 The MEA of different interest models
實(shí)驗(yàn)分析:從實(shí)驗(yàn)結(jié)果可以看出,一維和二維興趣度模型的MEA相差不大,筆者提出的改進(jìn)過(guò)的三維興趣度模型比其他兩種興趣度模型的推薦效果更好。這是因?yàn)槔m(xù)借次數(shù)是最能反映讀者喜好的一個(gè)因素,比其他兩種因素對(duì)用戶興趣度的反映更明顯。
4.3.3 中圖類型因子與書名分詞的MEA比較
實(shí)驗(yàn)設(shè)置:為了比較書名分詞之后相同詞語(yǔ)詞頻的圖書權(quán)重和中圖號(hào)類型因子的圖書權(quán)重的推薦效果,本實(shí)驗(yàn)使用Stanford的NLPCORE分詞庫(kù)進(jìn)行分詞,并在不同近鄰數(shù)k的參數(shù)下進(jìn)行了比較。設(shè)置推薦個(gè)數(shù)N為30,讀者數(shù)量1 000 人。實(shí)驗(yàn)結(jié)果如圖3所示。
圖3 類型因子與書名分詞權(quán)重的MEAFig.3 The MEA of the weight of the type factor and segmentation of book name
實(shí)驗(yàn)分析:從實(shí)驗(yàn)結(jié)果來(lái)看,基于類型因子的權(quán)重比基于書名分詞權(quán)重的推薦效果要好。這是因?yàn)槿舭磮D書書名分詞并統(tǒng)計(jì)相同詞頻的次數(shù)作為相似度會(huì)產(chǎn)生一定的問題,例如《人月神話》是一本軟件工程方面的圖書,按書名來(lái)分可能會(huì)被歸到神話小說(shuō)的類別。而筆者提出的中圖分類號(hào)類型因子,它不僅可以反映圖書類型等顯性信息,還能反映出書架位置、是否屬于同一叢書等隱性信息的相似性。當(dāng)近鄰數(shù)在20 個(gè)以內(nèi)時(shí),由于得到的待推薦圖書列表重合率較低,所以MEA值相差較大。當(dāng)聚類數(shù)達(dá)到50 個(gè)以上后,得到的待推薦圖書集合重合率開始變高,所以MEA值相差變小。
提出了一種基于興趣度模型與類型因子的高校圖書推薦算法。該算法的創(chuàng)新之處在于建立了一種三維的興趣度模型來(lái)表示,解決了高校圖書推薦因?yàn)槿狈υu(píng)分而無(wú)法使用協(xié)同過(guò)濾算法的問題,并且使用類型因子解決借閱關(guān)系稀疏的問題。實(shí)驗(yàn)表明:筆者所提算法在高校圖書館應(yīng)用中有一定的推薦效果和實(shí)用價(jià)值。之后的研究可以在筆者所提的興趣度模型之上找到一種更能精確表達(dá)讀者興趣度的方法,使推薦效果更好。