使用機器學習的算法解決問題須要有大量的信息,可是現實世界中的網絡中的信息每每比較少,這就致使傳統機器學習算法不能在網絡中普遍使用。node
(Ps: 傳統機器學習分類問題是學習一種假設,將樣本的屬性映射到樣本的類標籤,可是現實網絡中的結點屬性信息每每比較少,因此傳統機器學習方法不適用與網絡。)算法
deepWalk是網絡表徵學習的比較基本的算法,用於學習網絡中頂點的向量表示(即學習圖的結構特徵即屬性,而且屬性個數爲向量的維數),使得可以應用傳統機器學習算法解決相關的問題。網絡
input:鄰接表dom
每行表明一個頂點的全部邊機器學習
output:學習
第一行爲結點個數和向量維數,後面每行爲一個結點的向量表示,第一列爲nodeId**pwa
innovation:3d
藉助語言建模word2vec中的一個模型,skip-gram來學習結點的向量表示。將網絡中的結點模擬爲語言模型中的單詞,而結點的序列(可由隨機遊走獲得)模擬爲語言中的句子,做爲skip-gram的輸入。blog
feasibility:ip
以上假設的可行性證實,當圖中結點的度遵循冪律分佈(通俗講即度數大的節點比較少,度數小的節點比較多)時,短隨機遊走中頂點出現的頻率也將遵循冪律分佈(即出現頻率低的結點多),又由於天然語言中單詞出現的頻率遵循相似的分佈,所以以上假設可行。(Ps: 爲證實有效性,做者針對YouTube的社交網絡與Wikipedia的文章進行了研究,比較了在短的隨機遊走中節點出現的頻度與文章中單詞的頻度進行了比較,能夠得出兩者基本上相似。(冪率分佈))
process:
隨機遊走+skip-gram 語言模型
經過隨機遊走獲得短的結點序列,經過skip-gram更新結點向量表示。
Random Walk
Random Walk從截斷的隨機遊走序列中獲得網絡的局部信息,並以此來學習結點的向量表示。
deepwalk中的實現是徹底隨機的,根據Random Walk的不一樣,後面又衍生出了node2vec算法,解決了deepwalk定義的結點類似度不能很好反映原網絡結構的問題。
skip-gram 語言模型
skip-gram 是使用單詞來預測上下文的一個模型,經過最大化窗口內單詞之間的共現機率來學習向量表示,在這裏擴展以後即是使用結點來預測上下文,而且不考慮句子中結點出現的順序,具備相同上下文的結點的表示類似。(Ps:兩個node同時出如今一個序列中的頻率越高,兩個node的類似度越高。)
結點類似性度量: 上下文的類似程度(LINE中的二階類似度)
共現機率根據獨立性假設能夠轉化爲各條件機率之積即
對序列中的每一個頂點,計算條件機率,即該結點出現的狀況下序列中其餘結點出現的機率的log值並藉助隨機梯度降低算法更新該結點的向量表示。
Φ(vj)爲當前結點的向量表示。Hierarchical Softmax用於分解並加快計算第三行的條件機率。
本次實驗在人工網絡上進行(平均度爲20,最大度爲50,一個社區小包含結點數minc爲10,最大maxc爲100),deepwalk參數爲默認值,訓練向量維數爲64。分別在mu(混合度)爲0.1,0.2,0.3,0.4,0.5,0.6,而且節點規模N爲2k,4k,6k,8k,10k上進行。使用sklearn庫的K-means進行聚類,K進行人工調整在實際值,重複每一個實驗10次而且計算每一個實驗的平均NMI值。
NMI | N=2k | N=4k | N=6k | N=8k | N=10k |
---|---|---|---|---|---|
u=0.1 | 0.955741 | 0.965896 | 0.973577 | 0.973319 | 0.969941 |
u=0.2 | 0.958258 | 0.958192 | 0.960152 | 0.955094 | 0.957447 |
u=0.3 | 0.955079 | 0.941854 | 0.933403 | 0.929904 | 0.932717 |
u=0.4 | 0.953002 | 0.924042 | 0.908161 | 0.916834 | 0.913081 |
u=0.5 | 0.949694 | 0.895752 | 0.876676 | 0.878265 | 0.876310 |
u=0.6 | 0.897372 | 0.872618 | 0.852643 | 0.838807 | 0.835484 |
存在問題:
聚類參數k的肯定問題對實驗的影響很大。
本實驗未探究deepwalk參數即訓練的向量維數,隨機遊走長度,迭代次數,skip-gram窗口大小對聚類精度的影響。