[소셜 네트워크 분석의 개념 ]


소셜 네트워크 분석의 정의, 특징,  현황, 표현하는 방식 등 개요를 짚어보고 소셜 네트워크 분석을 위해 사용되는 방법인 연결성과 밀도에  대하여 알아보겠습니다


1. 개요


개인적인 인간관계가 확산되어 형성된 사람들 사이의 연결된 네트워크인  사회 연결망을 분석하는 것을 소셜 네트워크 분석이라고 합니다. 소셜 네트워크 분석 툴이 유용한  경우는 어떤 것이 있을까요? 소셜 네트워크 분석 툴은 사회구조와 상호의존성을 파악할 경우나 개인,  그룹, 기관의 작업 패턴을 검토할 경우 유용합니다. 소셜 네트워크 분석의 역할은 다양한 출처에서   데이터를 취합하고, 관계를 분석하고, 관계의 영향, 질, 효능을 평가하는 것 모두를 포함합니다.  어떤 사람들이 관계망의 기능에 중요한 역할을 담당하는지, 어떤 하위 그룹이 있는지, 특정 관계망에  어떤 전체적인 연결 관계가 있는지 등을 분석하여 관계의 패턴과 개인 사이의 상대적인 위치를  보여 주는 것입니다. 


소셜 네트워크 분석 현황 에 대해서 살펴보겠습니다. 소셜 네트워크 분석 이론이 최근 각광을 받고  있는데요. 소셜 네트워크 분석 이론은 오랜 역사를 가진 분야로 IT 기술의 발전에 따라 관심을 받고  있습니다. 통신 및 온라인 소셜 미디어나 게임 및 유통업체에서 특히 관심을 보이고 있습니다.  소셜 네트워크 분석은 일반인도 익숙하게 접할 수 있습니다. 단적인 예로 Facebook 등에서 친구들의  관계를 그래프 형태로 보여주는 것을 생각하시면 되는데 일부 소셜 미디어 검색 및 관리 기능을 갖고  있는 솔루션이나 웹 페이지에서 이러한 기능을 보여주고 있습니다. 그리고 최근 한국에서는  정치권에서의 관심으로 많이 활용하려는 노력이 보이고 있습니다. 소셜 네트워크 분석은 어떻게  표현할까요? 일반적으로 사회 네트워크 분석에서는 분석하고자 하는 데이터를 행렬로 표현합니다.  행과 열이 만나는 셀에 특정 값을 입력하여 행과 열사이의 관계를 나타내는 것인데요. 개체와 개체간의  관계가 존재하면 1, 존재하지 않으면 0을 입력합니다. 다음 행렬을 한 번 보죠. A행과 C열이 만나는  셀에 1이 입력되어 있죠. 그러면 그래프가 다음과 같이 그려지는 것입니다. 이 방식은 매우 정밀한  결과를 제공할 수 있다는 장점이 있습니다.




2. 소셜 네트워크 분석에 사용되는 방법


연결성과 밀도

지금부터는 사회 네트워크 분석에 사용되는 방법에 대해서 살펴보겠습니다. 일반적으로 사용하는  방법은 연결성과 밀도입니다. 소셜 네트워크 분석은 특정 사람들이 네트워크 기능에 얼마나 중요한  역할을 하는지를 분석하고 네트워크의 전체적인 연결관계를 분석합니다. 그리고 네트워크의 고립관계도  분석하는 기법입니다. 이를 위해 사람간의 관계가 어떻게 맺어지는지를 파악하는 연결성과  전체 네트워크에서 사람들 사이의 연결된 정도를 나타내는 밀도를 사용합니다. 


연결성 분석 은 개인이 가지는 인기도, 사회적 성향, 고립도 등의 그룹 내에서 가지는  연결 성향을 파악할 수 있습니다. 이 분석 결과는 개인의 그룹 내 성향을 나타냅니다. 그래서 이 자료를  기반으로 교수자 또는 교회 리더자가 그룹 구성원 개인의 장점을 부각시킬 수 있고, 단점을 보완하여  전체 그룹을 이끌어가는 지표로써 사용할 수 있습니다. 다음은 밀도에 대하여 알아보겠습니다. 


밀도 는 네트워크에서 구성원들간에 얼마나 많은 관계를 맺고 있는가를 표현하는 개념으로 그룹 전체의 관점에서  구성원들이 얼마나 친밀한 관계를 유지하고 있는지, 그룹 내 고립인원이 있는지를 나타냅니다. 그래서  현재 그룹 전체의 친밀도를 파악하고, 그룹을 이끌어가는 방향성을 고려할 수 있게 됩니다. 그리고  밀도는 구체적으로 포괄성과 연결정도의 개념을 기반으로 측정되는데요. 포괄성은 네트워크에서 연결된  요소의 수를 의미하며 연결정도는 각 점들이 다른 점들과 얼마나 많이 연결되어있는가를 나타냅니다. 



연결성 분석을 위한 그래프 마이닝 기술 을 알아보겠습니다. 그래프 마이닝 기술은  페이스북이나 트위터와 같은 소셜 미디어의 데이터를 표현하는 방법으로 다양한 곳에 활용되는 매우  중요한 기술입니다. 빅데이터 중 가장 큰 빅데이터에 속합니다. 따라서 향후 빅데이터 중 가장 활용도가  높은 표현 형식 중 하나라고 할 수 있습니다. 그래프는 데이터 간의 관계를 표현할 때 사용하는  데이터 구조입니다. 참고로 그래프 마이닝은 데이터 마이닝 기술의 일종으로, 그래프에서 마이닝 기술을  적용하는 기술입니다. 일정 빈도수 이상의 특정 패턴을 찾아내는데요. 그러기 위해서 그래프 마이닝은  점과 선 또는 링크로 구성되었습니다. 점은 데이터 요소에 해당하는 정점으로 예를 들면 고객입니다.  선은 점간의 관계를 표시하는 간선이며 링크는 방향성의 유무를 표현하는 것으로 고객과 고객간의  관계를 나타내는 것입니다. 


그럼 이제 그래프 마이닝 기술로 네트워크 구성원간의 연결 관계를 시각적으로 표현하는 것에 대해서 살펴보겠습니다.



그래프는 ‘점’과 ‘선’으로 표현하는 방법으로써  ‘점’은 네트워크 구성원을 의미하고, ‘선’은 구성원간의 연결을 의미합니다. 그리고 방향 그래프에서  연결정도는 링크로 나타내죠. 링크는 연결의 방향에 따라 인-디그리와 아웃-디그리의 두 가지 개념으로  나누어집니다. 이에 대하여 좀 더 자세하게 살펴볼까요? 인-디그리는 한 점이 다른 점으로부터 화살표를  받는 관계의 정도이고, 의미상으로 볼 때 한 점이 가지는 인기도를 반영하는 지표입니다. 인-디그리가  높다는 것은 그만큼 다른 사람들로부터 정보제공의 ‘인기’를 누리는 것으로 해설됩니다. 아웃-디그리는  반대로 어떤 점이 다른 점에게 화살표를 주는 관계의 정도를 나타냅니다. 각 점이 가지는 인-디그리와  아웃-디그리 값을 분석하여 그 요소가 네트워크에서 가지는 특징을 분석할 수 있습니다.




소셜 네트워크 솔루션 은 여러가지가 있는데요. 



먼저 카이젠 은 미국 소프트웨어 회사로 1998년 설립되어  오피스는 샌프란시스코, 파리와 런던에 위치하고 있습니다. 카이젠은 주로 예측용 분석 소프트웨어를   개발하는데요. 카이젠에 의해서 개발된 인피니트인사이트라는 소프트웨어는 분류, 회귀, 시계열,  제품 추천 및 소셜네트워크 분석에 활용되는  소프트웨어입니다. 





SAS 는 Statistical Analysis System를  줄인 것입니다. 통계분석 소프트웨어 제품군을 개발하는 곳인데요. 비즈니스 인텔리전스, 데이터 관리  및 예측분석과 관련한 제품군을 SAS연구소에서 개발하였습니다. 2002년에는 텍스트 마이너 소프트웨어를  개발하였고, 2010년에는 소셜 미디어 분석, 소셜 미디어 모니터링, 참여와 심리 분석을 위한 도구 등을  개발하였습니다. 





엑스트랙은 핀란드의 소프트웨어 업체로 차세대 고급 분석 솔루션을 개발 및  제공합니다. 관심있는 현상을 예측할 수 있도록 소셜 네트워크에 관한 정보를 포함하여 다양한 분야의  방대한 데이터를 분석할 수 있는 분석 플랫폼을 제품화합니다. 그 외에도 다양한 소프트웨어 제품을  출시하였습니다. 종류는 고객 이탈 방지, 고객 확보, 고객 프로파일링, 서비스 프로모션 등이 있습니다.
           



이디로는 2003년 설립된 아일랜드 소프트웨어 개발 업체로 소셜 네트워크 분석과 빅데이터 분석과  관련한 제품을 출시하고 있습니다. 주력 제품으로는 Idiro SNA 플러스로 이는 소셜 네트워크 분석과  빅데이터 분석 솔루션을 제공하고 있습니다. 





오날리티카는 2009년에 설립된 소프트웨어 개발 업체로서 소셜 네트워크 분석 및 분석을 통한 통찰력을  제공하는 서비스에 초점을 맞추었습니다. 메시지로 구체적인 시기에 특정 주제에서 가장 영향력 있는  사람을 식별하게 하며 영향력 있는 관계자들과의 관계를 확장 할 수 있는 서비스를 제공합니다.   영향력 있는 관계자들에는 언론인, 전문가, 지도자, 블로거 등을 예로 들 수 있습니다. 




유씨아이넷은 사회적 네트워크 데이터의 분석을 위한 시리즈를 제공하고 있습니다.  




파젝은 슬로바니아의 대학에서 만든 프로그램입니다. 네트워크 분석 소프트웨어 프로그램으로 거미를 의미하여 이름 붙여졌습니다.
          





인플로우는 오알지넷과 LLC라는 회사가 제공하는 소셜 네트워크 분석 소프트웨어입니다. 인플로우 3.1은  네트워크 분석과 네트워크 시각화 기능을 제공하고 있습니다. 



지금까지 소셜 네트워크 솔루션들을 살펴보았는데요. 각각 많은 장점들이 있지만 데이터 로딩 속도나 시각화 기능 등의 제약이 있기 때문에  아직 성숙된 시장은 아닌 것으로 판단됩니다. 하지만 급성장하고 있는 분야인 것은 확실합니다. 




[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들이 많이 접속합니다. 



그래프 그리기
 이제 소셜 네트워크 그래프를 그리기 위한 스크립트를 정리하여 볼 텐데요. 12번 박스 안의 언어는  화살표 끝을 추가하고 13번 박스 안의 언어로 그래프의 레이아웃을 설정합니다. 
그리고 V(g)$size =  log( V(g)$followers ) * 1.8 줄 바꿔 V(g)$label=V(g)$name 줄 바꿔 V(g)$label.cex = 0.6으로  그래프의 크기와 라벨 이름과 사이즈를 지정합니다. 그래프의 크기는 총 follower의 수에 근거해  사이즈를 결정합니다. 다시 말해 노드의 크기는 follower 수의 로그 값에 비례하게 설정한다는  것입니다. 또한 label 이름과 사이즈를 지정합니다. tcolors <- rev(heat.colors(max(V(g)  $tweets))) 줄 바꿔 V(g)$color <- tcolors[ V(g)$tweets ]는 노드의 색이 검색된 결과에 나타난  트위터의 개수를 반영한다는 것을 나타냅니다. E(g)$arrow.size <- 0.3은 화살표 끝을 지정합니다.  그리고 E(g)$curved <- FALSE로 곡선이 없고 E(g)$color <- 'blue‘로 선 색깔이 파란색임이  지정되었습니다. 대칭 연결을 읽기 쉽게 만들어진 것입니다. 그럼 그래프를 살펴볼까요? 




2. 결과보기



이것은 사용자 간의 관계를 확인할 수 있습니다. 그리고 노드의  크기로부터 각 사용자의 Follower의 수를 유추할 수 있고 노드의 색으로부터는 트위터의 개수가 많고  적음을 유추할 수 있습니다.