엔지니어링

Elastic Graph와 Kibana를 사용하여 파나마 페이퍼스(Panama Papers) 분석

새로운 Elastic Graph 기능을 사용하여 데이터의 연관성을 분석할 수 있습니다. 파나마 페이퍼스에서 얽히고 설킨 역외 금융 거래 내용을 파헤치거나 분주한 전자상거래 웹 사이트의 클릭 동작을 전체적으로 개괄하는 등의 모든 경우에 Graph 기술은 이들의 관계에 초점을 맞출 수 있도록 도와줍니다.

Graph 기능은 Elastic Stack의 상용 플러그인으로 제공되는 X-Pack 번들 중 일부이며 Kibana 앱과 새로운 Elasticsearch API를 포함합니다. 이 첫 번째 Graph 블로그에서는 Kibana 앱과 API의 조합이 어떤 기능을 발휘하는지 간략히 살펴보겠습니다.

포렌식 분석: 파나마 페이퍼스

Mossack Fonseca 해외 법률 사무소 의 금융 및 법적 기록 공개는 2016년에 가장 폭발적인 관심을 받은 뉴스 중 하나입니다. 이 기록들은 많은 수의 정치인, 왕족, 부유층 및 그 가족이 비밀스러운 해외 조세 회피처에서 설립된 컴퍼니 네트워크를 악용하고 있음을 보여줍니다. 이제 언론과 금융기관에서 이 데이터를 집중하고 있지만 연관성을 밝혀내는 것은 시간이 많이 소요되는 작업입니다. 하지만 Kibana Graph 기능을 사용하면 이 프로세스를 간단하게 수행할 수 있습니다.

panama-papers-graph-dashboard-relationships.jpg

위에 보이는 것은 블라디미르 푸틴(Vladimir Putin)의 측근 세르게이 롤두긴(Sergei Roldugin)과 연결된 회사와 사람들입니다. 이 그림은 다음과 같은 몇 가지 간단한 단계를 거쳐 작성되었습니다.

데이터소스 선택

먼저 인덱스 목록에서 “panama”를 선택한 다음 다이어그램에 값을 표시할 필드를 하나 이상 선택합니다. 각 필드에는 다이어그램에 나타날 "꼭지점"의 아이콘과 색상을 부여할 수 있습니다.

panama-papers-selecting-datasource.jpg

검색 실행

이제 일반적인 텍스트 검색을 실행하여 푸틴 측근의 이름 “Roldugin”이 포함된 도큐먼트를 일치시킬 수 있습니다.

panama-papers-running-a-search.jpg

일치하는 도큐먼트에서 발견된 텀들은 네트워크로 표시되며, 각 선은 텀 쌍들을 연결하는 하나 이상의 도큐먼트를 나타냅니다.

이 데이터를 처리 중인 ICIJ 소속 언론인들은 실세계의 엔티티(사람/회사/주소) 각각에 이를 참조하는 각 문서와 연결된 고유한 ID를 부여하려 노력하고 있습니다.

안타깝게도 인명과 주소는 일치시키기가 까다롭습니다. 언론인들은 사람 엔티티 12180773과 연결된 3개의 문서를 올바르게 식별했지만, 유사한 이름을 가진 다른 사람이 2명 더 있고 이들에게는 다른 ID 코드가 부여되었습니다. 마찬가지로 유사해보이는 주소가 2개 있으며 이들에게 서로 다른 ID 코드가 부여되었습니다. 다음번 블로그 게시물에서는 Graph API를 사용한 자동 엔티티 확인에 대해 살펴보겠습니다. 지금은 그룹화 도구를 사용하여 이를 수동으로 고쳐보겠습니다.

꼭지점 그룹화

고급 모드(advanced mode) 도구를 사용하여 선택한 다음 그룹(group) 버튼을 클릭하여 꼭지점을 병합할 수 있습니다. 이렇게 하면 보다 구체적인 파악이 가능해집니다. 이렇게 하면 보다 구체적인 파악이 가능해집니다.

panama-papers-grouping-vertices.jpg

원할 경우, 이미 그룹화된 항목을 추가로 그룹화할 수도 있습니다. 예를 들어 여러 ID를 가진 사람들을 하나의 꼭지점으로 병합한 후 이를 다시 회사 꼭지점으로 병합할 수 있습니다.

"스파이더링(Spidering) 작업"

이제 어떤 다른 항목이 이들 엔티티와 연결되어 있는지 보려면 어떻게 해야 할까요? 도구 모음의 “+” 버튼을 사용해서 데이터의 연관성을 계속 확장하여 다른 관련된 엔티티를 파악할 수 있습니다.

panama-papers-spidering-out.jpg

“+”를 반복해서 눌러 그림을 추가로 확장하고 선택 기능을 사용해서 그래프의 특정 부분만 확장할 수 있습니다. 실행 취소 버튼과 재실행 버튼은 관심 대상이 아닌 결과를 없애는 데 중요한 역할을 합니다. 또한 삭제 버튼과 블랙리스트 버튼을 통해 현재 표시되거나 반환할 수 있는 꼭지점을 제어할 수 있습니다. 선택한 꼭지점 뒤에 있는 예제 도큐먼트의 스니펫도 표시할 수 있습니다.

파나마 페이퍼스 데이터를 직접 탐색해보려면 Elasticsearch, KibanaGraph 플러그인을 내려받아 설치한 후 bit.ly/espanama에서 인덱스 설정을 따르십시오.

대중의 지혜(Wisdom of crowds)

파나마 페이퍼스는 각 단일 도큐먼트가 매우 중요한 연관성을 나타낼 수 있는 "포렌식" 유형 세부 조사의 예입니다.

하지만 Elastic Graph 기술이 진짜로 빛을 발하는 부분은 클릭 로그 데이터 등 다수 사용자의 동작을 요약해내는 능력입니다. 이러한 형태의 분석을 대개 "집단 지성" 또는 "대중의 지혜"를 마이닝한다고 합니다. 이러한 경우에는 각 도큐먼트 자체는 특별한 관심 대상이 아니지만 다수의 사용자 동작에서 나타나는 패턴은 관심 대상입니다. 즉, 이러한 패턴을 바탕으로 권장 사항을 도출할 수 있습니다. 예: “X 제품을 구입한 사람은 Y 제품도 구입하는 경향이 있다." 이 경우에는 실제 연관성의 의미가 없는 일회성 도큐먼트를 피해야 하며 "X 제품을 구입한 사람은 우유도 구입한다"와 같은 과도하게 일반적인 연관도 피해야 합니다(대부분의 사람이 우유를 구입합니다). 이를 염두에 두고 그래프 탐색을 제어하는 기본 설정을 가장 중요한 연관성만 식별하도록 조정합니다.

그럼 LastFM 데이터세트를 사용하여 사용자 추천 정보의 예를 살펴보겠습니다. 사용자 중심 인덱스를 구성하면 좋아하는 작곡가들을 포함하는 도큐먼트가 청취자당 하나씩 생성됩니다. 이 인덱스를 조회해서 "쇼팽"을 좋아하는 사람이 또 다른 누구를 좋아하는지 알아보겠습니다.

lastFM-wisdom-of-crowds.jpg

결과로 나온 클래식 음악가들은 명확하게 서로 강한 연관성을 갖고 있습니다. 두 꼭지점 사이의 선을 클릭하면 얼마나 많은 청취자가 이러한 관심 대상을 공유하는지 나타납니다. 전체 멘델스존 청취자의 거의 절반 가까이가 쇼팽도 좋아합니다.

Graph API는중요한 연관성만을 식별합니다. 이는 다른 그래프 탐색 기술과 구분되는 중요한 장점입니다.

빈번함 != 중요함

설정 탭을 열고 중요 연관성만을 찾는 기능을 일부러 해제하면 어떤 일이 일어나는지 보겠습니다.

graph-popular-equals-significant.jpg

"중요 링크(significant links)" 확인란을 선택 취소한 채로 쇼팽 청취자에 대한 쿼리를 다시 실행해보겠습니다. 결과가 아주 다릅니다.

lastFM-wisdom-of-crowds-new.jpg

라디오헤드와 콜드플레이와 같은 (세계적으로) 인기가 높은 아티스트들도 결과에 나타나기 시작했습니다. 5,721명의 쇼팽 팬 중에서 1,843명이 비틀즈를 좋아합니다. 비틀즈도 물론 인기가 높은 선택 대상이지만 우유를 구입하는 사람들처럼 "일반적인 공통분모(Commonly common)"입니다. "중요 링크"에 대한 스위치를 설정하면 노이즈가 제외되고 “일반적이지 않은 공통분모(uncommonly common)”인 신호에 집중하게 됩니다. 정보 이론에 대한 배경 지식이 있는 분들을 위해, 수년 동안 검색 엔진을 구동해온 TF-IDF 알고리즘은 바로 이러한 기준을 바탕으로 한 것입니다.

데이터 연관성을 탐색할 때 이러한 관련성 순위 기술을 재사용함으로써 "주제"에 집중할 수 있습니다. 이는 관련성 순위 개념이 없고 대개 인기가 높은 항목을 삭제하는 전략을 채용해야 하는 그래프 데이터베이스와 구분되는 중요한 점입니다("슈퍼모드"의 문제 참조).

참고: 파나마 페이퍼스 탐색과 같이 세부적인 포렌식 작업을 수행할 때는 "중요 링크(significant links)"를 설정하여 인기가 최고로 높은 회사들을 피하는 한편 "확실성(certainty)" 설정을 기본값 3에서 1로 낮추는 것이 도움이 됩니다. "대중의 지혜" 상황에서는 링크를 확인하고 신뢰하기까지 최소 3개의 도큐먼트가 필요한 반면, 포렌식에서는 각 문서가 모두 잠재적인 관심 대상입니다.

요약

이 블로그를 통해 Graph의 다음 두 가지 사용 모드를 간단하게 맛볼 수 있는 기회가 되셨기를 바랍니다.

  1. 포렌식: 각 도큐먼트가 잠재적인 관심 대상입니다. 개별 기록과 주체(actor)를 "확대" 검색하지만 뒤집어보지 않는 돌이 없습니다.
  2. 대중의 지혜: 축소하여 대중의 동작에 대한 "큰 그림"을 파악합니다. 노이즈가 있는 연관성이 너무 많기 때문에 가장 중요한 데이터 연관성만을 요약하는 데 집중합니다.

다음번 블로그 게시물에서는 특정 사용사례를 깊게 살펴보고 Kibana 앱의 뒤에서 작동하는 Elasticsearch API에 대해 알아보겠습니다.

Graph 팬 여러분, 채널 고정하세요...