[소셜 네트워크 분석의 개념 ]
소셜 네트워크 분석의 정의, 특징, 현황, 표현하는 방식 등 개요를 짚어보고 소셜 네트워크 분석을 위해 사용되는 방법인 연결성과 밀도에 대하여 알아보겠습니다
1. 개요
개인적인 인간관계가 확산되어 형성된 사람들 사이의 연결된 네트워크인 사회 연결망을 분석하는 것을 소셜 네트워크 분석이라고 합니다. 소셜 네트워크 분석 툴이 유용한 경우는 어떤 것이 있을까요? 소셜 네트워크 분석 툴은 사회구조와 상호의존성을 파악할 경우나 개인, 그룹, 기관의 작업 패턴을 검토할 경우 유용합니다. 소셜 네트워크 분석의 역할은 다양한 출처에서 데이터를 취합하고, 관계를 분석하고, 관계의 영향, 질, 효능을 평가하는 것 모두를 포함합니다. 어떤 사람들이 관계망의 기능에 중요한 역할을 담당하는지, 어떤 하위 그룹이 있는지, 특정 관계망에 어떤 전체적인 연결 관계가 있는지 등을 분석하여 관계의 패턴과 개인 사이의 상대적인 위치를 보여 주는 것입니다.
소셜 네트워크 분석 현황 에 대해서 살펴보겠습니다. 소셜 네트워크 분석 이론이 최근 각광을 받고 있는데요. 소셜 네트워크 분석 이론은 오랜 역사를 가진 분야로 IT 기술의 발전에 따라 관심을 받고 있습니다. 통신 및 온라인 소셜 미디어나 게임 및 유통업체에서 특히 관심을 보이고 있습니다. 소셜 네트워크 분석은 일반인도 익숙하게 접할 수 있습니다. 단적인 예로 Facebook 등에서 친구들의 관계를 그래프 형태로 보여주는 것을 생각하시면 되는데 일부 소셜 미디어 검색 및 관리 기능을 갖고 있는 솔루션이나 웹 페이지에서 이러한 기능을 보여주고 있습니다. 그리고 최근 한국에서는 정치권에서의 관심으로 많이 활용하려는 노력이 보이고 있습니다. 소셜 네트워크 분석은 어떻게 표현할까요? 일반적으로 사회 네트워크 분석에서는 분석하고자 하는 데이터를 행렬로 표현합니다. 행과 열이 만나는 셀에 특정 값을 입력하여 행과 열사이의 관계를 나타내는 것인데요. 개체와 개체간의 관계가 존재하면 1, 존재하지 않으면 0을 입력합니다. 다음 행렬을 한 번 보죠. A행과 C열이 만나는 셀에 1이 입력되어 있죠. 그러면 그래프가 다음과 같이 그려지는 것입니다. 이 방식은 매우 정밀한 결과를 제공할 수 있다는 장점이 있습니다.
2. 소셜 네트워크 분석에 사용되는 방법
연결성과 밀도
지금부터는 사회 네트워크 분석에 사용되는 방법에 대해서 살펴보겠습니다. 일반적으로 사용하는 방법은 연결성과 밀도입니다. 소셜 네트워크 분석은 특정 사람들이 네트워크 기능에 얼마나 중요한 역할을 하는지를 분석하고 네트워크의 전체적인 연결관계를 분석합니다. 그리고 네트워크의 고립관계도 분석하는 기법입니다. 이를 위해 사람간의 관계가 어떻게 맺어지는지를 파악하는 연결성과 전체 네트워크에서 사람들 사이의 연결된 정도를 나타내는 밀도를 사용합니다.
연결성 분석 은 개인이 가지는 인기도, 사회적 성향, 고립도 등의 그룹 내에서 가지는 연결 성향을 파악할 수 있습니다. 이 분석 결과는 개인의 그룹 내 성향을 나타냅니다. 그래서 이 자료를 기반으로 교수자 또는 교회 리더자가 그룹 구성원 개인의 장점을 부각시킬 수 있고, 단점을 보완하여 전체 그룹을 이끌어가는 지표로써 사용할 수 있습니다. 다음은 밀도에 대하여 알아보겠습니다.
밀도 는 네트워크에서 구성원들간에 얼마나 많은 관계를 맺고 있는가를 표현하는 개념으로 그룹 전체의 관점에서 구성원들이 얼마나 친밀한 관계를 유지하고 있는지, 그룹 내 고립인원이 있는지를 나타냅니다. 그래서 현재 그룹 전체의 친밀도를 파악하고, 그룹을 이끌어가는 방향성을 고려할 수 있게 됩니다. 그리고 밀도는 구체적으로 포괄성과 연결정도의 개념을 기반으로 측정되는데요. 포괄성은 네트워크에서 연결된 요소의 수를 의미하며 연결정도는 각 점들이 다른 점들과 얼마나 많이 연결되어있는가를 나타냅니다.
연결성 분석을 위한 그래프 마이닝 기술 을 알아보겠습니다. 그래프 마이닝 기술은 페이스북이나 트위터와 같은 소셜 미디어의 데이터를 표현하는 방법으로 다양한 곳에 활용되는 매우 중요한 기술입니다. 빅데이터 중 가장 큰 빅데이터에 속합니다. 따라서 향후 빅데이터 중 가장 활용도가 높은 표현 형식 중 하나라고 할 수 있습니다. 그래프는 데이터 간의 관계를 표현할 때 사용하는 데이터 구조입니다. 참고로 그래프 마이닝은 데이터 마이닝 기술의 일종으로, 그래프에서 마이닝 기술을 적용하는 기술입니다. 일정 빈도수 이상의 특정 패턴을 찾아내는데요. 그러기 위해서 그래프 마이닝은 점과 선 또는 링크로 구성되었습니다. 점은 데이터 요소에 해당하는 정점으로 예를 들면 고객입니다. 선은 점간의 관계를 표시하는 간선이며 링크는 방향성의 유무를 표현하는 것으로 고객과 고객간의 관계를 나타내는 것입니다.
먼저 카이젠 은 미국 소프트웨어 회사로 1998년 설립되어 오피스는 샌프란시스코, 파리와 런던에 위치하고 있습니다. 카이젠은 주로 예측용 분석 소프트웨어를 개발하는데요. 카이젠에 의해서 개발된 인피니트인사이트라는 소프트웨어는 분류, 회귀, 시계열, 제품 추천 및 소셜네트워크 분석에 활용되는 소프트웨어입니다.
[R을 활용한 소셜 네트워크 분석 수행 ]
R 프로그래밍 언어 패키지 중 i graph패키지를 이용하여 분석을 해볼 텐데요. R프로그램에서 소셜 네트워크를 다루는 패키지는 i graph패키지 말고도 매우 다양합니다. 그러나 모든 패키지를 다룰 필요가 없는 것이 너무 지나치게 이론적인 배경에 집중하다 보면 오히려 소셜 네트워크 분석 수행을 이해하는데 어려움을 느낄 수 있다고 생각합니다. 데이터를 입수해서 이를 소셜 네트워크 그래프로 처리하고 속성에 따라 그래프를 다양하게 처리함으로써 의미 있는 시야를 가지게 되는 것이 중요하다는 것을 기억하며 학습을 시작하세요.
1. 트위터 검색을 통한 사용자간 소셜 네트워크 분석
트위터에서 검색할 용어와 개수
R을 활용하여 트위터 검색을 통한 소셜 네트워크 분석을 수행하여 보겠습니다. 먼저 트위터에서 검색할 용어와 개수에 대하여 살펴보겠습니다. 1번 박스 안의 search.term <- '#Rstats‘는 twitter API를 통해 트위터에서 검색할 용어를 #Rstats로 정의한다는 것이고 2번 박스 안 search.size <- 50은 최대 검색할 개수를 50개로 제한한다는 것입니다. 3번 박스에서 library(igraph)와 library(twitteR)로 igraph와 twitterR을 설치하고 search.results <- searchTwitter(search.term,n=search.size)로 트위터에서 #Rstats 이라는용어를 가지는 트위터를 50개 찾아 search.results에 저장합니다.
노드간 관계 네트워크 만들기
4번 박스의 vl <- vector() 줄 바꿔 for (twt in search. results)는 변수인 vl에 백터함수를 할당하여 초기화하고 검색된 결과의 사용자 이름을 가져옵니다. 그리고 + vl <- c(vl,screenName(twt))로 기존의 vl에 검색된 결과의 사용자 이름을 추가하여 새로운 vl벡터를 생성합니다. 이는 소셜 네트워크의 노드 리스트를 만드는 과정에 해당합니다.
그리고 5번 박스의 vl <- as.data.frame(table(vl)) 줄바꿔 colnames(vl) <- c('user','tweets')로 각 사용자의 노드를 계산하고 데이터에 대한 이름을 제공합니다. 그 후 g <- graph. empty(directed =TRUE) 줄 바꿔 g <- add.vertices(g,nrow(vl),name=as.character(vl$user), 줄바꿔 + tweets=vl $tweets)를 입력하면 변수 g에 노드가 추가되어 노드 간 관계 네트워크가 만들어집니다.
Followers 가져오기
지금부터는 Follower들을 가져와볼텐데요. V(g)$followers <- 0으로 앞에서 정의된 관계 네트워크 g에서 followers들을 초기화합니다. getUser('Biff_Bruise')$getFollowers(n=10)는 특정 사용자의 follower들을 가져오는 스크립트인데요. 특정 사용자인 ‘Biff_Bruise'의 Follower 10명을 가져온다는 의미입니다. for (usr in V(g)) { 줄 바꿔 + tuser <- getUser(V(g)$name[usr+1]) 줄 바꿔 + print(paste("Getting info on",screenName(tuser)))스크립트로 이름에 의한 사용자의 정보를 가져옵니다.
+ V(g)$followers[usr+1] <- followersCount(tuser)로 총 follower의 수를 계산합니다.
그리고 + followers.list <- getUser(V(g)$name[usr+1])$getFollowers() 줄 바꿔 + for (tflwr in followers.list) { 줄 바꿔 + if (screenName(tflwr) %in% V(g)$name) 스크립트를 입력하면 follower들이 많이 접속합니다.
2. 결과보기
이것은 사용자 간의 관계를 확인할 수 있습니다. 그리고 노드의 크기로부터 각 사용자의 Follower의 수를 유추할 수 있고 노드의 색으로부터는 트위터의 개수가 많고 적음을 유추할 수 있습니다.
'빅데이터분석개론' 카테고리의 다른 글
의료 통신 산업과 공공부문의 빅데이터 활용과 사례연구 (0) | 2016.01.03 |
---|---|
제조업과 금융산업의 빅데이터 활용과 사례연구 (0) | 2016.01.03 |
오피니언 마이닝의 이해 (0) | 2016.01.03 |
텍스트 마이닝의 이해 (1) | 2016.01.03 |
비정형 데이터 마이닝의 이해 (0) | 2016.01.03 |