꽤 괜찮은 데이터 지도를 그려주는 Natural Breaks
이번 글은 데이터지도 표현방법 중 하나인 단계구분도, 그리고 색상을 정렬하는 Natural breaks에 대해 써볼까 합니다. 단계구분도(Choropleth map)는 대부분의 사람들에게 익숙한 지도 표현방법 중 하나입니다. 다음과 같은 지도를 '단계구분도'라고 부릅니다.
위의 지도는 단계구분도를 설명할 때 많이 인용하는 지도 중 하나입니다. 2011년 런던에서 폭동이 많이 발생하였던 시점에, 가디언지에서 구글맵을 기반으로 블록별 실업률과 폭동 발생 위치를 함께 보여주는 지도를 제작하였습니다(제목: Mapping the riot with poverty).
지도에서 붉은색이 강할수록 실업률이 높은 지역이고, 반대로 푸른색이 짙을수록 실업률이 낮은 지역을 뜻합니다. 그리고 블록지도 위에 놓인 구글 마커는 폭동이 발생한 위치를 보여주고 있습니다. 지도 위의 분포만을 확인하더라도 실업률이 낮은 지역에서 폭동이 발생했던 경우는 찾아보기 힘듭니다.
이번 글에서 설명하고자 하는 부분은, 위의 지도처럼 속성 값이 높은 지역과 낮은 지역을 시각적으로 명확하게 구분하여 전달할 수 있는 방법에 관한 것입니다. 공간을 런던이 아닌 서울로 옮겨서, 통계청에서 발표한 2012년 말 기준 집계구별 사업체종사자(직장인구)를 기준으로 맵핑해보겠습니다.
<서울시 집계구 지도, 강남구를 확대한 집계구>
통계청 집계구 데이터를 통해, 서울시에 종사하는 약 437만 명의 직장인을 총 16,230개의 세세한 블록(집계구)으로 나뉘어 수치화된 정보를 알 수 있습니다. 위의 왼쪽 지도는 서울시 전체 집계구 경계를 올려본 결과이고, 오른쪽 지도는 강남구에 줌인하여 살펴본 것입니다. 우리가 일반적으로 알고 있는 행정동 경계보다 훨씬 잘게 쪼개어져 있는 것을 알 수 있습니다. 그러면 이제 집계구 안에 담긴 사업체종사자 수를 표현해보겠습니다.
서울시 집계구별 사업체종사자입니다. 우리가 익히 알고 있듯, 중구의 중심업무지구, 강남구의 테헤란로, 금천구의 가산디지털단지, 영등포구 여의도가 두드러집니다. 이외에는 강서구의 가장 서측 지역이 눈에 띄는데, 바로 김포공항이 위치한 곳입니다. 2012년 말 기준으로 25,457명이 근무하고 있는 것으로 나타납니다.
위의 지도를 그리는데 적용한 방법은 Natural Breaks(Jenks)입니다. 지도표현에서 등급(class)을 구분하는 여러가지 방법 중 하나입니다. 비교할 수 있는 다른 대표적인 방법으로는 등간격(Equal Interval)과 등분위(Quantile)가 있습니다.
등간격(Equal Interval)은 동일한 간격으로 등급을 구분하는 방법입니다. 성적평가로 예를 든다면, 90점 이상은 A학점, 80점 이상 B학점, 70점 이상은 C학점으로 구분하는 것입니다. ESRI Support의 GIS Dictionary에 따르면 다음과 같이 정의되어 있습니다.
equal-interval classification
[cartography] A data classification method that divides a set of attribute values into groups that contain an equal range of values.
등분위(Quantile)는 동일한 비율로 등급을 구분하는 방법입니다. 마찬가지로 성적평가에 대입해본다면, 50명의 학생 중 10등(상위 20%)까지 A학점, 11~20등(상위 40%)까지 B학점, 21~30등(상위 60%)까지 C학점으로 평가하는 것입니다. 동일한 비율 구간 단위로 묶는 방법이며, 동시에 동일한 개수 단위로 묶는 방법이기도 합니다. GIS Dictionary에서는 다음과 같이 설명하고 있습니다.
quantile classification
[data structures] A data classification method that distributes a set of values into groups that contain an equal number of values.
이 두 가지 방법으로 서울시 집계구별 사업체 종사자를 맵핑하면 어떻게 될까요? 결과는 다음과 같습니다.
먼저 등간격으로 구분한 사업체종사자 지도입니다. 중구의 일부 지역, 영등포구 여의도, 금천구의 가산디지털단지 등 몇몇 지역을 제외하고는 아무도 일하지 않는 황무지처럼 표현됩니다. 조금 더 자세히 살펴보겠습니다.
서울시에서 가장 종사자가 많은 집계구는 명동입니다. 지도에 표시된 을지로입구역부터 명동역 사이에 위치한 명동 상권 안에는 총 82,606명이 종사하고 있습니다. 오른쪽의 테이블을 살펴보겠습니다. 회색 컬럼에 '269'라고 표시된 블록이 명동 상권이고, 그 아래로는 종사자수 2위부터 13위까지 입니다. 서울시 전체 집계구가 1만 6천 개가 넘는데, 1위부터 13위 사이만 살펴봐도 네 배에 가까운 차이가 납니다.
등간격으로 등급을 구분하여 지도로 표현하게 되면 이와 같은 문제가 나타나기도 합니다. 비정상적으로 분포를 벗어난 아웃라이어(outlier)로 인해 전체적인 패턴을 이해하기 어려운 방식으로 지도가 그려지는 경우가 있습니다.
다음으로 등분위(Quantile) 방법으로 그려진 지도를 확인해보겠습니다.
등분위로 서울시 집계구별 사업체종사자를 맵핑한 결과입니다. 푸른색으로 알록달록한 지도가 그려졌습니다. 지도에서 짙은 푸른색으로 칠해진 지역은 전체 1만 6천 개 집계구 중 종사자 수가 상위 20%에 해당하는 집계구입니다. 등간격으로 구분하여 그린 지도와는 반대로, 서울시 대부분 지역에서 많은 사람들이 북적이며 일하는 것으로 보입니다.
내추럴브레이크 - 등간격 - 등분위 모두 5개 등급으로 구분하여 지도를 그렸는데요, 실제로 값을 어떻게 나누었는지 비교해보겠습니다.
사업체종사자수 1등급 구간을 살펴보면, 내추럴브레이크는 26,530명 이상, 등간격은 66,085명 이상, 등분위는 267명 이상인 것을 확인할 수 있습니다. 지금까지 살펴본 바로는, 집계구별 사업체종사자수를 표현하기에는 내추럴브레이크를 사용하는 것이 지도를 읽는 사람으로 하여금 시각적으로 이해할 수 있도록 돕는데 좋은 방법으로 판단됩니다. 하지만 내추럴브레이크를 이용한 등급 구분은 등간격이나 등분위처럼 간단한 비유로 설명하기가 쉽지 않습니다. 그래서 구글 검색을 통해 몇 가지 이해할 수 있는 정의들을 골라보았습니다.
아래 글상자에는 GIS위키(wiki.gis.com)에 소개된 Jenks Natural Breaks Classification 정의를 담았습니다. (참고로 '내추럴 브레이크'라는 용어는 ArcGIS 프로그램을 통해 만들어진 것이고, 방법론은 Jenks 교수에 의해 만들어진 것입니다. 그래서 Jenks Natural Breaks 또는 Jenks Optimal Algorithm 또는 줄여서 Jenks 라 부르기도 합니다. 실제로 많은 지도제작자들이 데이터를 7등간 이하로 구분할 때에 널리 사용하는 방법입니다.
The Jenks Natural Breaks Classification (or Optimization) system is a data classification method designed to optimize the arrangement of a set of values into "natural" classes. This is done by seeking to minimize the average deviation from the class mean, while maximizing the deviation from the means of the other groups. The method reduces the variance within classes and maximizes the variance between classes. [1][2]
[1] Jenks, George F. 1967. "The Data Model Concept in Statistical Mapping", International Yearbook of Cartography 7: 186-190.
[2] McMaster, Robert, "In Memoriam: George F. Jenks (1916-1996)". Cartography and Geographic Information Science. 24(1) p.56-59.
이 문장을 해석해보자면, Jenks Natural Breaks Classification은 데이터 값의 배열을 자연스러운 등급(natural classes)으로 최적화(optimize)하여 데이터로 묶는(data classification) 방법입니다. 내추럴브레이크를 적용하면, 같은 등급 내 전체 값들의 평균을 기준으로 평균편차(average deviation)는 최소화되고, 각 등급 간의 분산(variance)은 극대화하는 것입니다. 즉, 등급 내의 분산은 줄이고 등급 간의 분산은 최대화하는 방법입니다.
문장 해석만으로는 쉽게 이해되지 않는 부분이 있어, 다음과 같이 가상의 예시를 만들어보았습니다. 임의로 축구팀 A부터 O까지 15개 팀의 승리 횟수를 적어보았습니다.
도표에 기록된 15개 축구팀을 5개 등급으로 묶어보겠습니다. 적용하는 방법은 등분위, 등간격, 내추럴브레이크 세 가지 방법입니다.
먼저 등분위로 등급을 나누어보았습니다. 위의 차트처럼 3개씩 묶이게 됩니다. 등분위로 등급을 구분하게 되면, 승리 횟수를 기준으로 F, I, L 팀은 바로 단 1승 차이로 바로 상위권에 있는 G, J, M과 다른 등급에 묶입니다. 동일한 개수로 구분되는 장점은 있으나, 보기와 같이 막대차트가 아닌 색상만으로 인지한다면 F, I, L 세 팀의 실제 승리 횟수에 대해서는 올바르게 인식하기가 쉽지 않아 보입니다.
등간격으로 등급을 나누어보았습니다. 가장 많은 승리를 거둔 팀이 37승, 적은 팀이 1승으로 총 36승의 차이가 나고, 5등간으로 나누면 7.2가 동일한 간격이 됩니다. 등간격 방식으로는 1등급에 L, M, N, O 4개의 팀이 해당되고, 4등급에는 F팀 하나가 분배됩니다. 그리고 5등급에는 A~E 다섯 개 팀이 해당되게 됩니다. 이 방식에서도 F팀과 G팀은 불과 1점 차이로 서로 다른 등급으로 구분이 됩니다.
마지막으로 내추럴 브레이크를 적용하였을 때 결과입니다. 이 결과는 프로그램을 통해서 등급을 구분한 것이며 직접 수식을 적용하지는 않았습니다. 실제로 이와 같이 등급을 나누는 방법은 조금 까다로운 편인데, 짧게 설명하자면 임의로 등급을 나눈 뒤 반복적으로 평균과 편차를 계산해가면서 최적화된 값을 만족할 때까지 객체의 등급을 하나씩 조정하는 연산을 반복 수행하는 것입니다.
결과를 놓고 보았을 때에 상식적으로 등급이 묶인 것으로 이해할 수 있습니다. 등급 구간별 객체 수는 4개, 3개, 3개, 2개, 3개로 균등하지는 않지만, 만약 우리에게 위의 막대차트를 색상 없이 보여주면서 '축구팀 15개를 성적에 따라 상위권/중상위권/중위권/중하위권/하위권 5개로 구분하시오'라는 문제가 주어진다면 이와 같이 주관적으로 구분할 수 있을 것입니다. GIS위키에도 '최적화란 수치적인 연산을 통해 객관적으로 데이터를 등급화하는 것이지만, 내추럴브레이크는 주관적으로 데이터를 등급화한다(Unlike the optimal method which uses a numerical measurement to separate data classes objectively, the natural breaks method classifies data subjectively. (Slocum, Terry A., and Terry A. Slocum. Thematic Cartography and Geovisualization. Upper Saddle River, NJ: Pearson Prentice Hall, 2009. Print.))'라고 소개하고 있습니다.
주관적인 방법임에도 불구하고 앞서 서울시 사업체종사자 지도에서 확인한 바와 같이, 실제적인 현상을 설명하기에 훌륭한 방법임에는 틀림없습니다. 기존 연구에서도 Jenks 최적화 알고리듬(Jenks optimal algorithm)은 정량화할 수 있는 동질성(quantifiable homogenetity)과 통계적 클러스터 개념(cluster concept in statistics)을 기초로 한 최적화된 등급화(classification) 방법이라고 증명된 바가 있습니다.
그럼에도 불구하고 항상 Natural Breaks가 최선의 방법은 아닙니다. 동일한 영역의 공간에 대해 연속적인 변화를 동일한 기준으로 보여주기 위해서는 주관적인 방식으로 그리는 것은 지도를 읽는 사람으로 하여금 혼란을 줄 수도 있습니다.