汪志遠 石紅瑞
(東華大學信息科學與技術學院 上海 200000)
在當今信息化時代,如何快速并且準確地獲取信息顯得十分重要。正是由于現代生活節(jié)奏的加快,人們總是希望在最短的時間內找到自己所需要的信息,于是推薦系統(tǒng)應運而生。推薦系統(tǒng)通過用戶的行為反饋來推測用戶對商品的喜好程度而加以推薦。在用戶的反饋中,直接對商品給出評價分數的行為被稱作顯式反饋,如在豆瓣上給電影打分,在購物網站上給商品評級,這些行為在一定程度上能表達用戶對商品的喜好程度。但是現實生活中的大多數數據并不是顯式反饋數據,如用戶對商品的點擊、收藏、購買和評價等行為,它們都是隱式反饋行為,不能直接表達用戶對商品的喜好程度。在隱式反饋中,只存在用戶與商品已經發(fā)生過互動行為的正反饋信息,缺少沒有互動過的負反饋信息。
對于顯式反饋,一般的推薦算法有:基于內容的推薦、基于協同過濾的推薦[1-3]、混合推薦。這些推薦算法通過用戶對商品的評分數據來預測用戶對未購買商品的評分,從而產生推薦列表。由于隱式數據龐大且缺少用戶對商品的直接評分,顯式反饋推薦算法無法適用。為了解決隱式反饋推薦問題,文獻[4]提出單類協同過濾算法,來解決協同過濾中只存在正樣本缺少負樣本信息的問題。經過后續(xù)對隱式反饋推薦算法的研究,有學者提出了基于隱式反饋的排序推薦框架,貝葉斯個性化排序(BPR[5])算法。作者通過假設用戶對有互動行為的商品喜愛程度大于沒有互動行為的商品,建立了貝葉斯模型。在此基礎上,GBPR[6]提出用戶的偏好會受到其他用戶的影響,這些有著共同的偏好的用戶可以歸屬到一個群組。
隱式反饋雖然不能直接表達用戶對商品的偏好,但是其數據信息十分豐富。用戶將商品加入購物車、購買商品和關注商品等行為,都表示用戶對該商品有一定的興趣度。本文在BPR算法的基礎上,提出一種基于用戶偏好置信度的增強貝葉斯個性化排序算法,通過對用戶行為量化得到各反饋行為的權重,再根據用戶反饋行為的類型和時間計算用戶偏好置信度,在原排序模型中引入用戶對發(fā)生互動行為的商品的偏序關系,提高推薦算法的效果。
BPR算法將商品集合劃分成購買過的商品集和未購買過的商品集合,認為在這些隱式反饋商品集合中用戶對有過購買行為的商品的喜愛程度大于沒有購買過的商品。根據這一假設可以建立多組商品的偏序對>u,表示用戶u對商品的喜好。在數據集中構造一系列三元組集合Du={(u,i,j)(或i>uj)},其中:u屬于用戶集合U;i屬于有購買行為的商品集合中的商品;j屬于未購買過的商品集合中的商品;i>uj表示用戶u相較于商品j更加喜歡商品i。
BPR算法中的模型參數為Θ,則優(yōu)化模型為概率模型P(Θ|>u),根據貝葉斯公式可以得到:
P(Θ|>u)∝P(>u|Θ)P(Θ)
(1)
假設各個用戶對商品的偏序關系相互獨立,且單一用戶對不同商品的偏序關系相互獨立,P(>u|Θ)有以下關系:
(2)
文獻[6]使用一個函數來代替p(i>uj|Θ):
(3)
其中:
(4)
(5)
對P(Θ)進行貝葉斯假設,使其符合正態(tài)分布:
p(Θ)~N(0,λΘI)
(6)
式中:λΘ為特征值,I為單位矩陣,它們構成協方差矩陣。
文獻[5]中使用矩陣分解[7]模型來訓練參數Θ,假設X為用戶對商品的評分矩陣,分解成用戶矩陣Wm×k和商品矩陣Hk×n:
X=Wm×kHk×n
(7)
式中:m表示用戶個數;n表示商品個數;k表示分解維度。模型的目標函數為:
(8)
式中:R(Θ)為正則項,防止產生過擬合現象。
隱式反饋數據中,存在用戶的多種反饋行為,如加入購物車、從購物車中刪除、購買商品和收藏商品等,BPR算法通過購買商品集合和未購買商品集合來建立用戶的偏好序列,忽略了用戶的其他行為,這些數據沒有得到很好的應用,導致該算法在多反饋行為下的推薦性能不高。
用戶對商品的行為類型和次數能夠在一定程度上表達用戶對商品的喜愛程度。通過量化的方式來獲取用戶行為權重的分布,從而將多反饋行為量化成具體的數值Sui,數值越大,則用戶與商品之間的互動行為越頻繁,表明用戶對商品的喜愛程度越高。量化后的Sui如下:
(9)
假設1用戶行為量化后的Sui越大,置信度越大。
假設2用戶行為的時間越近,置信度越大。
考慮到時間因素的影響,引入時間衰減函數:
(10)
(11)
考慮到BPR算法的嚴格偏序關系,提出一種基于用戶偏好置信度的增強貝葉斯個性化排序算法(Enhanced BPR with Confidence,EBPRC),對排序模型進行增強。
>u=λxupq+(1-λ)xuij
(12)
式中:λ用來平衡不等式優(yōu)化結構的參數,具體數值根據模型在數據集中的推薦效果而定[8]。用戶和商品整體的極大似然式可以表示為:
EBPRC(u)=P(>u)
(13)
同樣地,用σ(x)來替代P(x),則EBPRC對數似然估計為:
(14)
模型的目標函數為:
(15)
式中:R(Θ)為正則項,用來抑制過擬合。BPR算法使用矩陣分解求解參數模型Θ,類似地引入矩陣分解模型,并在原來的基礎上引入偏置項b,分解模型如下:
xul=WuHl+bl
(16)
式中:Wu為用戶特征向量;Hl為商品特征向量。R(Θ)按照文獻[6]的處理:
(17)
f(u,L)=ln(1+exp(->u))+
(18)
利用隨機梯度下降法對目標函數進行優(yōu)化,求目標函數在參數θ的梯度,其中θ∈{Wu,Hl,bl|l∈L},計算如下:
(λ(Hp-Hq)+(1-λ)(Hi-Hj))+αuWu
(19)
(20)
(21)
得到模型在各參數方向的梯度后,模型通過隨機梯度下降法更新參數,計算如下:
(22)
式中:γ為迭代時的學習率。訓練模型時,隨機從用戶集合U中挑選出一個用戶u,從集合Du中隨機挑選出一個偏序對(u,i,j),從集合Mu中隨機挑選出一個偏序對(u,p,q),得到一組反饋集合,更新模型參數θ,反復迭代一直到模型收斂。根據最后返回的參數模型,計算出用戶對各商品的評分,然后對評分進行排序,挑選評分較高的商品推薦給用戶,達到個性化推薦的目的。
模型訓練算法如算法1所示。
算法1EBPRC訓練算法
輸入:用戶集合U,偏序對集合D和M,矩陣分解維度k,模型參數θ。
輸出:模型收斂后的參數θ。
1.初始化參數θ;
2.從集合U中隨機挑選一個用戶u;
3.從Du中隨機挑選一個偏序對(u,i,j);
4.從Mu中隨機挑選一個偏序對(u,p,q);
5.根據式(19)-式(22)更新參數θ;
6.重復步驟2-步驟5,直到模型收斂。
7.返回參數θ
本次實驗采用的是京東算法比賽數據集,該數據集包含了2016年2月1日到2016年4月15日用戶對不同商品的6種隱式反饋行為。這些反饋行為包括瀏覽、加購(加入購物車)、刪購(從購物車中刪除)、下單、關注和點擊。數據集中包含用戶對商品發(fā)生的行為類型和發(fā)生行為的具體時間。原數據集包含了50 601 736條行為記錄,其中存在一定的數據冗余,因此需要數據預處理。通過數據統(tǒng)計發(fā)現點擊行為占所有反饋行為的比重為60.5%、瀏覽行為所占比重為37.5%,因此,認為這兩種反饋行為對實驗的影響較小,不考慮這兩種反饋行為。原數據集稀疏程度大,為了方便后續(xù)推薦性能的評價,從數據集中過濾掉購買次數少于10的用戶和被購買次數少于5的商品。經過處理后的實驗數據格式如表1所示,其中行為類型0、1、2、3分別表示加購、刪購、下單、關注。將數據集切分成訓練集和測試集,具體切分方式:根據時間節(jié)點切分[9]。本實驗的數據集時間橫跨75天,按照2 ∶1切分數據集,前50天的數據為訓練數據,后25天的數據為測試數據,也就是通過用戶前50天的行為記錄預測用戶在后25天購買的商品。
表1 用戶行為反饋數據集
采用TopN推薦算法和排序推薦算法對本文提出的推薦算法性能進行分析。對于TopN推薦,通過準確率、召回率和AUC值進行評估[10]。推薦算法為用戶產生一個按照評分排序的推薦列表,取其中評分最高的N個商品推薦給用戶,其中有多少比例是用戶實際購買的,即為準確率(Precision@N)。同樣地,推薦列表中用戶實際購買的商品數量與用戶購買的所有商品數量的比值為召回率(Recall@N)[11]。AUC值是ROC曲線下的面積,它用于衡量推薦模型將用戶喜歡的商品和不喜歡的商品的區(qū)分程度,取值范圍為0~1,值越大說明推薦模型越好。對于排序推薦,采用的推薦指標為平均準確率(MAP@N),其值越大,用戶喜歡的商品排序就越靠前,表明推薦性能越好。AP@N表示推薦列表中每個商品在排序位置的準確率的平均值,MAP@N為AP@N在用戶粒度上的平均。
本次實驗需要將用戶的四種反饋行為進行量化,將客觀賦權方法中的熵權法和主觀評價方法中的序關系分析法相結合組合賦權。
(1) 熵權法??陀^賦權方法中的熵權法是指標權重獲取的重要手段之一。設xij為用戶i進行j種行為的總次數,則將其標準化的結果如下:
(23)
式中:i∈{0,1,…,n-1},n為用戶個數;j屬于四種行為類型中的一種,即j∈{0,1,2,3}。計算第j種行為的信息熵Ej:
(24)
(25)
根據信息熵計算行為權重:
(26)
(2) 序關系分析法。為了考慮實際情況下,用戶行為類型對用戶偏好程度的影響,利用主觀評價方法中的序關系分析法通過從主觀上判斷用戶行為類型的重要程度來進行權重計算。主觀認為,從購物中刪除行為表明用戶不打算購買該商品,很大程度上是一種負反饋行為,因此重要程度最低;下單行為最能表示用戶對商品的喜好,重要程度最高;加入購物車行為和關注行為也能表明用戶的偏好。設Aj表示第j種行為類型的重要程度,則根據上面判斷有:
A2>A0>A3>A1
(27)
假設存在下面的序關系:
(28)
(29)
rk的值可以參照表2。
表2 rk賦值對照表
根據表2得到下面的權重關系:
w2/w0=r1=1.2
w0/w3=r2=1.4
w3/w1=r3=-1.2
(30)
式中:r3取負值,因為刪購行為是負反饋行為,關注行為是正反饋行為。
(3) 組合賦權。為了綜合客觀評價和主觀評價的特點,利用組合賦權的方法確定最終的權重分布,計算如下:
(31)
表3 用戶行為反饋量化后的權重分布
在本次實驗中,用戶反饋時間標準化后為時間戳,單位為ms,原數據集中用戶重復的行為都有一定時間延遲,為了抑制時間因子對算法的影響,α=1 000×3 600,這樣時間的最小單位從ms擴大到h。在模型的迭代過程中,矩陣分解維度k=20,學習率γ=0.01,正則化系數αu=αh=βh=0.01。在{0,0.1,0.2,…,1}中尋找最好的平衡參數λ[8],根據評價指標MAP@N來確定最終的λ值,其結果如圖1所示。
圖1 平衡參數λ對評價指標MAP@N的影響
根據圖1發(fā)現λ=0.3時MAP指數最大,選擇這個平衡參數對模型進行訓練,通過調整時間衰減系數α的大小探究時間衰減單位對推薦算法的影響,通過MAP@N來尋找合適的時間衰減單位,其結果如圖2所示。
圖2 時間衰減單位對評價指標MAP@N的影響
根據圖2可知時間衰減單位為時的時候,推薦算法的性能最好,即α=1 000×3 600。選擇最佳參數α和λ訓練模型,將訓練后的結果與BPR算法和GBPR算法進行比較,結果如表4所示。
表4 各算法的性能指標
根據表4的實驗結果可以發(fā)現,本文提出的EBPRC各項性能指標均有提升。特別地,準確率Pre@5較BPR算法提升了34.6%,較GBPR算法提升了21%,說明EBPRC算法有不錯的準確率和預測質量。MAP@5較BPR算法提升了36.6%,較GBPR算法提升了15.4%,表明EBPRC算法的排序推薦性能顯著。
本文先介紹了推薦算法中的隱式反饋推薦問題,并介紹了貝葉斯個性化排序推薦框架?;贐PR框架提出一種基于用戶偏好置信度的增強貝葉斯個性化排序算法,通過對用戶行為量化得到各反饋行為的權重,再根據用戶反饋行為的類型和時間計算用戶偏好置信度,根據置信度大小建立用戶對發(fā)生互動行為的商品的偏序關系,并與原模型中的偏序關系相結合,訓練模型。通過在多行為反饋數據集上的仿真實驗,將本文算法與相關的基線算法BPR和GBPR相比較。
實驗結果發(fā)現本文算法在AUC值、Precision@N、Recall@N、MAP@N等性能評價指標上有著不錯的效果,較相關算法有顯著的提升。在實驗中,用戶偏好置信度的建立受到很多因素的影響,比如用戶行為反饋的量化方式、時間衰減的方式,這些都是需要在后續(xù)研究中去探討。