基於使用者信任和商品相似度的隨機遊走推薦模型

2021-09-06 22:50:47 字數 1829 閱讀 5178

標題讀起來很拗口,原文是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_$作為此次隨機遊走的結果。如果u沒有評價過i,則有2個選擇:

(1)以概率$\phi_$停在使用者u,選擇u評價過的與i最相似的m個專案的評分,根據\eqref式計算$p_$作為返回結果:

\beginp_=\frac}}}}\label\end

其中$ysim(i,j)$是專案i和j的雲相似度,下文會詳細介紹。

(2)以概率$1-\phi_$繼續遊走,從當前使用者u信任的鄰居中隨機選擇乙個直接鄰居v。

引數$\phi_$不是固定不變的,它是停留在使用者u的概率,這與u評價過的專案與目標專案i的相似度有關,我們可以簡單地認為u評價過的專案中與專案i最相似的那個相似度越大,$\phi_$就應該越大。此外在信任網路中游走得越深則雜訊越大,$\phi_$(即停止遊走的概率)應該越大。

$\phi_=\max_}}}}$

其中$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}\parallel\times\parallel\parallel}$

$u_$表示同**價過專案i和專案j的使用者。

$c_i=(ex_i,en_i,he_i)$

$ex_i=\frac|}\sum_}}}$

$he_i=\sqrt}\times|}}\sum_}}-ex_i|}$

$en_i=\sqrthe_i}$

$s^2=\frac|-1}\sum_}}-ex_i)^2}$

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

$\hat_=\bar=\frac\sum_^$

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

$\sigma^2=\frac\sum_^t)^2}$

當方差穩定後,即$|\sigma_^2-\sigma_i^2|\le$時演算法終止,在實踐中可以設定$\varepsilon=0.0001$

基於使用者信任和商品相似度的隨機遊走推薦模型

標題讀起來很拗口,原文是trustwalker a random walk model for combining trust based and item based recommendatio,翻譯得不好見諒 如上圖所示,每個人對一些商品有過評分,用直線連線的使用者之間存在信任關係,現在我們要 ...

百萬使用者,八十萬商品,如何計算基於物品的協同過濾

問題描述 資料報含了一百四十萬使用者對80萬商品的打分。要利用基於物品的協同過濾來計算。如果直接兩兩計算140萬維的向量相似度,肯定不行啊。問題分析 每個物品的向量雖然是140萬維的,但是其實給乙個物品打分的使用者其實不多,這個矩陣是非常稀疏的。而且根據長尾問題來說,大部分物品只有很少的使用者有過評...

使用者認證 基於jwt和session的區別和優缺點

背景知識 authentication和authorization的區別 authentication 使用者認證,指的是驗證使用者的身份,例如你希望以小a的身份登入,那麼應用程式需要通過使用者名稱和密碼確認你真的是小a。由於http協議是無狀態的,每一次請求都無狀態。當乙個使用者通過使用者名稱和密...