劉濤
(南京工程學院計算機工程學院,南京 211167)
近些年來,互聯網技術蓬勃發展,即將進入5G時代的移動互聯網、物聯網、云計算等技術都是各個國家和公司的關注重點。與此同時,全球互聯網能產生的信息量級也從TB發展為PB,甚至ZB。信息量的飛速增長,使人們能獲取更多的信息資源,但也增加了人們獲取所需信息的難度,這被成為“信息超載”。如何解決“信息超載”,節約人們的時間和精力,成為研究的重點。
搜索引擎是一種解決方案,但隨著數據量的增加,僅僅通過搜索往往已經滿足不了人們的需求,推薦系統成為一種更好的解決方案,相比搜索引擎的“一對多”,推薦系統實現了“一對一”的服務方式,它能夠根據每個用戶的個人愛好和習慣,做出個性化推薦。同時還能夠及時跟蹤用戶需求的變化,做出的推薦也會跟著需求的變化而變化。
大學圖書館擁有著數十萬甚至數百萬的圖書資源。向喜歡或需要的讀者推薦相應的圖書,實現圖書的個性化推薦,具有十分重要的意義。
目前,推薦系統中的推薦技術主要有關聯規則、基于內容的推薦、協同過濾和混合推薦方法。協同過濾根據其他用戶的偏好向目標用戶進行推薦。它首先找到與目標用戶的偏好一致的一組鄰居用戶,然后分析鄰居用戶,并推薦鄰居用戶喜歡的目標。協同過濾具有以下優點:①不需要考慮推薦項目的內容;②可以為用戶提供新的推薦;③訪問網站時對用戶的干擾較小;④技術易于實現。因此,它已經成為一種流行的推薦技術。
以下為協同過濾技術分類如圖1所示。

圖1

圖2
算法流程:
輸入:用戶數據
輸出:用戶感興趣圖書
(1)按照規則對用戶借閱記錄打分(1為最低,5為最高)。
(2)評分矩陣構建,使用一年的學生借閱數據,以用戶集合U為行,以圖書集合I為列,構建評分矩陣A。Aij為用戶Ui對圖書Ij的打分。
(3)特征提取,使用SVD分解評分矩陣,將稀疏高維度評分矩陣降維存儲。獲得用戶特征矩陣和物品特征矩陣。
(4)尋找鄰居,使用KNN算法,基于歐氏距離,尋找用戶Ui的2k個鄰居。
(5)優化鄰居,利用修正關系后的距離公式,重新計算Ui與2k鄰居的距離,找到最近的k個鄰居。
(6)輸出推薦結果,對k個鄰居借閱書目使用SVD預測打分,按打分高低輸出前m個推薦書目。
現實生活中大部分矩陣都不是方陣,方陣可以使用特征值分解來描述它的重要特征,對于普通矩陣,我們使用奇異值分解來描述其重要特征。

我們假設A是一個N×M的矩陣,分解后的U就是一個N×N的方陣(U里面的向量被稱為左奇異向量),Σ是一個N×M的矩陣(除對角線元素以外的元素都是0,對角線上的元素稱為奇異值),VT(V的轉置)是一個N×N的矩陣,V里面的向量稱為右奇異向量。
我們將一個矩陣A的轉置乘A,將會得到一個方陣,我們用這個方陣求特征值可以得到:

Vi就是右奇異向量,此外:

σ是奇異值,u是左奇異向量。奇異值σ跟特征值類似,在矩陣Σ中從大到小排列,而且σ的減少特別的快,在多數情況下,前10%甚至更少的奇異值的平方和就占了全部奇異值平方和的90%以上了。也就是說,我們也可以用前r個奇異值來近似描述矩陣:

右邊的三個矩陣相乘的結果將會是一個接近于A的矩陣,r越接近于n,則相乘的結果越接近于A。而需要保存這三個矩陣的存儲空間,要遠遠小于原始矩陣A的存儲空間。
KNN算法:對于任意的n維輸入向量,其對應于特征空間一個點,輸出為該特征向量所對應的類別標簽或者預測值。它實際上的工作原理是利用訓練數據對特征向量空間進行劃分,并將其劃分的結果作為其最終的算法模型。
對新來的預測實例尋找K近鄰,然后對這K個樣本的目標值去均值即可作為新樣本的預測值。

對于用戶特征矩陣Um*n,m為用戶數量,n位特征維度。可以使用KNN獲得用戶u和v是相似用戶,但這樣不能很好地挖掘出用戶之間的興趣關系。向量g=u-v可以表示兩個用戶之間的興趣差異關系,g⊥表示g在其余(n-1)個特征維度上差異向量(為可視化方便,將(n-1)維看做1個軸,見圖3)。可見,兩個用戶只應該在g上存在差異,而與g⊥的距離應該相同。通過以下方程可以變換:



圖3

圖4
經過變化后的u'和v'在g⊥上具有了相同距離(圖4),而只在g上存在差距。使用余弦相似度計算用戶與關系g的差距:

隨機從用戶中抽取一名,編號為6334。對其進行圖書推薦。首先使用KNN模型獲得其10個鄰居,編號分別為:
[11,104,164,195,228,245,256,291,352,373]
這里設定關系為用戶6334與其10個鄰居差值的平均值,即:

使用關系距離修正模型重新計算相鄰用戶,其前5個鄰居編號為:
[291,104,164,373,245]
待評分書目集合是這5個鄰居的借閱書目集合與該用戶借閱書目集合的差集。
最后使用SVD模型對待評分書目集合打分,按高分排序,如表1所示。

表1
在如今信息超載的時代里,推薦系統已經成為現代信息社會人們獲取信息的重要技術手段,可以幫助人們獲取到真正感興趣的信息,本文提出了在奇異值分解和KNN基礎上修正關系的綜合推薦方法,提高了基于協同過濾推薦的推薦精度,能更深挖掘出讀者潛在的閱讀需求。
本文選取了本校1年的借閱數據,隨著數據規模的擴大,推薦準確率也會相應提高,但對于更大規模數據的處理,如何增加更多用戶行為,就成為了我們接下去的研究工作。