無論是network embedding 還是graph embedding都是通過節點(node)和邊的圖,學出每個節點的embedding向量。
比較流行的算法有:
Model | Paper | Note |
---|---|---|
DeepWalk | [KDD 2014]DeepWalk: Online Learning of Social Representations | 【Graph Embedding】DeepWalk:算法原理,實現和應用 |
LINE | [WWW 2015]LINE: Large-scale Information Network Embedding | 【Graph Embedding】LINE:算法原理,實現和應用 |
Node2Vec | [KDD 2016]node2vec: Scalable Feature Learning for Networks | 【Graph Embedding】Node2Vec:算法原理,實現和應用 |
SDNE | [KDD 2016]Structural Deep Network Embedding | 【Graph Embedding】SDNE:算法原理,實現和應用 |
Struc2Vec | [KDD 2017]struc2vec: Learning Node Representations from Structural Identity | 【Graph Embedding】Struc2Vec:算法原理,實現和應用 |
一般的應用框架如下:
1、構建圖: Item和item的共現相似矩陣可以構成一個網絡,其中每個item都是節點,相似度達到一定閾值的兩個item直接有邊連接,相似度達不到閾值的不連接。
2、游走策略: 在網絡里面,從一個節點隨機走到有連線的下一個節點。走若干步,就得到了一個節點的序列。
deepwalk 選擇下一步的概率為該節點連接的所有的邊的相似度值取softmax, 也就是scale到0~1的概率值。node2vec 方法結合了DFS和BFS的方式。
3、學embedding 向量: 把隨機游走的序列放到word2vec模型里面學,得到每個節點的embedding向量。
4、使用學到的embedding 向量 使用機器學習方法進行分類。
總結鏈接:https://github.com/shenweichen/GraphEmbedding