基于懲罰因子的協(xié)同過濾算法的改進與研究
引 言
隨著信息量的提升,推薦系統(tǒng)開始發(fā)揮越來越重要的作用。目前,推薦系統(tǒng)在新聞行業(yè)、娛樂媒體行業(yè)以及電子商務領域都有著重要的應用。推薦系統(tǒng)領域出現(xiàn)了多種算法, 這些算法都有著明確的應用場景,同時也各有優(yōu)缺點。常用的推薦算法包括基于內容的推薦、基于關聯(lián)規(guī)則的推薦和協(xié)同過濾算法 [1] 等,其中,協(xié)同過濾算法是推薦系統(tǒng)中的經(jīng)典算法之一,在眾多場合都有非常廣泛的應用。該算法目標明確、易于理解,同時實用性很強,無需具備專業(yè)領域的知識即可完成推薦。隨著時間的推移,推薦系統(tǒng)的性能會一直得到增強,因此該算法的自動化程度較高,同時也可較為方便地處理復雜的對象信息和非結構化數(shù)據(jù) [2]。但是協(xié)同過濾算法存在冷啟動、數(shù)據(jù)稀疏、可拓展性差等缺點 [3],這些缺點在實際應用中會影響到推薦系統(tǒng)的性能。本文從實際入手,針對協(xié)同過濾算法傳統(tǒng)的相似度公式無法抑制熱門物品的問題,提出懲罰因子的概念,給出修正后的余弦相似度計算公式,并進行實驗論證。
1 協(xié)同過濾算法
1.1 傳統(tǒng)協(xié)同過濾算法
協(xié)同過濾算法在 1992 年被提出 [5-6],該算法的第一個應用項目是 Tapestry[7]。協(xié)同過濾算法是在獲取到用戶信息后,尋找目標用戶的近鄰集合,選擇近鄰集合中感興趣的對象推薦給目標用戶,其具體步驟如下 :
(1)收集用戶行為,產(chǎn)生用戶評分矩陣
用戶的行為數(shù)據(jù)可以多種形式展現(xiàn)給后臺,因此需要進行預處理。預處理是將自然語言描述的用戶歷史行為轉換為數(shù)字化信息 [8]。預處理之后,將用戶對物品的行為信息描述為一個 m×n 的矩陣 R(m,n),這個矩陣被稱為用戶 - 評分矩陣。矩陣 R 中每一行代表用戶,每一列代表物品對象,Rij 表示用戶 i 對物品對象 j 的評分。同時,采取 0 和 1 兩種數(shù)值的方式表征用戶行為,數(shù)字 1 代表用戶喜歡該物品,反之為不喜歡。用戶評分矩陣 R 為 :
(2) 建立用戶近鄰集合,找出用戶鄰居
用戶近鄰集合是將目標用戶與其他用戶進行相似度計算后生成用戶的近鄰集合。用戶之間的相似度通過相似度公式計算得出。興趣相似度計算公式較多,如 Jaccard 公式、余弦相似度公式等。其中,余弦相似度公式使用較多。
(3) 產(chǎn)生推薦結果
計算用戶 u 對物品 i 的興趣度公式為 :
式中:S(u,K)表示用戶 u的近鄰集合, 包含與 u最接 近的 K個用戶;N(i)表示對物品 i產(chǎn)生行為的用戶集合;
Wuv 表示用戶 u,v 的興趣相似度;rvi 表示用戶 v 對物品 i 的興趣。
1.2 相似度公式
本文使用余弦相似度公式計算興趣相似度。給定用戶 u 與用戶 v,令 N(u)與 N(v)分別表示用戶 u 與用戶 v 曾經(jīng)有過正反饋的物品集合,余弦興趣相似度公式如下 :
通過式(3)可計算出目標用戶與其他用戶之間的相似度值,從而確定用戶的近鄰集合,以便下一步使用。
1.3 算法流程
整個系統(tǒng)算法流程包括收集用戶歷史信息、建立用戶評分矩陣、計算用戶相似度、生成近鄰集合,進而產(chǎn)生推薦。協(xié)同過濾算法流程如圖 1 所示。
2 基于懲罰因子的協(xié)同過濾改進算法
2.1 懲罰因子
若熱門物品出現(xiàn)次數(shù)較多,則會使實際相似度計算結果受到影響,導致推薦的物品都是熱門物品,無法挖掘用戶的實際需求。為了避免這種影響,考慮加入一個懲罰因子作為加權系數(shù),從而抑制熱門物品的影響,因此本文對余弦相似度計算公式進行修正,將物品出現(xiàn)次數(shù)的倒數(shù)作為懲罰因子。物品出現(xiàn)次數(shù)越多,即該商品越熱門,同時,該商品對于用戶興趣相似度的貢獻越少。修正后的公式可衰減熱門物品造成的影響,帶有懲罰因子的修正公式為 :
式中:N(i)表示商品 i 出現(xiàn)的次數(shù);i 表示用戶 u 與用戶 v共同產(chǎn)生行為的商品。通過物品出現(xiàn)的次數(shù)來懲罰熱門物品。
2.2 其他改進參數(shù)
冷啟動是推薦系統(tǒng)設計過程中必須經(jīng)歷的一個過程。由于系統(tǒng)剛剛創(chuàng)建,新注冊的用戶尚未對項目產(chǎn)生有效的行為信息,此時可利用的行為信息極少,這種情況下難以給用戶做出合理的推薦 [9],因此必須考慮從別的渠道獲取更多的用戶信息作為參考。通過用戶的注冊信息挖掘用戶愛好是一種有效的方式,在用戶注冊時加以引導,使用戶提供一些信息,通過這些信息最大限度地挖掘出用戶感興趣的信息。用戶注冊信息完畢后初次登錄時,后臺系統(tǒng)可根據(jù)用戶提交的個人信息進行分析與挖掘,從而做出有針對性的推薦。
2.3 改進后的算法流程
本文在原有的推薦流程中加入懲罰因子的參數(shù),該參數(shù)作為衰減因子可削弱熱門造成的影響,使用用戶對該物品發(fā)生正反饋的次數(shù)衡量物品的熱門程度。物品越熱門,懲罰力度越高,熱門物品對計算興趣相似度帶來的影響越小,因此可較好地解決熱門物品對于推薦效果的影響。改進后的算法流程如圖 2 所示。
3 實驗結果
本文使用目前推薦系統(tǒng)經(jīng)典的數(shù)據(jù)集 MovieLens(m1-1M)進行驗證。MovieLens數(shù)據(jù)集是目前公認的數(shù)據(jù)集之一[10],共有用戶表(Users)、電影表(Movies)及評分記錄表三張表。本文使用準確率與召回率作為實驗數(shù)據(jù)進行評測 [11]。準確率與召回率計算公式為 :
式中:R(u)表示對用戶 u 推薦的 N 個物品;T(u)表示測試集中用戶 u 喜歡的物品的集合。
首先使用經(jīng)典的余弦相似度算法進行計算。將推薦數(shù)量選定為 25,目標用戶的鄰居個數(shù)分別為 2,3,4,5,6,7,8,9,10,20,40。由上述數(shù)據(jù)得到的準確率與召回率(計算結果保留小數(shù)點后四位)見表 1 所列。
由上述實驗數(shù)據(jù)可知,當目標用戶的鄰居個數(shù)為 3 時,準確率與召回率有較好的效果,因此在對修正后的公式驗證時可選定鄰居個數(shù) 3 進行準確率與召回率的對比。余弦相似度公式與修正后的相似度公式對比見表 2 所列。
由表 2 可知,使用余弦相似度公式的準確率為 0.133 8,召回率為 0.154 4,使用帶有懲罰因子的修正公式的準確率為0.144 6,召回率為 0.204 0。實驗結果表明,帶有懲罰因子的修正公式可以較好地抑制熱門物品的影響,提升系統(tǒng)的準確率與召回率。
4 結 語
由于使用傳統(tǒng)的余弦相似度公式時,熱門物品會影響推薦結果,導致推薦的物品幾乎都是熱門物品,因此本文提出帶有懲罰因子的余弦相似度計算公式,使用熱門物品出現(xiàn)次數(shù)的倒數(shù)作為懲罰因子,物品越熱門懲罰力度越大。通過實驗驗證,該算法可使準確率與召回率得到一定的提升,從而提高推薦效率。