通過graph embedding得到圖中每個item的embedding表示,deepwalk演算法常被用於推薦系統。graph embedding使用低維稠密向量的形式表示圖中的節點,使得在原始圖中相似(不同的方法對相似的定義不同)的節點其在低維表達空間也接近。
deepwalk演算法借鑑了word2vec演算法的思想,word2vec是nlp中一種常用的word embedding方法,word2vec通過語料庫中的句子序列來描述詞與詞的共現關係,進而學習到詞語的向量表示。deepwalk演算法與word2vec類似,使用圖中節點與節點的共現關係來學習節點的向量表示。在deepwalk中通過使用隨機遊走(randomwalk)的方式在圖中進行節點取樣來模擬語料庫中的預料,進而使用word2vec的方式學習出節點的共現關係,其具體過程如下圖所示:
具體過程為:
抽取使用者的行為序列,如圖中(a)所示;
將使用者的行為序列轉換成圖的表示方法,如圖中(b)所示;
使用skip-gram學習出節點的embedding表示,如圖中(d)所示。
deepwalk演算法思想具體過程如下所示:
randomwalk是一種可重複訪問已訪問節點的深度優先遍歷演算法。給定當前訪問起始節點,從其鄰居中隨機取樣節點作為下乙個訪問節點,重複此過程,直到訪問序列長度滿足預設條件。假設圖為g=(
v,e)
g=\left ( v,e \right )
g=(v,e
),其中,v
vv表示圖中點的集合,e
ee表示圖中邊的集合,在randomwalk中關鍵的問題是如何計算從節點v
iv_i
vi跳轉到節點v
jv_j
vj的概率p(v
j∣vi
)p\left ( v_j\mid v_i \right )
p(vj∣
vi):p(
vj∣v
i)=\frac}m_} & \text v_i\in n_+\left ( v_i \right ) \\ 0 & \text e_\notin e \end
p(vj∣
vi)
=
mij
是節點v
iv_i
vi到節點v
jv_j
vj的邊的權重,對於無向無權圖mij
=1m_=1
mij=1
。randomwalk的**大致如下:
def
deep_worker
(self)
:for _ in
range
(self.nums)
:for node in self.g.nodes():
)def
random_walker
(self, first_node)
: series =
[first_node]
for _ in
range(1
, self.walk_length)
: nodes_list =
list
(self.g.adj[first_node]
) first_node = random.choice(nodes_list)
return series
from gensim.models import word2vec
w2v_model = word2vec(walks,sg=
1,hs=
1)
推薦系統 推薦系統的常用演算法概述
前一陣子準備畢業 的開題,一直在看推薦系統相關的 對推薦系統有了乙個更加清晰和理性的認識,也對推薦演算法有了深入了解。藉此機會總結分享一下,大家多多拍磚。推薦系統的出現 隨著網際網路的發展,人們正處於乙個資訊 的時代。相比於過去的資訊匱乏,面對現階段海量的資訊資料,對資訊的篩選和過濾成為了衡量乙個系...
推薦系統的常用演算法
推薦系統的任務就是,聯絡使用者和資訊,一方面幫助使用者發現對自己有價值的資訊,另一方面讓資訊能夠展現在對他感興趣的人群中,從而實現資訊提供商與使用者的雙贏。1 基於人口統計學的推薦 根據系統使用者的基本資訊發現使用者的相關程度,然後將相似使用者喜愛的其他物品推薦給當前使用者。2 基於內容的推薦 與上...
推薦系統常用演算法
在推薦系統簡介中,我們給出了推薦系統的一般框架。很明顯,推薦方法是整個推薦系統中最核心 最關鍵的部分,很大程度上決定了推薦系統效能的優劣。目前,主要的推薦方法包括 基於內容推薦 協同過濾推薦 基於關聯規則推薦 基於效用推薦 基於知識推薦和組合推薦。一 基於內容推薦 基於內容的推薦 content b...