일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 서평
- 에트리 인턴
- 딥러닝
- Eda
- r
- python
- 한국전자통신연구원 인턴
- SQLD
- 빅데이터분석기사
- hadoop
- 지도학습
- 기계학습
- dx
- httr
- 머신러닝
- 웹크롤링
- 가나다영
- matplot
- 하계인턴
- 빅분기
- 소셜네트워크분석
- 시각화
- 에이블스쿨
- arima
- cnn
- 다변량분석
- ETRI
- ML
- 에이블러
- 하둡
- 프로그래머스
- KT AIVLE
- Ai
- kaggle
- SQL
- ggplot2
- 시계열
- 한국전자통신연구원
- kt aivle school
- KT 에이블스쿨
Archives
- Today
- Total
소품집
소셜네트워크 정의 및 igraph 패키지 사용하기 본문
728x90
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
'Web crawling' 카테고리의 다른 글
[python] Session을 활용하여 크롤링 하기 (0) | 2020.09.02 |
---|---|
소셜네트워크 분석 (0) | 2020.06.19 |
Selenium을 크롬에서 구동하기 - 네이버카페 크롤링 (0) | 2020.05.11 |
[웹 크롤링] 로케일에 대한 이해 (0) | 2020.04.28 |
[웹 크롤링] KOSPI 200 기업 (0) | 2020.04.25 |
Comments