Gephi를 활용한 데이터 시각화 강좌의 맛보기 강의입니다.
푸드 네트워크 실습은 어느 정도 마무리를 했고 이제 다른 예제를 또 한번 실습해보겠습니다. 아까 networkrepository 여기로 다시 들어갈게요. networkrepository.com 여기를 일단 들어가시고요. 그다음에 여기에서 아까처럼 Social Networks로 들어갑니다. 사이즈로 정렬을 쭉 해봅시다. 그래서 여기에서 저희가 이걸 봤었죠. pages food 19KB 짜리 노드 620개 짜리 얘를 봤었는데 이번에는 조금 사이즈가 큰 친구를 보겠습니다. 데이터 사이즈가 크면 작업을 하는 프로세스가 약간 달라집니다. 그래서 좀 큰 친구들을 보고자 하는데 어떤 게 재미있을까요? 이거 좀 재미있을 것 같습니다. Artist 들어가 볼게요. 이게 이전에 말씀드렸다시피 많은 데이터들이 익명화 과정을 거칩니다. 당연히 그렇게 해야겠죠. 연구용으로 쓴 데이터를 공유했을 때 다른 사람들이 거기 있는 정보들을 남용하면 안 되기 때문에 필요없는 정보들을 싹둑싹둑 잘라서 내놓는데 그러는 바람에 1번 노드, 2번 노드, 3번 노드 이렇게 있고 1번 노드랑 2번 노드가 연결돼 있는 edge 이 정도의 필수 정보만 남겨서 공유되는 데이터가 대부분이에요. 그런데 페이스북 페이지들은 제가 찾아보니까 전반적으로 label이 다 달려 있더라고요. 그래서 이거를 사용하도록 하겠습니다. 여러분은 혹시 label이나 attribute가 풍부하게 달려있는 데이터를 구할 수 있다면 그거를 사용해서 해보시는 것도 좋은 경험이 될 거예요. 일단 저희는 이걸 받도록 하겠습니다. 보시면 이것도 아까랑 똑같아요. Vertex, 노드가 페이지고 서로 좋아요를 눌렀을 때 edge를 연결하는 걸 보여줍니다. 이것도 17년 11월 기준으로 해서 똑같은 것 같아요. 다운로드 받은 걸 압축을 풀어보겠습니다. 압축을 풀고 아까랑 거의 비슷해요. 보시면 여기에 이제 '.nodes' 파일, '.edges' 파일 이렇게 있는데 이것도 메모장으로 다 열 수 있다고 했죠? 먼저 이 친구를 메모장으로 한번 열어보겠습니다. 아까랑 포맷이 똑같죠. 저희가 이 부분을 old_id라고 했었고 여기 있는 친구들을 name 대신에 label 이라고 했었고 이쪽에 있는 거를 그냥 id로 정했었습니다. 변경 사항을 저장하면 이 친구를 CSV로 저장만 하면 되겠죠. 그래서 nodes 파일의 작업이 끝났고 이거를 CSV 파일로 바꿨습니다. edges 파일도 마찬가지죠. edges 파일 메모장으로 똑같이 열면 첫 번째 열이 source, 두 번째 열이 target 이렇게 넣어주고 변경 사항을 저장해줍니다. 그러면 첫 번째 열 source, 두 번째 열 target으로 마찬가지로 CSV 파일이 만들어졌죠. 그래서 확장자를 똑같이 CSV로 맞춰줍니다. 이렇게 간단하게 끝났는데 지금 보시면 데이터 크기가 edge 경우에는 거의 1MB가 다 되어가는데. 이미 1MB 넘었고, 9MB가 되어가는데 텍스트 파일이 9MB다. 이거는 엄청나게 많은 내용이 들어있는 겁니다. 보면 이게 거의 행 하나에 숫자가 달랑 들어가 있는데 이 정도의 크기를 차지한다는 건 정말 대단한 거죠. 1.6MB, 9MB 이렇게 차지를 하고 있는 굉장히 큰 파일을 우리가 import를 하게 됩니다. 이런 친구들을 import를 하다가 약간 잘못되면 Gephi에서 '메모리가 부족하다.' 이런 메시지가 나올 수도 있을 텐데 이 정도는 웬만해서는 괜찮을 거예요. 그래서 Gephi를 열어서 얘네들을 import를 계속 해보도록 하겠습니다. Gephi를 열고, 실행해서 이제 New Project를 누르고 Data Laboratory로 들어갔어요. 먼저 Nodes 데이터를 import 합니다. 여기에서 지금 저희가 하는 import 과정은 저희가 이전 실습에서 했던 거랑 크게 다르지 않아요. 여기서 nodes 데이터를 불러옵니다. Comma로 나눠져 있는 거 확인했고 Nodes인 거 확인했고, UTF-8인 거 확인했고요. 그다음에 old_id는 안 쓸 거니까 안 들고 옵니다. label, id '마침'하면. 얘도 마찬가지로 상호 좋아요인 거니까 Undirected죠. 현재 workspace에 추가. 그리고 혹시 여기에 이슈 같은 게 나올 수도 있어요. 예를 들어서 edges가 중복되는 경우, 이런 게 있을 때는 여기 More options 누르면 여기에서 중복되는 edges를 어떻게 처리할래? 개수를 더할래, 평균을 낼래? 처음으로 나오는 거 할래, 마지막에 있는 거 할래? 미니멈, 맥시멈 이런 여러 가지 종류들이 있는데 보통은 Sum을 씁니다. 그래서 서로 똑같은 edges의 weight 값을 더해서 이제 좀 굵은 edge를 만드는 식으로 보통 처리하고요. 옆에 있는 것들은 뭐냐 하면 이 부분이 많이 쓰여요. Create missing nodes 같은 경우는 뭐냐 하면 edges를 추가할 때 만약에 edges 데이터를 보면 저희가 source에 들어가는 게 nodes id고 edge에 들어가는 게 nodes id잖아요. 그런데 nodes id에 해당하는 nodes가 없으면 자동으로 만듭니다. 이런 옵션들이 있으니까 보고 사용하시면 되겠어요. 여기에서는 따로 볼 게 없어서 사용하지 않겠습니다. OK를 해주면 nodes가 추가되는 걸 볼 수 있고요. 좀 재미있는 부분들이 있을 것 같아요. Label로 정렬을 한번 해보면. 여기는 잘 모르겠고 한글이 나옵니다, '백퍼센트'. 조금 내려가면 한글을 볼 수 있겠죠. 이게 지금 label로 정렬되어 있으니까 쭉 내리다보면 깨져있고, 중국어 나오고. 나옵니다. 낯익은 이름들이 많이 나오네요. 가인님부터 시작해서 드렁큰 타이거, 레드벨벳, 보아도 있고 박재범도 있고 양동근, 에프엑스, 굉장히 많습니다. 이분들이 이 네트워크에서 충분한 영향력을 가지고 있지 않으면 안 나올 거예요. 일단 우리나라 아티스트들도 포함되어 있구나. '만나면 반갑겠다' 이 정도 확인하고 edge를 마저 추가하겠습니다. Edges, import spreadsheet 똑같이 눌러서 edges.csv 데이터를 가지고 옵니다. Comma로 나눠진 거 똑같고 edges table에 들어가고, UTF-8인거 확인했고요. '마침' 눌러서 들고 옵니다. directed가 아니라 undirected이고 현재 workspace에 그대로 추가합니다. 다행히 이슈 없이 잘 import가 되네요. import 하는데 시간이 좀 걸립니다. 살짝 걸렸어요. 보면 지금 정상적으로 들어온 거를 확인했고요. 이제 Overview로 한번 가봅시다. 까만색 사각형이 있죠. 까만색 사각형이 아니라 다 지금 nodes들이 서로 겹쳐서 하이라이트를 하는 데 엄청난 시간이 걸립니다. 지금 반응 속도가 저희가 앞서 했던 실습과는 차원이 다르다는 거를 알 수 있죠. 여기 보시면 지금 nodes가 5만 개이고 edges가 거의 82만 개 가까이 됩니다. 그만큼 엄청나게 큰 데이터를 가지고 우리가 앞으로 다루게 될 것이라는 거 일단 확인하고 계속 진행하도록 하겠습니다.
