基於用戶信任和商品相似度的隨機游走推薦模型


標題讀起來很拗口,原文是TrustWalker: A Random Walk Model for Combining Trust-based and Item-based Recommendatio,翻譯得不好見諒

 

如上圖所示,每個人對一些商品有過評分,用直線連接的用戶之間存在信任關系,現在我們要預測U1對五角星的評分是多少。基本思路是:隨機選擇U1信任的一個用戶,比如選擇了U2,U2對五角星有評分,那就拿U2對五角星的評分作為U1對五角星的評分的估計;如果隨機選擇的不是U2而是U3,U3對五角星沒有過評分,則繼續找U3信任的用戶,看看這些用戶有沒有對五角星作為評分。

上述只是粗略的思想介紹,下面進入詳細的算法講解。

 在進行隨機游走之前先得建立用戶之間的信任關系圖,如果沒有顯式的社交關系,我們就根據人口統計學相關的知識(比如性別、年齡、種族、地區、教育經歷等)計算用戶之間的相似度,相似度很高的認為他們之間有信任關系。

目標:估計用戶$u_0$對薦i的評分。 

每次隨機游走源於用戶$u_0$,在信任網絡上前進了k步后到達某個用戶$u$。如果u已評價過項目i,則停止此次游走,返回$r_{ui}$作為此次隨機游走的結果。如果u沒有評價過i,則有2個選擇:

(1)以概率$\phi_{u,i,k}$停在用戶u,選擇u評價過的與i最相似的m個項目的評分,根據\eqref{pui}式計算$P_{ui}$作為返回結果:

\begin{equation}P_{ui}=\frac{\sum_{item\;j\;which\;similar\;to\;i}{YSim(i,j)\times{r_{uj}}}}{\sum_{item\; j \;which \;similar\; to \;i}{YSim(i,j)}}\label{pui}\end{equation}

其中$YSim(i,j)$是項目i和j的雲相似度,下文會詳細介紹。

(2)以概率$1-\phi_{u,i,k}$繼續游走,從當前用戶u信任的鄰居中隨機選擇一個直接鄰居v。

參數$\phi_{u,i,k}$不是固定不變的,它是停留在用戶u的概率,這與u評價過的項目與目標項目i的相似度有關,我們可以簡單地認為u評價過的項目中與項目i最相似的那個相似度越大,$\phi_{u,i,k}$就應該越大。此外在信任網絡中游走得越深則噪聲越大,$\phi_{u,i,k}$(即停止游走的概率)應該越大。

$\phi_{u,i,k}=\max_{j\in{RI_u}}{\frac{YSim(i,j)}{1+e^{-\frac{k}{2}}}}$

其中$RI_u$是用戶u評價過的項目集合。

每次隨機游走遇到以下3種情況就停止:

(1)遇到一個評價過項目i的用戶u

(2)決定停止於某個用戶u,將與i最相似的m個項目的聚合評分作為隨機游走的結果返回。

(3)隨機游走可能面臨永遠不會停止的情況,為避免這種情況,引入“六度人脈”的概念,設定隨機游走步數k的最大值為6。

在上文中計算項目i和j的相似度時,我們沒有使用傳統的Pearson相似度,是因為Pearson相關系數有它的缺陷。在雲模型中整體的特征用期望Ex、熵En、超熵He這3個特征來表示,$C=(Ex,En,He)$稱為雲向量。

$YSim(i,j)=cos(C_i,C_j)=\frac{C_i\cdot{C_j}}{\parallel{C_i}\parallel\times\parallel{C_j}\parallel}$

$U_{ij}$表示同時評價過項目i和項目j的用戶。

$C_i=(Ex_i,En_i,He_i)$

$Ex_i=\frac{1}{|U_{ij}|}\sum_{u\in{U_{ij}}}{r_{ui}}$

$He_i=\sqrt{\frac{\pi}{2}}\times{\frac{1}{|U_{ij}|}}\sum_{u\in{U_{ij}}}{|r_{ui}-Ex_i|}$

$En_i=\sqrt{s^2-\frac{1}{3}He_i}$

$s^2=\frac{1}{|U_{ij}|-1}\sum_{u\in{U_{ij}}}{(r_{ui}-Ex_i)^2}$

隨機游走需要執行T次,每次返回$r_t$,取它們的平均值作為最終的結果。

$\hat{r}_{u,i}=\bar{r}=\frac{1}{T}\sum_{t=1}^{T}{r_t}$

那么T取多少才算合適呢?我們定義所有隨機游走得到的結果$r_t$的方差為:

$\sigma^2=\frac{1}{T}\sum_{t=1}^T{(r_t-\bar{r})^2}$

當方差穩定后,即$|\sigma_{i+1}^2-\sigma_i^2|\le{\varepsilon}$時算法終止,在實踐中可以設定$\varepsilon=0.0001$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM