Graph-based推薦傳統做法是構建二元圖(bipartite),分爲user和item兩個node集合,user-item的interaction構建兩個集合之間的連線,見下圖,其中圓框是三個user,方形框是四個item。
該方法在2005年前較流行,現在學術界更流行的方法是Graph Convolutional Network(GCN)。
推薦採用personal rank算法,或者說random work,與page rank思路是一樣的。首先從一個頂點(即某一user A)出發,以一定概率α往下一個節點遊走,以1−α概率回到初始頂點A,足夠長時間後,整幅圖的概率分佈會趨於一個穩定值,這個概率值即爲該user A對每個item的感興趣程度。
舉個例子:
假定從A出發,一開始PR(A)=1,其餘爲0
第一步,A以21×α概率分別向a、c遊走,
PR(A)=1−αPR(a)=PR(c)=21×α
第二步,A以21×α概率分別向a、c遊走,a以21×α概率分別向A、B遊走,c以31×α概率分別向A、B、C遊走
PR(A′)==PR(A)×(1−α)+PR(a)×21α+PR(c)×31α+PR(a)×(1−α)+PR(c)×(1−α)1−α+α×2PR(a)+α×3PR(c)PR(a′)=PR(A)×21α=α×2PR(A)PR(c′)=PR(A)×21α=α×2PR(A)PR(B′)=21α×PR(a)+31α×PR(c)PR(C′)=31α×PR(c)
以此類推可以得到每步的更新公式:
PR(j)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧α×i∈in(j)∑∣out(i)∣PR(i)if (j̸=u)(1−α)+α×i∈in(j)∑∣out(i)∣PR(i)if (j=u)
其中in(j)表示指向j的結點的集合,out(j)表示j指向的結點的集合,∣out(j)∣表示j指向的結點的數目,u表示初始的頂點,即需要推薦的用戶