劉佳奇 王全民
(北京工業大學計算機學院 北京 100124)
當今時代信息過載嚴重,人們從海量信息中獲取自己感興趣的信息的難度越來越高,因此推薦系統作為解決這個問題的有效手段得到了廣泛的應用。目前主流的推薦系統所采用的技術包括協同過濾、基于內容、關聯規則和混合的推薦[1]。其中協同過濾推薦算法是由Goldberg[2]等人在文獻中提出。基于協同過濾的算法主要包括基于用戶的協同過濾和基于物品的協同過濾算法。
傳統的基于用戶的協同過濾算法的思路大概可以分為兩步:1)找到和目標用戶興趣相似的用戶集合。2)找到這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給目標用戶。以上基于用戶的協同過濾算法設計的方式在實際的應用中會存在一些問題。比如計算用戶的相似度時需要有用戶的歷史行為數據,沒有歷史行為的用戶則無法進行推薦,這就造成了推薦的冷啟動問題。用戶的興趣隨著時間的推移會出現衰減的現象[3],而傳統的協同過濾算法無法捕捉到用戶興趣的時間維度的信息,從而造成無差別的用戶興趣推薦結果。由于熱門的圖書會被很多人借閱,所以傳統的協同過濾算法的推薦結果中會有較多占比的熱門商品,但是用戶對于熱門商品的熟悉程度往往會很高,推薦系統的目的主要是為用戶推薦其不熟知的商品,所以熱度商品的打壓也是傳統的協同過濾算法需要解決的問題[7]。
針對以上基于用戶的協同過濾算法存在的問題,論文針對高校圖書借閱的使用場景和高校產出的日常數據對以上問題作出改進。分別通過多維度數據的加權來定義相似用戶,基于時間衰減的用戶行為模型和熱門圖書的打壓策略對協同過濾存在的問題進行改進。
協同過濾算法(User-cf)首先需要根據用戶的歷史借閱信息來為用戶計算與其相似度最高的用戶,然后再為用戶推薦其相似用戶借閱過而他沒有借閱過的圖書。

圖1 興趣隨時間衰減統計圖
首先,我們需要計算用戶對其歷史借閱圖書的評分,生成基于歷史行為的用戶-圖書的評分矩陣。論文使用用戶對圖書的累積借閱時長來表示用戶對圖書的興趣值。但是用戶的興趣會隨著時間的推移而發生變化,用戶近期的借閱興趣應該被賦予更高的權重,因此論文在計算用戶對圖書的評分引入了時間衰減因素。
上圖是統計的用戶興趣衰減模型,本文使用了用戶近一個月的借閱記錄作為準確率的測試集,在最近一個月內用戶借閱過該圖書則判定為正樣本。其中,橫坐標代表用戶還書日期節點距離當前時間節點的周數,縱坐標是基于不同時間節點用戶的借閱圖書記錄通過User-cf算法計算的用戶可能感興趣圖書的top20的推薦準確率。論文使用了貝葉斯平滑對計算的準確率結果做了平滑處理。從上圖可以看出,隨著借閱日期距離當前時間節點的增加,用戶的興趣呈衰減的趨勢,結合到圖書借閱場景的意義是用戶距離當前時間越接近的借閱行為越能代表用戶近期的興趣。從圖像可以看出,使用指數函數可以對用戶興趣隨時間的衰減曲線進行較好的表示,所以本文使用了指數函數去擬合時間衰減系數。論文基于興趣衰減的計算公式為

其中,scoreab代表用戶a對圖書b 的評分,timeab代表用戶a對圖書b在第j 天的借閱時長,j 取的是還書日期。是時間衰減因子,它會隨著用戶借閱圖書的日期距離當前時間節點的增加而減小,tc和Tj分別代表當前時間和借閱的時間。n 代表用戶a對圖書b 的借閱次數。然后對評分做歸一化處理即為最終評分。
通過以上方法計算得用戶-圖書的興趣矩陣后,計算用戶之間的兩兩相似性,論文選用余弦相似度計算方法來計算用戶間相似性,余弦相似度更加注重兩個向量在方向上的差異,所以更加適合當前問題的場景,計算公式為

獲得用戶間相似度后每個用戶取與自己相似度最高的top50 用戶,獲取這部分用戶借閱的圖書中被推薦用戶沒有借閱過的圖書,按照如下公式計算用戶對圖書的打分:

其中scoreaj代表被推薦用戶a對圖書j 的評分,scorebj代表與被推薦用戶相似度最高的top50用戶b對圖書j 的評分,similarityab是用戶a 與用戶b 的相似度。
可以看出,論文從用戶行為的時間的維度上對用戶的興趣做了重新的判定,從而捕捉到用戶近期真正的興趣,因此本文將改進User-CF 命名為UT-CF。
2.2.1 基于網絡日志的用戶聚類
基于用戶的協同過濾算法需要被推薦的用戶有一定數量的歷史借閱記錄,通過數據分析發現大多數的用戶借閱的圖書非常少或者沒有歷史借閱記錄。這樣就帶來了用戶的冷啟動問題。論文解決這個問題的方式是試圖通過從用戶其他的行為數據中的提取用戶的興趣來指導用戶的圖書推薦。
用戶日常產出的能代表用戶興趣的行為數據我們自然能想到用戶的上網日志。目前對于用戶網絡日志(url)的聚類算法已有較多成熟的模型,論文借鑒現有的思路[10],首先對用戶的url 記錄做分詞處理,通過統計詞頻的方式生成用戶上網日志的向量,在用k-means 算法將url 向量進行聚類。我們假定聚類到同一個類簇的用戶具有相似的興趣,因此將聚類到同一類簇的用戶進行形似度加權得到用戶覆蓋度更高,精度更準確的用戶間相似性,加權公式如下:

其中similaritybook和similaritynet分別代表通過用戶圖書的借閱信息和上網日志得出的用戶間相似度,ωi和ωj是超參數,用于控制相似度融合的權重。
2.2.2 基于學院信息的用戶聚類
網絡日志的聚類可以提升用戶的覆蓋率,同時可以提升用戶相似性判定的準確性。但是實驗結果發現這種方式沒有達到理想的效果,主要的問題表現在通過用戶網絡日志的聚類的興趣不能跟用戶的圖書借閱興趣很好的匹配。
論文針對以上問題,結合高校用戶借閱圖書的特點,發現了高校用戶借閱圖書的一個特點。高校的用戶借閱的圖書大多是本專業的圖書,結合這一特點,論文假定同一專業的用戶有相似的圖書借閱興趣。同時結合學校的學部信息將用戶的相似性進行更詳細的劃分,劃分的思路是同一學院的用戶相比同一學部的用戶擁有更高的相似性,基于這種思路可以得到根據用戶的學院信息得到的用戶間相似性similarityacademy。最終的用戶間相似度計算公式如下:

通過以上的方式,我們得到了可以滿足100%用戶覆蓋率的準確性較高的用戶間相似度計算方式,這里融合的規則與上一節中上網日志與圖書借閱行為融合的方式相同。
由于熱門圖書是多數用戶都會借閱的圖書,所以基于用戶的協同過濾算法為用戶推薦的圖書中會有較大占比的熱門圖書。這部分的圖書在用戶群體中的熟知度往往較高,即使沒有為用戶推薦用戶大概率也會知道該圖書,所以為用戶推薦熱門圖書不僅會浪費推薦資源而且會造成用戶體驗感的下降。
論文通過從圖書推薦候選集中將借閱頻次最高的5%的圖書去除,以達到避免過多的推薦熱門圖書的目的,從而提升了推薦結果的多樣性。
由于高效用戶借閱圖書的數據過于稀疏,用戶的借閱行為非常不穩定,為了較好地驗證實驗的效果,論文計算準確率和召回率時使用的測試集是最近一個月內有借閱行為的用戶數據。

表1 選取每個用戶的相似用戶數的實驗
其中TopN 是指為每個用戶選取的相似用戶數量,圖書覆蓋率指為用戶召回的所有圖書占圖書館所有圖書的比例。根據以上指標,實驗選擇每個用戶相似用戶數量為50。

表2 多源數據的相似度融合方法對應的實驗效果
從以上實驗結果可以看出,優化后的協同過濾算法在準確率和召回率上都有了較大的改進。

表3 多源數據的相似度融合方法對應的實驗結果
其中,UT-CF表示基于時間衰減的基于用戶的協同過濾算法,NUT-CF 為融合了用戶上網信息和圖書借閱的用戶相似度算法,AUT-CF 為融合了用戶學院信息和圖書借閱的用戶相似度算法,ANUT-CF 為融合了用戶上網信息,學院信息和圖書借閱的用戶相似度算法。

表4 熱門圖書的打壓試驗對應的實驗結果
從以上實驗結果可以看出,隨著熱門圖書打壓力度的提升,圖書覆蓋率在提升,但是去除了top8%的熱門圖書后,準確率和召回率出現了較大幅度的下降,因此對top5%的熱門圖書做熱度打壓。
協同過濾算法作為個性化推薦系統的基礎算法被廣泛應用在各個個性化推薦場景中,冷啟動問題和數據的稀疏性帶來的精度低的問題一直是協同過濾算法所面臨的問題。論文基于改進的用戶協同過濾算法,結合高校圖書借閱的場景以及用戶產出的數據,分別通過多源數據的相似度加權,基于時間衰減的用戶興趣模型對以上問題進行改進,并取得了明顯的效果。
論文更多的是從用戶角度解決了基于用戶的協同過濾的一些問題,但是高校圖書館經常會上一些新的圖書,這部分圖書由于沒有用戶借閱過,所以會帶來圖書的冷啟動問題,所以優化的基于物品的協同過濾算法也是可以對當前的推薦場景起有很大幫助的。