소품집

소셜네트워크 정의 및 igraph 패키지 사용하기 본문

Web crawling

소셜네트워크 정의 및 igraph 패키지 사용하기

sodayeong 2020. 6. 16. 00:01

9장 (소셜네트워크 정의 및 igraph 패키지 사용하기)


네트워크의 정의


네트워크는 노드와 그들의 관계의 집합을 표현하는 시각화 기술을 말함

 

네트워크에 대한 연구


측정

  • Node : 중요한 노드 찾기
  • Network : 커다란 집합이 구성되어 있는지, 몇 개의 서브그룹으로 구성되어 있는지, 네트워크는 어떤 형태(모양)을 띄는지 파악함

네트워크 형성

  • 어떤 특성에 의해 네트워크가 구성되었는지?
  • 무작위적으로 아니면 부익부 빈익빈의 특성 등 만들어지는 방법에 따라 특성이 다양하게 나타남

네트워크 상의 프로세스

  • 전파되는 현상
  • 네트워크의 구조가 전파 현상에 영향을 미치는가?
  • 전파현상 예측 모델링

 

네트워크 구성


 

 

 

점 : 사람, 조직

연결선 : 관계

 

 

Directed vs. Undirected Ties


방향성을 가지는 링크와 방향성을 가지지 않는 링크로 총 두 종류의 네트워크를 생성할 수 있음

 

 

인스타그램은 트위터와 같이 한 방향의 링크를 구성하여 표현할 수 있지만 페이스북 친구는 양방향의 네트워크 구성을 갖을 수 있게 됨.

 

 

 

네트워크를 데이터로 표현하기


Adjacency Matrix (근접행렬)

노드의 수 만큼 행과 열을 생성한 후, 관계의 유무에 따라 0 or 1로 표기함

또한 자신과의 네트워크에서는 표기 안 함.

경로길이

A^2 : 길이가 2인 경로가 몇 개 있는지를 알 수 있음

 

 

 

M1에서 시작해 2단계를 거쳐 M1으로 다시 돌아오는 경우의 수를 파악할 수 있음

즉, 경로 count 파악!!

 

 

연습문제

R에서 Matrix 연산을 통해 A^3, A^4를 계산하시오

 

 

최단경로 계산


M2 → M5로 가는 최단경로(shortest path, geodesic path)를 찾아보자

 

 

중심성 (Centrality)


최단거리를 계산하여, 행렬 D에서 행의 합 : 5, 6, 8, 무한대, 8

  • 각 노드에서 다른 노드로 전달하는 최단경로
  • M1으로부터 최단경로의 합이 가장 작음 → M1에서 메세지가 발생하는 경우 가장 작은 길의 경ㄹ로로 모든 노드들에게 전달
  • M1을 시작점으로 할 경우 가장 효과적으로 정보전달이 가능함

행렬 D에서 열의 합 : 무한대, 무한대, 무한대, 8, 무한대

  • 가장 짧은 노드로 정보가 모이는 곳은 M4

 

 

네트워크 표현


Edge list

메트릭스로 표현하면 0으로 채워지는 부분이 많음 → 저장공간이 낭비됨

보통 Source, Target의 쌍으로 표현함

 

 

관련 R packages: igraph


 

# 방향성이 있는 경우의 관계도 그리기 
g1 <- graph(c(1,2,2,3,2,4,1,4,5,5,3,6))
plot(g1, edge.arrow.size=0.5)
print_all(g1)

# 방향성이 없는 경우의 관계도 그리기
g1 <- graph(c(1,2,2,3,2,4,1,4,5,5,3,6), directed =F )
plot(g1, edge.arrow.size=0.5)
print_all(g1)

 

 

# 데이터프레임 -> 그래프로 변환
emp <-read_excel('coworker.xlsx')

g <-**graph.data.frame**(emp, directed = T)
plot(g, layout=layout.fruchterman.reingold, vertex.size=8, edge.arrow.size=0.5, edge.arrow.size=0.1)

g3 <- graph.data.frame(emp, directed = F )
plot(g3, layout=layout.fruchterman.reingold, verte.size=8, edge.arrow.size=0.5, **vertex.label=NA**)

 

 

 

 

네트워크(그래프) 시각화


 

 

 

연습문제


  • 노드의 색을 빨간색으로 변경
  • 선의 색을 파란색으로 변경
g3 <- graph.data.frame(emp, directed = F )
plot(g3, layout=layout.fruchterman.reingold, verte.size=3,
     edge.arrow.size=0.5, vertex.label=NA, **edge.colo='blue',vertex.color='red',
     vertex.frame.color='blue'**)

 

 

 

g <-read.csv('군집분석.csv', header=T) # student & teacher Data
g <- graph.data.frame(g, directed = T)
plot(g, layout=layout.fruchterman.reingold, vertex.size=2,
     edge.arrow.size=0.005, vertex.color='green', vertex.label=NA) # 왼

plot(g, layout=layout.kamada.kawai, vertex.size=2,
     edge.arrow.size=0.005, vertex.label=NA) # 오

 

 

 

 

 

library(stringr)
V(g)$name
gubun1 <- V(g)$name
gunbun <- str_sub(gubun1, start=1, end=1)

# 학생일 경우 red, 학생이 아닌 경우 green
colors <- ifelse(gunbun=='S','red','green')

# size 조정 
size <- ifelse(gubun=='S',1,3)

# 색상/크기 구분자 생성
plot(g,layout=layout.fruchterman.reingold, **edge.arrow.size=0.005**,
     vertex.size=size, vertex.color=colors, vertex.label=NA) # 왼

plot(g,layout=layout.fruchterman.reingold, **edge.arrow.size=0**,
     vertex.size=size, vertex.color=colors, vertex.label=NA) # 오 

 

 

연습문제


  • 학생일 경우 모양을 square
  • 교수일 경우 점의 모양을 circle로 하여 그래프를 그리시오

오 모르겠서요. 공부 할게용 ;;;

728x90
Comments