1. Social Network Analysis
Social Network Analysis(SNA), 사회 연결망 분석은 연결망 데이터를 활용하여 사회 연결 구조를 분석하는 것이다.
위키백과 내용을 참조하면 좋을 것이다.
나는 그 중에서도 Family tree 쪽을 보고 있다.
불완전 데이터를 다루고 있기 때문에 완벽한 Tree 시각화는 하지 못하고 있다.
오히려 일반적인 네트워크 시각화와 비슷하기 때문에,
혹시나 볼 사람이 있을까봐 포스팅 해두려고 한다.
2. 네트워크 분석 툴
네트워크 분석 툴은 여러가지가 있다.
그냥 내가 많이 건드린 애들만 나열해보겠다.
(1) DBNeo4j 라는 네트워크 DB가 있다.
cypher라는 NoSQL 쿼리문을 사용한다.
내가 사용할 땐 링크 depth를 찾다가 자꾸 DB서버가 터졌다.
일반 쿼리도 잘 못짜기 때문에 cypher 쿼리 작성도 힘들었다.
위와 같은 이유로 나는 네트워크 DB를 안 쓴다.
다른 네트워크 DB들도 있으니 궁금하면 찾아보길 바란다.
(2) Networkx
파이썬 이용한다면 networkx 사용하는 것이 괜찮다.
전처리를 하자마자 네트워크 구성을 할 수 있어서 좋았다.
헌데, 전문 프로그램들에 비해 좀 느리다.
네트워크 구성 알고리즘에 log가 없는 느낌이다.
(3) 그 외
UCINET 같이 유명한 툴도 있지만, 안 예뻐서 쓰진 않았다.
NetMiner라는 툴은 꽤 좋긴 한데, 무료버전의 노드 수용량이 5천개 까지다.
Graphviz는 많은 플랫폼들에 api로 있다. 파이썬에도 있다.
(4) Gephi읽는 거는 사람마다 제피, 제파이, 게피, 게파이 참 다양하더라…
나는 시각화 부분에서는 Gephi를 이용하였다.
이걸 사용하는 이유는, 애니메이션 기능이 있어서다.
Timestamp 기반으로 애니메이션 해주는 것이 마음에 들었다.
속도도 networkx 보다 빨랐다.
3. Gephi 사용법
작성 당시엔 생각보다 gephi 사용법에 대한 글이 없어보였다.
이런 약소한 수준의 글이라도 남겨두면 좋아보여 포스팅 하였다.
아래는 Gephi 화면이다.
처음에 깔고 실행하면 위 화면과는 다를 것이다.
이거는 상단에 도구-플러그인순으로 들어가서 모든 플러그인을 설치한 상태다.
그래프 알고리즘 등 쓸만한 애들이 많기 때문에 설치해두면 좋다.
3-1. Gephi - Data Laboratory
네트워크 데이터를 넣어두고자 한다.
여기서 직접 만드는 방법도 있지만, 그렇게 편한 데이터를 넣을 리 없기 때문에
데이터 파일을 올리는 방식을 사용할 것이다.
사용할 데이터는 사육신과 관련된 사람들 + 가상인물 1명의 네트워크다.
미리 간단히 설명하자면,
Import Spreadsheet는 자료 불러오기
More actions는 edge 혹은 그래프 전체 삭제
Merge columns는 있는 데이터 기반으로 컬럼 생성
Copy data to other column은 그대로 데이터 복사다.
-
I. Import Spreadsheet
-
데이터를 넣는 부분이다. xlsx, csv 등의 형식을 지원한다.
※ UTF-8로 인코딩된 csv 파일은 첫번째 컬럼이 인식되지 않는 경우가 있다.
첫 번째 컬럼에 빈 컬럼을 추가하면 해결(?)된다. -
각각 필수적인 컬럼이 있다.
node는 Id, edge는 Source와 Target이 필요하다. (대문자 구분 필수)
사용할 node, edge 파일 -
-
II. More actions
- 주로 쓸 기능은 edge 삭제와 graph 삭제다.
딱히 설명할 필요가 없어 넘어간다.
- 주로 쓸 기능은 edge 삭제와 graph 삭제다.
-
III. Merge columns
- 있는 데이터를 기반으로 컬럼을 생성한다.
Interval 만드는 걸로 예시를 들어보겠다.
처음과 끝에 해당하는 컬럼을 가져오고,
interval 만들기를 실행한다.
- 처음 컬럼과 끝 컬럼을 지정한다.
날짜 형식을 지정한다. 여러 형식이 있으니 그에 맞춰서 데이터를 만들자.
데이터를 포괄하는 시간 범위도 지정하고 마치면 된다.
- 있는 데이터를 기반으로 컬럼을 생성한다.
-
IV. Copy data to other column
- 말 그대로 데이터 복사다.
복사할 컬럼을 선택하고, 붙여넣을 컬럼을 선택하면 끝난다. - Label을 채워야 그래프에 표시되기 때문에
name을 Label에 복사했다.
처음부터 자료의 컬럼명을 Label로 했으면 편할 것이다.
수정 완료된 node 파일 - 말 그대로 데이터 복사다.
3-2. Gephi - Overview
시각화 구성을 할 것이다.
처음엔 간단히 나오기 때문에 좀 다듬을 것이다.
미리 간단히 설명하자면,
Appearance는 노드, 엣지 외형 조정
Layout은 네트워크 알고리즘 선택이다.
번외로 시간 애니메이션 설정도 볼 것이다.
- I. Appearnce
- nodes 에서 순서대로 색깔, 크기, label 색깔, label 크기를 조절할 수 있다.
- 색깔을 예시로 들면,
unique는 전체 색깔을 조절한다.
partition은 지정한 속성(주로 분류)에 따라 색깔을 조절한다.
ranking은 지정한 속성(주로 수치)에 따라 색깔을 조절한다.
- 색깔을 예시로 들면,
- edges 에서 순서대로 색깔, label색깔, label 크기를 조절할 수 있다.
그 외엔 nodes 부분과 동일하므로 설명을 줄인다. - Apply 누르면 바로 변경된다.
색깔, 크기 등 각 부분에서 하나만 적용된다.
아래 그래프에서 조정한 변수는 다음과 같다.- Nodes: 색깔-partition-family 변수, 크기-ranking-rank 변수
- Edges: 색깔-partition-attribute 변수
- 그 외, 그래프 아래 부분을 보면 텍스트 표시나 링크 굵기 조절하는 부분이 있다.
한글폰트 넣어주면 폰트는 안 깨질 것이다.
링크 굵기는 Edge 데이터의 weight 값을 조절해줘도 변한다.
- nodes 에서 순서대로 색깔, 크기, label 색깔, label 크기를 조절할 수 있다.
-
II. Layout
- 여러 알고리즘들이 들어있다.
여러가지 실험해보길 바란다. -
종류에 따라 속도차이가 있다. 계산 방식 때문이다.
튜토리얼을 봐도 되고,
여기 78번 슬라이드에 누가 정리해 둔 자료를 봐도 된다.
복잡도가 N^2^ 으로 되어있는 애들은 데이터 많아지면 확실히 느리다. - 아래는 ForceAtlas 2를 사용한 결과물이다.
- 여러 알고리즘들이 들어있다.
-
III. Time
- 시계열 혹은 특정 기간을 볼 수 있다.
재생시간도 조절 가능하다. 미세한 조정은 잘 안된다. - 왼쪽 아래 구석을 보면 환경설정이 가능하다.
나는 time format을 numeric에서 datetime으로 바꿨다. - play setting에서 애니메이션 속도 및 형식을 바꿀 수 있다.
mode에 one bound는 누적, two bound는 기간설정 방식이다.
애니메이션 설정 - 완료된 영상은 다음과 같다.
결과물 - 시계열 혹은 특정 기간을 볼 수 있다.
Preview는 내가 기능을 모르는 건지 모르겠는데, layout 재생을 적용할 수 없어서 그냥 안 썼다.
4. 활용
내가 한 작업을 활용해보려고 한다.
결과물은 youtube에 올렸다.
(많이 부족한 부분이 발견되어서 수정할 예정)
조선시대 과거 합격자 네트워크를 시각화한 것이다.
Layout은 ForceAtlas2 를 사용하였다.
시간은 연도를 기준으로 변화시켰다.
거의 하지도 않는 영상편집에 돈 쓰기 좀 그래서 텍스트를 직접 박았다.
1년 단위로 변하는걸 원했으나,
하나하나 수작업이 힘들어서 20년 단위로 해놨다.



