또르르's 개발 Story

[24-2] Node2vec Library 본문

부스트캠프 AI 테크 U stage/실습

[24-2] Node2vec Library

또르르21 2021. 2. 26. 01:59

Node2vec은 임의보행 기반 접근법에서 2차 치우친 임의보행(Second-order Biased Random Walk)을 사용한 모형입니다.

 

1️⃣ 설정

 

networkx와 node2vec을 설치합니다.

!pip install networkx

!pip install node2vec

필요한 모듈을 import 합니다.

import networkx as nx

from node2vec import Node2Vec

from matplotlib import pyplot as plt

 

 

2️⃣ node2vec

1) Node2Vec 함수

Node2Vec 함수는 edge 별 확률 계산(p, q에 따른 edge별 확률 계산) & random walk 생성을 해줍니다.

 

  • dimensions : embedding 공간 차원
  • walk_length : random walk 길이 제한
  • num_walks : 시작 지점 별 샘플링하는 랜덤워크 수
  • workers : 사용하는 thread 개수
node2vec = Node2Vec(G, dimensions=16, walk_length=4, num_walks=200, workers=4)

이후, node embedding을 구할 수 있습니다.

  • window : 얼마나 가까이 위치하는 정점들을 유사한 것으로 보는지
model = node2vec.fit(window=2, min_count=1, batch_words=4)

 

2) 출력

wv를 사용하여 각 정점 별 embedding을 확인할 수 있습니다.

print("#### Embedding Vector of Node 2 ####")


>>> print(model.wv['2'])

#### Embedding Vector of Node 2 ####
[ 0.54528505 -0.7130727  -0.02558359 -0.39141628  0.4070473   0.40119523
  0.03581685  0.9786871  -1.1339003   0.44845396  0.61817944  0.72981864
 -0.31388542  0.36739552 -1.5445774   1.040954  ]

wv.most_similar() 함수를 사용해 가장 유사한 10개의 node를 출력할 수 있습니다.

print("#### Most Similar Nodes to Node 2")


>>> model.wv.most_similar('2')  

#### Most Similar Nodes to Node 2
[('3', 0.995975136756897),
 ('5', 0.9943181276321411),
 ('1', 0.9939799308776855),
 ('6', 0.9936045408248901),
 ('9', 0.9932981133460999),
 ('7', 0.9931290149688721),
 ('4', 0.9921121597290039),
 ('8', 0.9898156523704529),
 ('0', 0.9670246839523315),
 ('10', 0.6719188690185547)]
Comments