基於圖的推薦--personal rank
1.背景
首先介紹基於圖的個性化召回算法--personal rank的背景。
(1)用戶行爲很容易表示爲圖
圖這種數據結構有兩個基本的概念--頂點和邊。
在實際的個性化推薦系統中,無論是信息流場景、電商場景或者是O2O場景,用戶無論是點擊、購買、分享、評論等等的行爲都是在user和item兩個頂點之間搭起了一條連接邊,構成了圖的基本要素。
實際上這裏user與item構成的圖是二分圖,後面會介紹二分圖的概念以及結合具體的例子展示如何將用戶行爲轉換爲圖。
(2)圖推薦在個性化推薦領域效果顯著
2.二分圖
二分圖又稱爲二部圖,是圖論中的一種特殊模型。設G=(V,E)是一個無向圖,如果頂點V可分割爲兩個互不相交的子集(A,B),並且圖中的每條邊(i,j)所關聯的兩個頂點 i 和 j 分別屬於這兩個不同的頂點集(i in A, j in B),則稱圖G爲一個二分圖。
則,推薦系統中,user、item恰好滿足兩種獨立的集合,並且用戶行爲總是從user頂點到item頂點集合,所以由推薦系統中user和item之間構成的圖就是二分圖。
接下來結合具體實例講解如何將用戶的行爲轉化爲二分圖。
假設某推薦系統中有4個用戶:A B C D,以及從日誌(log)中發現對如下item有過行爲:
即:user A 對 item a、b、d有過行爲,userB 對 item a、c有過行爲,userC對 item b、e有過行爲,userD 對 item c、d有過行爲。
首先將user、item分成兩組不相交的集合,如下:
然後,將所有user 對 item 有過行爲的進行連線,就可以得到二分圖,如下:
此時就有問題,對於userA 來說,item c 和item e哪個更值得推薦?
這裏共有5個item,其中用戶A已經對item a、b、d有過行爲,這裏行爲是指信息流產品中的點擊或者電商產品中的購買等表示user對item喜歡的這種操作。
那麼personal rank恰恰是這麼一種算法,它能夠結合用戶行爲構成的二分圖,對於固定用戶對item集合的重要程度給出排序,也就是說將user A 沒有對item c 和item e有過行爲,但是personal rank算法可以給出item c 和item e對於user A來說,哪個更值得推薦。
下面從物理意義的角度來分析一下,從二分圖上如何分析出來item集合對user的重要程度。
3.物理意義
(1)兩個頂點之間連通的路徑數
如果要比較兩個item頂點對固定user的重要程度,只需分別看一下user到兩個item頂點的路徑數,路徑數越多的頂點越重要。
(2)兩個頂點之間連通的路徑長度
同樣路徑數的情況下,總路徑長度越短的頂點越重要。
(3)兩個頂點之間連通路徑經過頂點的出度
這裏解釋一下出度的概念:出度是指頂點對外連接邊的數目。如user A對item a、b、d有過行爲,即爲有條連接邊,則A的出度爲3。如果前兩項都相同,則兩個item對固定user 的重要程度則比較經過頂點所有的出度和,如果出度和越小則越重要。
這裏迴歸第二部分中的問題--對於user A來說,item c 和item e哪個更值得推薦?
1.分別有幾條路徑連接?
首先看A-c 之間有幾條路徑連通:分別是A-a-B-c,A-d-D-c 兩條路徑連通。
再來看A-e 之間有幾條路徑連通:A-b-C-e一條路徑
從這一角度出發,可以知道 c 比 e 重要。
2.連通路徑的長度分別是多少?
首先看A-c 之間有幾條路徑連通:分別是A-a-B-c,A-d-D-c ,長度都爲3
再來看A-e 之間有幾條路徑連通:A-b-C-e長度爲3
3.連通路徑的經過頂點出度分別是多少?
首先看A-a-B-c這條路徑:A出度是3,a出度是2,B出度是2,c出度是2
再看A-d-D-c這條路徑:A出度是3,d出度是2,D出度是2,c出度是2
再看A-b-C-e這條路勁:A出度是3,b出度是2,C出度是2,e出度是1
這裏雖然 e 的出度和更小,但是由於1中 c 有兩條路徑,且1的優先級更高,所以還是應該推薦 c。