[kdd2016] node2vec: scalable feature learning for networks
node2vec的核心在於得到從每乙個節點u
uu出發,定長l
ll的隨機遊走序列集合,進而得到每個節點的「新鄰居」,然後用word2vec的思想來學習更新每乙個節點的表示向量。
目標:
\textbf
目標:假定乙個隨機遊走序列→t→
v→\rightarrow t\rightarrow v\rightarrow
→t→v
→ 剛從t
tt到v
vv,如何找到v
vv的下一步?
對於節點v
vv來說,它下一步的概率是基於它的前乙個節點t
tt和它的下一步節點x
xx的關係決定的。其中,x
xx也可能是t
tt,因為對於無向圖來說,t
tt也是v
vv的鄰居。
定義d tx
d_dt
x,表示v
vv的前乙個節點t
tt和下乙個節點x
xx之間的最短路徑長度,dtx
=d_=\
dtx
=,即所謂的二階。如圖,
其中, q
qq為前進引數(in-out parameter),若q
>
1q>1
q>
1, 則到達v
vv之後的下一步會更接近t
tt(bfs);反之會遠離t
tt (dfs)。p
pp為回溯引數(return parameter),決定有多大的概率會回到上乙個節點,若p
>ma
x(q
,1)p>max(q,1)
p>ma
x(q
,1),則會使遊走盡可能不回溯;若p
n(q
,1)p
pn(q
,1),則使整個遊走最終接近鏈路的起始節點。
這樣就算出了該遊走從t
tt到達v
vv之後,下一步要到達節點x
xx的搜尋偏差α
\alpha
α。若每條路徑對應的有初始權重wvx
w_wv
x(沒有則預設為1),則對前面得到的每條路徑的搜尋偏差α
\alpha
α乘上對應的權重,即v→x
v\rightarrow x
v→x的概率為πvx
=αwv
x\pi_=\alpha w_
πvx=α
wvx
。接著對節點v
vv到達的所有的下乙個節點的路徑概率πv.
\pi_
πv.
歸一化,然後採用alias取樣可以得到下一步到達的節點x
xx。(其中,alias取樣只是讓取樣更快o(1
)o(1)
o(1)
,不會對結果造成影響)
node2vec在社交網路推薦中的應用(二)
在上一步中,我們已經獲得了點的序列樣本,那麼下一步我們需要解決的問題是,如何根據上點序列生成每個點的特徵向量,即我們前面提到的 座標 我們先拋開這個問題,聚焦在word2vec演算法的意義上。word2vec已成為現在主流的特徵構造方法。word2vec是從大量文語料中以無監督的方式學習語義知識的一...
MapReduce核心思想
mapreduce核心程式設計思想,如圖1 1所示。圖1 1 mapreduce核心程式設計思想 1 分布式的運算程式往往需要分成至少 2個階段。2 第乙個階段的 maptask 併發例項,完全並行執行,互不相干。3 第二個階段的 reducetask 併發例項互不相干,但是他們的資料依賴於上乙個階...
Kafka核心思想
kafka是2010年12月份開源的專案,採用scala語言編寫,使用了多種效率優化機制,整體架構比較新穎 push pull 更適合異構集群。設計目標 1 資料在磁碟上的訪問代價為o 1 2 高吞吐率,在普通的伺服器上每秒也能處理幾十萬條訊息 3 分布式架構,能夠對訊息分割槽 4 支援將資料並行的...