劉國麗,廉孟杰,于麗梅,徐洪楠
(河北工業(yè)大學 人工智能與數據科學學院,天津 300401)
傳統(tǒng)的協同過濾推薦算法[1]通過分析相似用戶的偏好來得到對目標用戶的推薦結果,這種方式盡管有效,但還是不夠可靠[2].心理學研究表明,在現實生活中,人們傾向于向專家咨詢,聽取專家的意見.據此,國內外大量學者提出了改進辦法.國外學者Kardan 等[3]首次建議利用專家用戶進行推薦,但計算專家信任度值的方法不成熟導致專家用戶的選取不是很準確.Hwang等[4]充分考慮進用戶的行為數據,在基于用戶的協同過濾推薦算法中加入了信任因素,降低了推薦誤差.國內學者王孝先[5]利用了一小部分專家數據集噪聲很低的優(yōu)勢為龐大的用戶集合做預測評分,避免了數據稀疏性為推薦質量帶來的不利影響,但未考慮日常用戶愿意參考有相似興趣的朋友的意見的心理;賈彭慧等[6]通過計算用戶之間的交叉性、信任性、趨同性和專家因子動態(tài)地為每個用戶挖掘出特定的專家數據集,使專家的選取更具有針對性,但該算法一味地信任專家而忽略了相似用戶的意見,且在計算上無法同時為目標用戶選取相似用戶.
可以看出,盡管上述算法在一定程度上提高了推薦的準確性,但是仍存在需要改進的地方.首先,在為目標用戶尋找相似用戶時,傳統(tǒng)的協同過濾推薦算法在相似度計算上忽略了用戶活躍度偏差問題.改進算法考慮到“用戶活躍度”和“活躍度差異”對相似度的影響,設置活躍度閾值,對大于閾值的活躍用戶設計懲罰權重,降低其對用戶間相似度的貢獻,使選取出的相似用戶與目標用戶的喜好更為接近.與此同時,鑒于現有的專家信任度值計算公式不能充分處理來自不同項目的數據信息的情況,例如,有些用戶更擅長給喜劇電影打分,有些更擅長給動作電影打分,用戶的專家信任度值隨著項目的不同也在發(fā)生變化,改進算法在專家信任度計算公式中加入項目平衡因子,使用戶的專家信任度值隨著推薦項目的不同而變化.最后,通過改進的DBSCAN 算法根據興趣和愛好的相似性[7,8]將用戶劃分到不同的社區(qū)簇中[9],只需在各社區(qū)簇內尋找專家用戶和相似用戶,大大縮小了計算范圍,提高了算法的推薦效率與推薦質量.
基于用戶的協同過濾推薦算法UCF (User Collaborative Filtering)通過計算相似度以找到一組與目標用戶喜好相似的用戶[10],并通過分析相似用戶的偏好來預測目標用戶的偏好[11,12].整個過程如圖1所示.
圖1 協同過濾推薦過程
在協同過濾推薦系統(tǒng)中,相似度計算是指計算各用戶之間的相似度.當前使用最廣泛的相似度計算方法主要包括Pearson 相關系數和Jaccard 相關系數[13].
Pearson 相關系數的結果是通過目標用戶x和其相似用戶y共同得分的項目集計算得出的.計算式如式(1)所示.
式中,Sim(x,y)表示用戶x和y之間的相似度,Rxi和Ryi分別代表用戶x和y對項目i的評分,Ixy代表用戶x和y共同評分的項目集合,和分別代表用戶x和y在Ixy上的平均評分.
Jaccard 相關系數結果是通過計算集合中樣本交集數量與樣本并集數量之比得出的,計算式如式(2)所示.
式中,Nx和Ny分別代表用戶x和y評分的項目列表,|.|代表項目列表長度.
按照與目標用戶相似度值的大小選取相似用戶集,為目標用戶生成Top-N 推薦列表.評分預測公式如式(3)所示:
式中,pxi表示用戶x對項目i的預測評分,Sim(x,y)代表用戶x和y之間的相似度.
基于專家信任的協同過濾推薦算法EPT (Expert Prior Trust recommend)將專家信任因素引入到協同過濾算法中來,專家信任度表明了用戶在特定情境中擁有知識、能力、技巧的可信度.在協同過濾推薦系統(tǒng)中,某用戶評過分的項目數越多,且評分的準確度越高,該用戶的專家信任度值就越高.已有的專家信任度值計算公式如式(4)所示:
式中,trust(x)表示用戶x的專家信任度值,Mmax代表評分最多的用戶的評分數量,m代表評分矩陣中項目總數,代表項目i 獲得的最高評分,Rx,i代表用戶x對項目i的評分,代表項目i獲得的平均分.
傳統(tǒng)的協同過濾推薦算法未考慮用戶活躍度偏差對相似度計算的影響,且已有的基于專家信任的協同過濾推薦算法[14]未考慮項目之間的差異對專家信任度值帶來的影響.為有效解決以上問題,本文提出一種融合專家信任的協同過濾推薦算法CFRAIETS (Collaborative Filtering Recommendation Algorithm based on Improved Expert Trust and Similarity).CFRAIETS 主要作了兩部分改進,下面詳細介紹CFRAIETS 算法的內容.
Pearson 相關系數通過計算兩用戶的共同評分項目來得到相似度值,但忽視了用戶間共同評分項目所占比例問題[15],不適用于非常稀疏的數據集;Jaccard 相關系數僅關注用戶是否對該項目評過分,適用于稀疏度高的數據集合,但未考慮用戶對項目的評分取值.因此在改進相似度計算的時候,首先綜合Jaccard 相關系數和加權后的Pearson 相關系數,有效結合兩種算法的優(yōu)點.Pearson 相關系數的加權系數Weight(x,y)公式如式(5)所示.
傳統(tǒng)的協同過濾推薦算法在計算相似度時忽略了用戶活躍度偏差帶來的影響,導致活躍用戶間的相似度偏高.本文算法在改進時涉及到了“用戶活躍度”和“活躍度差異”兩個概念.“用戶活躍度”在這里是指用戶評過分的項目數,某用戶評價過的項目數越多,該用戶的活躍度就越高.對給定的兩用戶,若活躍度都很高,那么這兩位用戶之間的相似度將在一定程度上受到用戶自身活躍度的影響,并不代表他們一定有多么相似;相反,若兩用戶的活躍度比較低,但是卻都對一定數量的項目采取過近似的評分,那么可能代表著他們的興趣較為相似.對每個用戶x,其評價過的項目數為Numxi,用戶x的活躍度為:ActUserx=Numxi,對其進行歸一化,使用戶活躍度取值保持在[0,1]之間.歸一化公式如式(6)所示.
式中,NormActUserx表示歸一化后的用戶活躍度,MaxAct和MinAct分別代表用戶活躍度的最大值和最小值.
“活躍度差異”是指歸一化后用戶活躍度之差的絕對值.活躍度差異越小的活躍用戶間的共同評分項可能越多.計算公式如式(7)所示.
分析“用戶活躍度”和“活躍度差異”對相似用戶選取時的影響,活躍用戶對相似度的貢獻應該小于不活躍的用戶,需要對其設計相似度懲罰函數,降低活躍用戶間的相似度以緩解傳統(tǒng)相似度量方法中存在的不足,使用戶間的相似度更為準確.活躍度越高的用戶對相似度的貢獻越小,反之則對相似度貢獻越大.因此“用戶活躍度”與懲罰權重正相關.而活躍用戶間的“用戶活躍度差異”越小,他們共同評價過的項目可能就越多,相似度懲罰權重就應越大,因此“活躍度差異”與懲罰權重負相關.結合以上分析,引入懲罰權重式如式(8)和式(9)所示.
式中,ωx和ωy表示用戶x和用戶y的懲罰函數,反映了活躍度有差異的兩個用戶在計算相似度時體現的不同權重,μ代表設定的活躍度閾值.如果用戶x或y的活躍度小于該閾值,認為該用戶的活躍度較低,懲罰權重設為1;若大于該閾值,則認為用戶的活躍度較高,活躍度較高的用戶間活躍度差異越小,懲罰權重就越大.
綜合式(1)(2)(5)(8)(9),得出改進的相似度計算公式如式(10)所示.
已有的專家信任度公式在計算用戶的專家信任度值時,將所有推薦項目都一視同仁[16],未考慮項目間的差異.例如項目i為恐怖電影,項目j為愛情電影,用戶x喜歡看恐怖類型的電影,不喜歡看愛情類型的電影,因此恐怖電影應該是用戶x擅長打分的類型,而愛情電影是該用戶不擅長打分的類型,這導致其對恐怖電影的打分會較為準確,而對愛情電影的打分就不那么準確了.該用戶對項目i的信任度值應高于對項目j的信任度值.由此看出,對于不同的項目,用戶的專家信任度值并不應該是靜態(tài)的,若是在計算時不將項目間的差異考慮在內,會大大降低推薦結果的準確性.項目間的差異來自于各項目從屬的不同類型,而類型是項目的固有屬性,無法直接將其引入到計算中來,但是可以把類型差異體現在各項目與其所屬用戶評分矩陣中所有其他項目之間的相似度大小上.可以理解為項目之間的相似度越高,他們的屬性就越相近.
對此,本文提出一種使用項目平衡因子來改進現有專家信任度值的方法.計算用戶x對項目i的專家信任度,首先計算推薦項目i與用戶所有項目間的相似度,假如項目i與用戶x評價過的大多數項目的相似度都高,說明項目i是用戶擅長的類型,那么用戶x對項目i的專家信任度就越高.反之,項目j與用戶x評價過的大多數項目的相似度都較低,說明要被推薦的項目j不是用戶擅長的評分類型,則用戶x對項目j的專家信任度較低.
加入項目平衡因子后的專家信任度值計算公式如式(11)所示.
其中:
式中,Itrust(i,j)表示項目平衡因子,Rx,i、Rx,j代表用戶x對項目i、項目j的評價分數,、代表項目i或項目j評分的平均值,n代表對該項目進行過評分活動的用戶數.
和傳統(tǒng)的專家信任度計算方法不同的是,改進算法將項目平衡因子作為權值對用戶評價過的項目集合進行了加權處理,項目平衡因子的計算方法根據項目矩陣的情況使用了Pearson 計算方法,但與選取相似用戶時的Pearson 方法的變量大不相同,不能混淆.式(11)中的m是指去掉項目i后的用戶評分矩陣中的項目數,在對這m個項目進行處理和求和時,可以同時計算出第i個項目與這m個項目之間的相似度,因此直接在專家信任度計算公式中加入項目平衡因子的做法是切實可行的.
為提高系統(tǒng)性能,緩解嚴重的數據稀疏性問題,本文按照參考文獻[8]將用戶按照興趣愛好的相似性聚類到了不同的社區(qū)簇中.再將改進后的相似度與專家信任度因素融合在一起考慮,對評分預測公式進行改進.改進后的評分預測公式如式(13)所示:
式中,Px,i表示用戶x對物品i的預測評分,代表用戶x的平均評分,k1為用戶x所在社區(qū)專家簇中專家數量,k2為用戶x的相似用戶數量,α和β是用來調和社區(qū)簇內專家用戶和相似用戶比例的平衡因子.整個過程如圖2所示.
圖2 融合專家信任的協同過濾推薦過程
本文算法的推薦過程具體如下:
輸入:社區(qū)簇內目標用戶x,用戶-評分矩陣H,推薦項目數N.
輸出:為目標用戶x推薦的N個結果.
步驟1.將用戶按照興趣愛好的不同進行聚類,確定社區(qū)簇的數量K.
步驟2.引入懲罰權重式,根據式(10)計算各社區(qū)簇中用戶之間的相似度,確定目標用戶的相似用戶集合U1.
步驟3.在社區(qū)簇內尋找專家用戶,確定專家用戶集合U2,并根據式(11)計算專家用戶對其評價過的每個項目的專家信任度值.
步驟4.確定各社區(qū)簇內專家用戶和相似用戶所占的比例,確定專家用戶的個數k1和相似用戶的個數k2,確定評分預測公式中的權重平衡因子α和β.
步驟5.根據式(13),通過專家用戶和相似用戶,為目標用戶推薦N部其可能喜歡的電影.
當新用戶到來時,利用具有權威性的專家用戶對其進行推薦.冷啟動下的評分預測公式如式(14)所示.
式中,px,i表示用戶x對項目i的預測評分,n代表社區(qū)簇內的專家數量,trusti(uj)代表第j個專家對項目i的信任值.
實驗采用由美國GroupLens 研究小組創(chuàng)辦的MovieLens 公共數據集,隨機將80%劃分為訓練集,將剩余的20%劃分為測試集,數據稀疏性為0.937.該數據集中共包含943個用戶對1682 部電影的100 000個評分,評分區(qū)間為1-5,用戶的喜好可以用評分值大小來衡量,每位用戶評價過的電影數均超過20 部.
本實驗采取平均絕對誤差(MAE)和準確率(Precision)作為評價指標.MAE是系統(tǒng)正確預測用戶對每個物品偏好的能力時最常用的方法,它計算推薦得分與實際得分值的平均偏差.Precision 分類衡量標準用來衡量命中物品數占推薦物品總數的比例.
(1)分析電影類型,確定社區(qū)簇的數量為7.
MovieLens 數據集中共包含19 種電影類型,考慮到可以將類型相近的影片歸到一個大類中[17],例如可以將Animation(卡通)和Children’s(兒童)視為一類,將Crime(犯罪)、Horror(恐怖)和Thriller(驚險)視為一類,將分別喜歡這些影片的用戶劃分到一個社區(qū)簇內.通過分析影片類型,初步確定社區(qū)簇的數量應在4–8個之間.再通過實驗,調整用戶聚類數比較平均絕對誤差MAE的大小.隨著社區(qū)簇個數的變化,MAE 值的變化如圖3所示.
圖3 隨劃分社區(qū)簇個數改變的MAE 值
在社區(qū)簇個數為7 時,MAE 值最小.因此確定社區(qū)簇的數量為7.
(2)引入懲罰權重式改進相似度計算,確定活躍度閾值μ為200.
分析數據集中943 名用戶評過分的電影數,看過的電影數目小于100 部,即用戶活躍度小于100的用戶共655 人,占總體用戶的69.459%(655/943),看過的電影數目在100–200 之間的用戶占總體用戶的20.148%(190/943),用戶活躍度在200–300 之間的用戶占總體用戶的7.423%(70/943),剩余用戶僅占2.969%(28/943),用戶活躍度較高的用戶占用戶總數的小部分.將用戶活躍度閾值μ在100–500 之間調試,在閾值的取值超過200 后,該懲罰權重對相似度的貢獻基本不再發(fā)生變化且在200 時MAE 值最小.因此用戶活躍度閾值μ確定為200.
(3)確定社區(qū)簇內相似用戶的數量為15,專家用戶所占的比例為17%,評分預測公式中權重評分因子α為0.4,β為0.6.
在改進了相似度的協同過濾推薦算法中融合進專家信任因素,在該步驟,首先確定相似用戶數量K,分別取5、10、15、20、25、30、35,取值為15 時,同時兼顧了較好的MAE 值和Precision 值,因此將相似用戶數量確定為15.
接下來確定專家用戶在社區(qū)簇中的比例,采用的方法是根據各個社區(qū)簇內每個用戶的專家信任度值進行大小排序,取前ω%的用戶作為該社區(qū)簇內的專家用戶.ω%從8%~20%中取值,同時權重系數α從0.3、0.4、0.5、0.6、0.7中取值,觀察MAE 值的變化如圖4所示.
圖4 權重系數α和專家數量百分比對MAE 值的影響
由此可以看出,隨著社區(qū)簇中專家用戶比例的增加和評分公式中專家用戶權重系數的增加,MAE 值逐漸減小,但推薦精度也不會一味隨著專家數量的增多而提高,因為本來也只有小部分用戶才能被稱之為專家,專家用戶數量一旦過高,不僅會導致挑選出的一部分專家不夠專業(yè),也會導致目標用戶一味地相信專家而忽略與其愛好相近的相似用戶的意見,從而導致推薦效果不是太理想.因此,在專家用戶數量所占社區(qū)簇的比例為17%,權重系數α取0.4,β取0.6 時,MAE 值最低,推薦效果最佳,且更為均衡地考慮到了兩類用戶的意見.
為驗證本文兩個創(chuàng)新點有效,共設計了5 組實驗.引入傳統(tǒng)的基于用戶的協同過濾推薦算法UCF (User Collaborative Filtering)[18]和基于用戶聚類的協同過濾算法UCFC (User Collaborative Filtering based on Clustering)[19]用來側重于驗證對于相似度計算部分的改進有效.引入文獻[5]中的基于專家信任的協同過濾推薦算法EPT(Expert Prior Trust recommend)和基于專家信任的用戶聚類協同過濾推薦算法UCCFRET (User Clustering Collaborative Filtering Recommendation based on Expert Trust)[20]用來側重于驗證對于專家信任度計算部分的改進有效.其中,UCCFRET是本文作者已發(fā)表論文《基于專家信任的協同過濾推薦算法改進研究》中設計的算法,本文算法與該算法最大的不同是,本文在相似度計算上和專家信任度計算上做了進一步改進研究.將以上4 種算法和本文融合專家信任的協同過濾推薦算法CFRAIETS 進行對比試驗.
經實驗驗證,本文算法CFRAIETS的MAE 值最低,Precision 值最高.對比算法在不同相似用戶數目K下的MAE 值如表1所示,MAE 值變化情況如圖5所示.
表1 算法在不同相似用戶數目下的MAE 值
圖5 算法在不同相似用戶數目下的MAE 值變化
對比算法在不同相似用戶數目下的Precision 值如表2所示,Precision 值變化情況如圖6所示.
表2 算法在不同相似用戶數目下的Precision 值
綜合圖5圖6可以看出,改進了相似度計算的CFRAIETS 對用戶偏好的預測能力有明顯提高,且在預測準確率上也有了顯著改善.加入了專家信任因素的算法隨著近鄰用戶的增加,MAE 值逐步減小后又增大,Precision 值逐步增加后大致走向趨于平緩,在近鄰用戶達到一定數目后,近鄰用戶對推薦準確度的貢獻就沒有那么高了,這是因為只有小部分相似用戶與目標用戶的興趣愛好最為相近,在相似用戶超過了一定數目之后,再加入推薦的就是與目標用戶沒那么相似的用戶了,這時,專家用戶的客觀評價對推薦的準確度就顯得尤為重要了.綜上,本文提出的融合專家信任的協同過濾推薦算法CFRAIETS在一定程度上均優(yōu)于其他算法,顯著提高了推薦能力.
圖6 算法在不同相似用戶數目下的Precision 值變化
針對傳統(tǒng)協同過濾推薦算法的一系列問題,考慮到人們在現實生活中普遍信任專業(yè)人士的因素及考慮到優(yōu)秀的推薦算法不僅可以準確預測用戶的需求,還可以幫助用戶發(fā)掘長尾商品,決定利用專家信任和相似度結合的優(yōu)勢,提出一種融合專家信任的協同過濾推薦算法,并在公開數據集MovieLens 上進行了離線模擬實驗.首先確定社區(qū)簇數量,在相似度計算上為活躍用戶設計相似度懲罰函數,并確定懲罰權重式中的閾值,接下來在專家信任度計算公式中加入項目平衡因子進行改進,得到專家用戶對其評價過的每一部電影的信任度值,再確定社區(qū)簇中相似用戶的最優(yōu)數量及專家用戶的比例、確定評分預測公式中權重平衡因子的最優(yōu)取值,最后設計對比算法并分析實驗結果.實驗結果最終表明本文的融合專家信任的協同過濾推薦算法不僅豐富了推薦的多樣性,還顯著提高了推薦系統(tǒng)的推薦質量和準確度.但是本文算法仍然有一定的局限性,首先,因受條件限制,只在MovieLens 數據集上進行了離線實驗.其次,在本文作者已發(fā)表的論文[20]中,算法UCCFRIE 考慮到了異社區(qū)簇的概念,本文算法也應在此基礎上進一步考慮如何將改進部分應用到異社區(qū)簇中.最后,本文在專家信任度值計算改進的過程中對項目因子的考慮目前還不夠成熟,在今后的研究和實踐中,將更加深入地對這些問題進行思考和改進,并在多個數據集上進行測試,在實際的推薦系統(tǒng)中進行在線實驗,不斷優(yōu)化該算法的可拓展性及復雜度.