李 浩,梁京章,潘 瑩
(1.廣西大學 電氣工程學院,廣西 南寧 530004;2.廣西大學 信息網絡中心,廣西 南寧 530004)
在當今數據化時代,海量信息在不斷產生和傳播的同時,也使人們面臨著嚴重的“信息過載[1]”問題。如在電子商務領域,在面對海量商品的情況下,一方面商家希望能將自己的物品及時推薦給需要的用戶,另一方面用戶希望能夠準確快速地找到自己感興趣的商品。推薦系統的出現為解決這一問題提供了方法。在各種推薦技術中,協同過濾推薦算法是最成功的網絡個性化推薦算法[2]。協同過濾算法中應用最廣的是基于記憶的協同過濾推薦算法?;谟洃浀膮f同過濾推薦算法的思想是對用戶-物品評分矩陣進行相似度計算,通過找到相似的用戶或者物品來產生推薦結果[3],其算法中最重要的部分便是相似度的計算。
傳統推薦算法中的相似度計算方法主要有余弦相似度、皮爾遜相似度、歐氏距離[4-5]等幾種,但由于用戶-物品評分矩陣存在數據稀疏等問題[6],導致以上相似度計算方法存在較大的偏差,無法準確找出相似用戶或物品,從而導致推薦效果變差,影響用戶的體驗。
對于相似度計算方法的改進,無數學者做了眾多嘗試。例如,文獻[7-8]對多種傳統相似度計算方法使用線性組合的方法來提高推薦精度;文獻[9]結合時間衰減效應,著眼于改進少數人的相似度計算方式,提高了推薦精度;文獻[10]將物品進行分類后再進行相似度計算,在相似度計算時充分考慮物品的類別信息;文獻[11-12]分別對時間因素進行了不同的考慮,采用不同的融合方法將時間因素加入到相似度的計算過程中;文獻[13]將用戶屬性和鄰居信任度加入到相似度的計算中,更準確地判斷了用戶的興趣偏好;文獻[14]設計了一種新的推薦模型,并基于Kullback-Leibler (KL) 散度設計了一個項目相似性度量方法,充分考慮了用戶的興趣偏好,有效提高了推薦精度和推薦效果;文獻[15]利用大數據處理框架MapReduce對用戶-物品矩陣進行細致聚類,在簇類進行多次相似度計算,提高了推薦精度和推薦效率;文獻[16]將用戶進行物品評分的軌跡信息加入到相似度計算中,并結合多種傳統相似度計算方法,使得推薦效果更加精確。
上述改進的相似度計算方法都在一定程度上提高了推薦效果,但是大部分算法在進行相似度的計算時都沒有考慮到用戶的屬性,物品的熱門程度都對用戶的選擇存在著影響,而且大部分算法在相似度計算時以評分的高低判定用戶對物品的興趣程度,這種判定方法是不夠準確的,評分高低應代表用戶對物品是否滿意,而不是用戶對物品是否感興趣。因此,該文提出一種新的融合用戶的屬性、物品的熱門程度以及用戶對物品的滿意程度的興趣相似度計算方法,并在評分預測時加入時間因素,以提高推薦效果。
在實際生活中,用戶在選擇物品時,不僅僅是出自自身的興趣,還會受到一些社會因素的影響,如商家采取一些營銷手段,使得物品獲得大量人群的關注,而用戶在選擇這些物品的時候,往往是出自好奇,而不是用戶本身對這些物品存在興趣。因此,提出熱點影響率的概念。
定義1(熱點影響率):推薦系統中,物品存在熱點的特性,即物品在某個時間段可能引起大量用戶的關注,熱點的值越大說明物品受用戶的關注程度越大。在推薦系統中,物品i的熱點計算方法如式(1)所示:
Hot(i)=count(rating(u,i)>0,u∈U,i∈I)
(1)
其中,count()為統計計算方法,rating(u,i)為用戶u對物品i的評分,U為用戶集合,I為物品集合。
熱點影響率是對熱點在推薦系統中興趣相似度計算的影響的一種度量方式,熱點影響率的值在0~1之間,物品i的熱點影響率計算方法如式(2)所示:
(2)
其中,max()和min()分別為計算得到的所有物品中熱點的最大值和最小值。
物品越受歡迎,說明用戶對該物品的評分行為出自自身興趣的程度越低,因此熱點影響率的值越低。
在推薦系統中,用戶對物品的評分存在高或低兩種可能性,傳統協同過濾推薦算法中使用用戶的評分值來度量用戶對物品的興趣程度,即低評分行為看作用戶對該物品的興趣程度低,高評分行為看作用戶對該物品的興趣程度高。這種度量方法在某些程度上是不合理的,用戶對某一個物品存在評分行為,意味著用戶對該物品是感興趣的,用戶對物品的評分值低代表該物品在某些屬性未能達到用戶期望,評分值高代表物品超出用戶的期望 。
定義2(物品屬性滿意度):推薦系統中,物品是存在自身屬性的,如在電影推薦系統中,電影存在不同的類型,用戶對物品某些屬性的期望為用戶對與該物品具有相同屬性的其他物品的平均評分。用戶u對物品i的屬性j滿意度計算方式如式(3)所示:
(3)
其中,average(u,j)為用戶對與物品i具有相同屬性j的物品的平均評分,即用戶對物品i的屬性j的期望。
傳統興趣相似度計算方法在進行相似度計算時對影響用戶興趣的因素考慮的不夠全面,因此設計一種新的用戶興趣相似度計算方法。
(1)用戶自身屬性對用戶興趣的影響。
用戶在進行物品選擇時,用戶自身的屬性對用戶的興趣傾向會有一定的影響,如13歲的用戶在選擇時會和35歲的用戶有差異,男性和女性在選擇時也會出現較大的差異。因此,可以看出用戶的興趣受到自身屬性的影響。
年齡差距越小對用戶興趣的影響越小,根據文獻[17],將用戶的年齡差閾值設置為5,年齡差小于5的用戶認為其在年齡屬性上是相同的。
設用戶u的年齡為Au,性別為Gu;用戶v的年齡為Av,性別為Gv;則年齡對用戶興趣相似度的計算如式(4)所示:
(4)
性別對用戶興趣相似度的計算如式(5)所示:
(5)
其中,0<λ<1。
同時,對于冷啟動用戶,用戶自身的屬性可以作為最初對用戶進行推薦的依據,減少冷啟動用戶的影響。
(2)物品熱點影響率對用戶興趣的影響。
用戶在選擇熱點高的物品時,其出發點可能不是出自本身的興趣,而是受到商家的宣傳營銷手段影響,或出于對熱點的好奇。因此在對用戶興趣相似度計算時,應該降低熱點高的物品對興趣相似度影響的權重,即熱點高的物品熱點影響率低。
在計算兩個用戶的興趣相似度時,兩個用戶之間需要存在對某些物品有過共同評分行為,兩者之間的共同評分項越多,意味著兩個用戶的興趣傾向越相似,用戶之間的共同評分項越多且評分方差越小,則用戶之間的興趣相似度越大。
設用戶u有過評分行為的物品集為Iu,用戶v有過評分行為的物品集為Iv;則物品熱點率對用戶興趣相似度的計算如式(6)所示:
(6)
(3)物品屬性滿意度對用戶興趣的影響。
用戶在選擇物品時,都帶有用戶本身的興趣傾向,用戶在對物品打分時,都帶有用戶本身對該物品的某些屬性是否滿足自己期望的判斷。例如,喜歡喜劇的用戶對一部喜劇電影打了低分,這并不意味著用戶不喜歡喜劇電影,而是這部喜劇電影可能不夠搞笑,未能滿足用戶對喜劇電影的期望。
設S為用戶u和用戶v的共同評分項中有著同樣屬性的物品集,物品集S越大,意味著兩個用戶對于物品屬性的選擇傾向上越相似,物品集S越大,且用戶之間的物品屬性滿意度相差越小,用戶之間的興趣相似度越大。具體計算方式如式(7)所示:
(7)
其中,Hi為物品i的屬性集。
綜上所述,用戶的興趣相似度在計算時應將用戶本身的屬性、熱點影響率、物品屬性滿意度都考慮在內,因此,用戶的興趣相似度計算公式如式(8)所示:
Sim(u,v)=Sim_age(u,v)×Sim_g(u,v)×
Sim_hot(u,v)×Sim_sat(u,v)
(8)
通過興趣相似度計算公式可以計算出與目標用戶與其他用戶的興趣相似度,從而找到目標用戶的最相似用戶集。但如上文所提到的,在計算兩個用戶的興趣相似度時,兩個用戶之間需要存在對某些物品有過共同評分的行為,但是用戶-物品評分矩陣具有稀疏性的問題,某用戶可能與其他用戶之間存在較少的共同評分項或者沒有共同評分項,當用戶之間沒有共同評分項時,用戶之間的興趣相似度沒有意義,當用戶之間的共同評分項較少時,用戶之間的興趣相似度存在一些不確定性,使得推薦效果較差。因此需要設置一個閾值β,使得用戶u和用戶v之間的共同評分項滿足式(9):
(9)

通過式(8)和式(9)可以找到與目標用戶最相似的用戶集Q,但由于數據的稀疏性,會出現一部分用戶存在較多的相似用戶,一部分用戶的相似用戶很少甚至沒有相似用戶。因此需要設置相似用戶數閾值K,并對于這一現象分類處理:
(1)對于相似用戶數>K的用戶,直接選取相似度排名前K位用戶作為目標用戶的相似用戶集。
(2)對于相似用戶數
Sim(u,w)=Sim(u,v)×Sim(v,w)
(10)
(3)對于相似用戶數為0的用戶,應在興趣相似度計算中依次減去物品屬性滿意度,熱點影響率的影響,最終可以同冷啟動用戶相同處理。
用戶的興趣不是一成不變的,而是隨著時間的推移逐漸發生變化,這是人的自然遺忘過程,符合艾賓浩斯遺忘曲線[16]的規律。時間衰減模型的計算方法如公式(11)所示:
(11)
其中,tnow為當前時間,tui為用戶u對物品i評分的時間,α為時間衰減因子。
在對目標用戶進行物品推薦時,需要考慮該物品的屬性用戶現在是否還存在一定的興趣,用戶以前感興趣的物品現在不一定還存在興趣,因此時間因子的影響計算公式如公式(12)所示:
(12)
其中,x為待推薦物品,T為用戶u所評分過的物品集中與物品x具有相同屬性的物品合集。
最終評分預測公式為:
(13)

推薦算法流程如圖1所示。

圖1 推薦算法流程
推薦算法偽代碼如下:
算法1
輸入:用戶集合U,物品集合I,共同評分項閾值β,相似用戶數K。
1.begin
2. uSimv(u,v)={}
3. Simlist(u)={} //用戶u的相似用戶集
4. for eachuinU:
5. for eachvinU:
6. ifu≠v:
7. for eachiinI::
8. if rating(u,i)>0 & rating(v,i)>0
9. uSimv(u,v).add(i)

11. Simlist(u).add([v,Sim(u,v)])
12. if Len(Simlist(u)) ≥K:
13 . Simlist(u)=Sort( Simlist(u)) // 按相似度大小排序
14. elif Len(Simlist(u))
15. Simlist(u).add ([x,Sim(v,x)])
16.recommendList={}
17.for eachwin Simlist(u):
18. if rating(u,i)=0 & rating(u,i)>0:
19. recommendList.add(Sort(pre(u,i)))
20.end
實驗數據使用的是美國Minnesota大學創辦的MovieLens數據集,數據集的具體描述如表1所示。

表1 數據集描述
硬件環境:
(1)Windows10;
(2)CPU:Intel7代6 700k;
(3)內存16 G。
軟件環境:Pycharm。
采用平均絕對誤差(MAE)和均方根誤差(RMSE[19])對實驗結果進行評測:

(14)
(15)
由于算法設計時間的影響,將數據集按時間排序,并將排序后的數據集以8∶2的比例分為訓練集和測試集。為驗證提出的相似度計算方式在提升推薦效果方面的有效性,將該算法與使用傳統相似度計算的協同過濾算法和幾種改進相似度計算方式的協同過濾算法在MovieLens數據集進行對比實驗,具體涉及算法如下:
(1)文中算法 new_CF;
(2)使用余弦相似度的協同過濾算法cor_CF;
(3)使用Person相似度的協同過濾算法P_CF;
(4)使用Jaccard相似度的協同過濾算法J_CF;
(5)文獻[9]中提出的min-CF算法;
(6)文獻[11]融入時間因子的協同過濾算法T_CF;
(7)文獻[19]提出的融合興趣偏好和加權的Jaccard相似度的ED-JM算法。
實驗一:λ和α對推薦結果的影響。
選擇K=30;β=5,N=20進行實驗,求得λ和α的最佳取值;
逐步遞增λ的值,在不同的α取值下,所獲得最佳實驗結果如圖2所示。

圖2 不同λ對應的最佳MAE
逐步遞增α的值,在不同的λ取值下,所獲得的最佳實驗結果如圖3所示。

圖3 不同α對應的最佳MAE
從如圖2和圖3可以看出,λ的最佳取值約為0.7,α的最佳取值約為0.02,當λ和α的取值從最佳取值處增大或減小時,都會引起MAE的劇烈變化。
實驗二:最相似用戶集數K對推薦結果的影響。
從K=10開始取值,每次增加10,直至K=70,實驗結果如圖4和圖5所示。

圖4 K值對各算法的MAE的影響

圖5 K值對各算法的RMSE值的影響
從圖4和圖5可以看出,傳統的推薦算法的誤差最大,這表明只使用傳統相似度計算方法已經無法滿足推薦精度的需要,改進相似度計算方式是有必要的。隨著K值的增加,除J_CF算法外,其他算法模型的RMSE、MAE的值都在降低,推薦效果逐漸提升,這可能是因為初始隨著K值的增加,相似用戶數增多,那些單獨近鄰所造成的影響被降低,推薦效果得到提升;在這個過程中,相較于傳統相似度計算方式,在相似度計算方式上引入其他因素的J_CF、min_CF、T_CF算法均提高了推薦效果;該文提出的相似度計算方式在對相似用戶的選擇上,充分考慮用戶自身的屬性因素,減少了選取錯誤最近鄰情況的發生,同時考慮到物品流行度的影響,減少了因熱點問題導致選取錯誤近鄰的情況;因此各項誤差均處于最低,推薦效果最好,當K=40時,該算法的MAE值取得最小,達到最佳效果。
隨著K值的繼續增大,所有算法均出現推薦效果減弱,誤差增大的情況,這是因為一些不重要不相似的用戶被加入最近鄰集合,導致偏差增大,推薦效果減弱,其中文中算法、J_CF、min_CF受K值增大的影響最小。因為這三類算法在相似度的計算方式上考慮的因素較多,不單純依賴用戶物品評分矩陣,因此在相似用戶的選擇上更加有效可靠,減少了不相似用戶加入到最近鄰集合中的情況出現;文中算法充分考慮了用戶屬性、物品熱門程度、時間因素的影響,對相似用戶的選擇上更準確,推薦效果更好。
從以上可以看出,new_CF相對于使用傳統相似度計算方法的協同過濾算法在推薦效果上有顯著的提升,且對比其他幾種改進相似度計算方式的協同過濾算法也存在一定的推薦優勢,這充分證明提出的改進的興趣相似度個性化推薦算法能有效提高系統的推薦性能。
針對傳統相似度計算方法在計算時存在一定的失真性,提出融合用戶的自身屬性、物品的熱點影響率與物品屬性滿意度的新型興趣相似度計算方法,并融合時間因子求取最終評分預測。通過實驗證明,提出的改進的興趣相似度個性化推薦算法在MAE和RMSE上均表現良好,有效提高了推薦效果。下一步將針對推薦系統中的冷啟動和數據稀疏性問題,挖掘更多的興趣相似度影響因素來提高推薦效果。