周巧扣 倪紅軍
(南京師范大學(xué)泰州學(xué)院信息工程學(xué)院 江蘇 泰州 225300)
在推薦系統(tǒng)中,用戶的行為記錄可以分為顯式反饋和隱式反饋。顯式反饋是指用戶對(duì)已購(gòu)買商品的評(píng)分?jǐn)?shù)據(jù),通常為一段區(qū)間的整數(shù)值,例如1~5分。隱式反饋是指用戶瀏覽記錄、購(gòu)買記錄等,通常為二值形式,例如“0”表示未購(gòu)買,“1”表示已購(gòu)買。兩者之間的區(qū)別在于,顯式反饋反映了用戶對(duì)商品的真實(shí)喜好程度,而隱式反饋表達(dá)了用戶喜好存在著一定的“不確定性”。目前,大多數(shù)推薦算法都將顯式反饋?zhàn)鳛檠芯康膶?duì)象,根據(jù)用戶已有的評(píng)分?jǐn)?shù)據(jù),預(yù)測(cè)用戶對(duì)其他商品的評(píng)分,根據(jù)預(yù)測(cè)評(píng)分產(chǎn)生商品推薦列表。例如:基于用戶的近鄰模型[1]、基于概率的隱語(yǔ)義模型[2]以及矩陣分解模型[3-4]等,然而這些算法在隱式反饋上的推薦效果并不理想。
針對(duì)隱式反饋,文獻(xiàn)[5]提出一種面向排序的基于貝葉斯概率模型的推薦算法BPR(Bayesian Personalized Ranking)[5]。其核心思想是從用戶的隱式反饋中推導(dǎo)出用戶喜好商品的偏序?qū)?,以最?yōu)化商品排序?yàn)槟繕?biāo),利用偏序?qū)τ?xùn)練推薦模型。該算法具有推薦內(nèi)容排序精度高,易于擴(kuò)展等優(yōu)點(diǎn),許多學(xué)者以該算法為基線進(jìn)行了相關(guān)研究[6-8]。文獻(xiàn)[6]利用用戶的社交關(guān)系建立偏序?qū)ΓJ(rèn)為與沒(méi)有反饋的商品相比,用戶更喜歡好友喜歡的商品,提出了一種基于用戶社交關(guān)系的推薦算法。文獻(xiàn)[7]對(duì)不同的隱式反饋進(jìn)行分析,將隱式反饋分為:購(gòu)買行為和瀏覽行為。利用不同反饋表達(dá)的不同喜好程度產(chǎn)生偏序關(guān)系,提出一種自適應(yīng)的推薦算法。李滿天等[8]提出了一種融合顯式反饋和隱式反饋的面向排序的推薦算法,提升推薦算法的性能。
雖然隱式反饋在表達(dá)用戶喜好時(shí)存在著“不確定性”,但比顯式反饋更加豐富。例如,用戶對(duì)某個(gè)商品的多次購(gòu)買,可以明確表達(dá)用戶對(duì)該商品的喜愛(ài)。此外,用戶購(gòu)買商品的時(shí)間也可以表達(dá)用戶偏好的變化。本文在BPR算法的基礎(chǔ)上,結(jié)合用戶購(gòu)買商品的次數(shù)和時(shí)間,提出一種基于多種隱式反饋數(shù)據(jù)的商品推薦算法MBPR(Multiple implicit feedback BPR)。利用更細(xì)粒度的偏序?qū)τ?xùn)練推薦模型,進(jìn)一步提高推薦算法的性能,并在真實(shí)的數(shù)據(jù)集上進(jìn)行測(cè)試,驗(yàn)證了算法的有效性。
設(shè)有m個(gè)用戶和n個(gè)商品,X∈Rm×n為用戶對(duì)商品的評(píng)分矩陣。矩陣分解模型是一種隱因子模型,將X通過(guò)分解的方法映射成兩個(gè)低維度矩陣的乘積,其定義如下所示:
X≈WHT
(1)
(2)
BPR算法采用商品偏序?qū)Φ乃枷耄鋬?yōu)化的目標(biāo)是對(duì)商品進(jìn)行正確的排序而不是對(duì)單個(gè)商品的評(píng)分。BPR算法認(rèn)為用戶對(duì)隱式反饋商品的偏好大于沒(méi)有反饋的商品,因此為每個(gè)用戶u構(gòu)建一個(gè)商品的偏好序列>u,將商品偏序?qū)ψ鳛橛?xùn)練數(shù)據(jù),商品偏序?qū)Φ臉?gòu)造過(guò)程如下:
(3)
P(Θ|>u)∝P(>u|Θ)P(Θ)
(4)
假設(shè)所有用戶是相對(duì)獨(dú)立的,并且每個(gè)用戶u對(duì)商品(i,j)的排序與其他商品的排序相對(duì)獨(dú)立,則可以將P(>u|Θ)改寫為單體概率的積,如下所示:
(5)
用戶u相比j更喜歡i的單體概率計(jì)算公式如下所示:
(6)
式中:σ(·)是一個(gè)logistic函數(shù),其定義為:
(7)
P(Θ)服從一個(gè)均值為0,方差-協(xié)方差矩陣為ΣΘ的正態(tài)分布。
P(Θ)~N(0,ΣΘ)
(8)
BPR算法的一般性優(yōu)化函數(shù)如下:
(9)
式中:R(Θ)是與模型參數(shù)Θ相關(guān)的正則項(xiàng)。BPR算通過(guò)以上優(yōu)化函數(shù)訓(xùn)練模型參數(shù)Θ,具體的模型可以是鄰域模型或矩陣分解模型。
在推薦算法中,最為關(guān)鍵的步驟是根據(jù)用戶已經(jīng)購(gòu)買的商品記錄,分析出用戶的偏好屬性,然后向用戶推薦用戶喜歡的商品。然而,在BPR算法中,只能根據(jù)式(3)在已經(jīng)購(gòu)買商品和未購(gòu)買商品之間產(chǎn)生商品偏序?qū)?,忽略了已?gòu)買商品之間的偏序關(guān)系,導(dǎo)致所構(gòu)建的用戶偏好屬性不能真實(shí)反映用戶的偏好,從而影響了推薦算法的性能。在實(shí)際情況中,可以根據(jù)用戶的隱式反饋推導(dǎo)出更豐富的偏序關(guān)系。例如用戶對(duì)商品的購(gòu)買次數(shù)和時(shí)間都可以表達(dá)對(duì)商品偏好的強(qiáng)弱。
如表1所示,相比i2,用戶u1更喜歡i1,因?yàn)樵谫?gòu)買時(shí)間相同的情況下,u1在i1上有更多的購(gòu)買次數(shù)。用戶u2可能更喜歡i1,因?yàn)樵谫?gòu)買次數(shù)相同的情況下,u2在i1上的行為時(shí)間更近。對(duì)于用戶u3而言更偏好i1,因?yàn)樗趇2上沒(méi)有任何隱式反饋。
表1 隱式反饋數(shù)據(jù)集
confid(fui,tui)=(1+αlog(1+fui/ε))e-β(t-tui)
(10)
式中:fui表示u對(duì)i的購(gòu)買次數(shù),tui表示u購(gòu)買i的時(shí)間,t為當(dāng)前時(shí)間,α為fui的影響因子,控制fui對(duì)整個(gè)置信度的影響,ε為縮放因子壓縮購(gòu)買次數(shù)的范圍[9]。這里采用常用的指數(shù)函數(shù)e-β(t-tui)作為置信度的衰減函數(shù)[10],β為衰減因子控制置信度隨時(shí)間的衰減強(qiáng)度。
(11)
為了方便MBPR算法的描述,令Eu為集合E中與特定用戶u相關(guān)的偏序集合,同樣令Du為集合D中與特定用戶u相關(guān)的偏序集合。
對(duì)于一個(gè)用戶u,可以同時(shí)使用Du和Eu中的偏序?qū)τ?xùn)練模型參數(shù)Θ。設(shè)U為所有用戶的集合,在BPR算法優(yōu)化函數(shù)的基礎(chǔ)建立如下的優(yōu)化函數(shù):
(12)
(13)
式中:bi表示商品i的偏離度。因此,模型參數(shù)Θ可以表示為參數(shù)集合{wu,hi,hj,bi,bj}。確定了模型參數(shù)Θ后,正則項(xiàng)R(Θ)可以表示為如下形式,其中λ為正則項(xiàng)系數(shù):
(14)
采用隨機(jī)梯度下降SGD(Stochastic gradient descent)算法優(yōu)化式(12)的目標(biāo)函數(shù)。首先求得優(yōu)化函數(shù)在每個(gè)參數(shù){wu,hi,hj,bi,bj}處的梯度,然后沿著梯度相反的方向更新相應(yīng)的參數(shù)。具體的更新公式如下:
(15)
(16)
(17)
(18)
(19)
其中,γ表示每次模型參數(shù)迭代的步長(zhǎng)。訓(xùn)練模型參數(shù)Θ時(shí),首先隨機(jī)選取一個(gè)用戶u∈U,然后判斷與u相關(guān)的Eu集合是否為空,如果不為空,則從中隨機(jī)取出偏序?qū)?u,i,j)更新模型參數(shù)Θ,接著從與u相關(guān)的Du集合中隨機(jī)取出偏序?qū)?u,i,j)更新模型參數(shù)Θ,直到模型參數(shù)收斂,最后返回Θ。每次模型的迭代分別從Eu集合和Du集合中獲取偏序?qū)τ?xùn)練模型參數(shù),Eu集合中的偏序?qū)νㄟ^(guò)商品購(gòu)買次數(shù)和購(gòu)買時(shí)間建模用戶的偏好屬性,而Du集合中的偏序?qū)νㄟ^(guò)已購(gòu)買商品和未購(gòu)買商品之間的對(duì)比為用戶的偏好屬性建模。同時(shí)利用Eu集合和Du集合中的偏序?qū)τ?xùn)練模型參數(shù),增強(qiáng)了用戶偏好屬性的準(zhǔn)確性。模型參數(shù)訓(xùn)練算法的詳細(xì)描述如下:
1: PROCEDURE Learn_MBPR(U,D,E,Θ)
2: initializeΘ
3: REPEAT
4: uniformly sample au∈U;
5: IFEu≠?
6: draw(u,i,j) fromEu
7: updatewu,hi,hj,bi,bjaccording to Eq (15)~(19)
8: END IF
9: draw(u,i,j) fromDu
10:updatewu,hi,hj,bi,bjaccording to Eq (15)~(19)
11: UNTIL convergence
12: RETURNΘ
13: END PROCEDURE
隱式反饋在實(shí)際的推薦系統(tǒng)中是非常普遍的,但目前還沒(méi)有這樣的公開(kāi)數(shù)據(jù)集,因此在本文的實(shí)驗(yàn)中,采用公開(kāi)的數(shù)據(jù)集Netflix來(lái)模擬隱式反饋數(shù)據(jù)。Netflix數(shù)據(jù)集包含48萬(wàn)個(gè)匿名用戶對(duì)1萬(wàn)7千多部電影的1兆多個(gè)電影評(píng)分。電影文件中的數(shù)據(jù)以四元組(電影ID,用戶ID,評(píng)分,日期)的記錄形式存在的,其中評(píng)分?jǐn)?shù)值是1~5的整數(shù)區(qū)間,評(píng)分日期的時(shí)間跨度為1998年10月-2005年12月。由于Netflix數(shù)據(jù)集中的數(shù)據(jù)太多,評(píng)分?jǐn)?shù)據(jù)多數(shù)集中在2005年,因此實(shí)驗(yàn)中從Netflix數(shù)據(jù)集中隨機(jī)抽取2 000部評(píng)分較多的電影,以及1 000名用戶在2005年的157 760個(gè)評(píng)分記錄,記錄的時(shí)間分布如圖1所示。隨機(jī)抽取50%的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),剩下的50%作為測(cè)試數(shù)據(jù)。在訓(xùn)練數(shù)據(jù)集中又隨機(jī)抽取50%的評(píng)分為3~5的數(shù)據(jù)將其轉(zhuǎn)換為購(gòu)買次數(shù)為1~3次的數(shù)據(jù),其余數(shù)據(jù)不關(guān)心其具體的評(píng)分將其轉(zhuǎn)換為二值數(shù)據(jù)。測(cè)試數(shù)據(jù)集也做同樣的處理。
圖1 評(píng)分記錄的時(shí)間分布
為了測(cè)試MBPR算法的性能,文中使用推薦算法中常用的性能指標(biāo)Precision@N和AUC,其中Precision@N表示向用戶推薦的N個(gè)商品中用戶喜歡商品所占的比例,定義如下:
(20)
AUC的定義如下:
(21)
式中:E(u)的定義如下:
E(u):={(i,j)|(u,i)∈Stest∧(u,j)?(Stest∪Strain)}
(22)
式中:Stest和Strain分別表示測(cè)試集和訓(xùn)練集。AUC越高代表了越準(zhǔn)確的排序質(zhì)量。一個(gè)隨機(jī)正態(tài)分布的AUC是0.5,AUC的上限是1。
本節(jié)將通過(guò)實(shí)驗(yàn)對(duì)MBPR算法以及相關(guān)算法的性能進(jìn)行測(cè)試。在實(shí)驗(yàn)中,矩陣分解模型中的隱因子數(shù)目k,模型參數(shù)Θ迭代的步長(zhǎng)γ,正則項(xiàng)R(Θ)中的正則項(xiàng)系數(shù)λ經(jīng)過(guò)多次實(shí)驗(yàn)取其最佳值,分別設(shè)置為:k=50,γ=0.01,λ=0.01,其他參數(shù)在具體實(shí)驗(yàn)中設(shè)定。實(shí)驗(yàn)指標(biāo)Precision@N中的N取值為10。
3.3.1 購(gòu)買次數(shù)與時(shí)間的影響
實(shí)驗(yàn)中單獨(dú)測(cè)試購(gòu)買次數(shù)和購(gòu)買時(shí)間產(chǎn)生的偏序關(guān)系對(duì)推薦算法性能的影響。為了方便描述,分別稱只考慮購(gòu)買次數(shù)的算法為MBPR(N),只考慮購(gòu)買時(shí)間的算法為MBPR(T)。具體做法是:在MBPR(N)算法中將式(10)中的β設(shè)置為0,這樣只考慮了購(gòu)買次數(shù)對(duì)置信度的影響,同時(shí)α設(shè)置為10,ε設(shè)置為0.01;同理,在MBPR(T)算法中,將α設(shè)置為0,只考慮購(gòu)買時(shí)間對(duì)置信度的影響,同時(shí)β設(shè)置為0.02。α、β以及ε的取值均為多次實(shí)驗(yàn)的最佳值。實(shí)驗(yàn)結(jié)果如圖2和圖3所示。
圖2 購(gòu)買次數(shù)與時(shí)間對(duì)Precision@N的影響
圖3 購(gòu)買次數(shù)與時(shí)間對(duì)AUC的影響
從實(shí)驗(yàn)結(jié)果看,MBPR(N)算法的性能最優(yōu),而MBPR(T)性能優(yōu)于BPR。證明將購(gòu)買次數(shù)與時(shí)間融入BPR算法中可以提高算法的性能,并且購(gòu)買次數(shù)更能反映出用戶對(duì)商品偏好的強(qiáng)弱。實(shí)驗(yàn)結(jié)果中,MBPR(N)算法相比BPR算法在Precision@N指標(biāo)和AUC指標(biāo)上分別提升了0.100 8和0.066 5。
3.3.2MBPR、BPR以及MF算法的比較
實(shí)驗(yàn)中將購(gòu)買次數(shù)和時(shí)間同時(shí)融入到置信度的計(jì)算,產(chǎn)生偏序?qū)τ?xùn)練模型參數(shù),α設(shè)置為10,β設(shè)置為0.02,ε設(shè)置為0.01。對(duì)MBPR、BPR以及MF算法的性能進(jìn)行比較,實(shí)驗(yàn)結(jié)果如圖4和圖5所示。
圖4 三種算法在Precision@N上的對(duì)比
圖5 三種算法在AUC上的對(duì)比
從實(shí)驗(yàn)結(jié)果看,MBPR算法在Precision@N和AUC性能指標(biāo)上都有顯著的提升。相比較BPR算法,Precision@N指標(biāo)上提升了0.121 7,在AUC指標(biāo)上提升了0.081 6。此外,隨著迭代次數(shù)的增加,MBPR算法有著更好的收斂性。另一方面,從圖5可以看出,MBPR算法和BPR算法與MF算法相比,在AUC指標(biāo)上的差異比較明顯,說(shuō)明基于排序的推薦算法能產(chǎn)生更好的排序質(zhì)量。
本文主要研究了隱式反饋數(shù)據(jù)上的商品推薦問(wèn)題。首先分析了隱式反饋的特點(diǎn),介紹了目前主流的推薦算法。接著,在BPR算法的基礎(chǔ)上進(jìn)行擴(kuò)展,將隱式反饋中的購(gòu)買次數(shù)和購(gòu)買時(shí)間融入到偏序?qū)Φ臉?gòu)建,使用更細(xì)粒度的偏序關(guān)系訓(xùn)練目標(biāo)模型參數(shù)。最后,通過(guò)仿真實(shí)驗(yàn),對(duì)本文提出的算法與相關(guān)算法的性能進(jìn)行了比較和分析。實(shí)驗(yàn)結(jié)果表明,本文提出的算法在Precision@N以及AUC兩個(gè)性能指標(biāo)上都有明顯的提升。在實(shí)際的推薦系統(tǒng)中,與顯式反饋相比,隱式反饋數(shù)量更加龐大,內(nèi)容更加豐富,形式更加多樣化。如何更好使用隱式反饋的特性,進(jìn)一步提升推薦算法的性能,是下一步工作的重點(diǎn)。