[ 빅데이터, Tableau ]
행정동 군집분석을 Tableau로 어떻게 했을까?
③ 상관분석
상관분석을 통해 변수들 사이의 관계를 파악하면서 본 것처럼, 변수들은 서로 상관관계가 높기도 하고 낮기도 합니다.
예를 들어, 군집분석에서 사용할 소득과 인구 비율 데이터를 보겠습니다.
평균 가구원수와 가구소득과의 상관관계를 보면, 0.78의 높은 상관관계를 보입니다.
아래 산점도에서도 확인할 수 있듯이, 평균 가구원수가 증가함에 따라 소득도 함께 증가하는 우상향 경향을 보입니다.
<그림1> 행정동 군집분석 태블로 리포트에서의 상관분석 페이지 (made by Tableau) * 그림을 클릭하면 Tableau Public으로 연결됩니다.
그러니까, 평균가구원수가 높으면 가구소득이 높다고 추정할 수 있는 거죠.
그렇다면, 두 변수 중에 하나만 사용해도 되는 것은 아닐까요? 아니면, 보다 정확한 분석과 예측을 위해서는 모든 변수를 다 사용해야 하는 걸까요?
- 다중공선성
이 질문에 대한 답은 바로 다중공선성입니다.
다중공선성이란, 분석에 사용된 일부 변수가 다른 변수들과 높은 상관관계를 가질 때 발생하는 현상으로, 분석에 부정적인 영향을 미칠 수 있습니다.
다중공선성이 있는 경우, 각 독립 변수의 개별적인 영향을 분리하여 해석하기 어려워질 뿐만 아니라 분석 모델이 과적합될 가능성도 높아집니다.
이번 분석에서는 Tableau의 군집분석 기능을 활용했지만, 다중공선성 검증은 Tableau에서 별도로 제공하는 기능이 없어서 Python을 사용해 보완했습니다.
군집분석에는 평균 가구소득과 인구 비율 데이터를 포함한 총 13개의 컬럼을 사용했고, 다중공선성을 판단하기 위해서 분산 팽창 요인 지수(VIF, Variance Inflation Factor)를 사용했습니다.
VIF는 R-제곱 값을 이용해서 계산하는데, 그 값을 구하는 함수는 아래와 같습니다.
이때, 값이 높을수록 다중공선성이 강하다고 판단합니다. 이번 분석에서는 VIF 지수가 10을 큰 폭으로 넘는 컬럼들을 다중공선성이 강하다고 판단했습니다.
평균 가구원수 컬럼이 가장 높은 다중공선성을 보였는데, 이것은 상관분석 페이지에서 확인한 바와 같습니다. 즉, 평균 가구원수를 분석에서 제외해도, 평균 가구소득과 중고등 인구비율 컬럼을 사용하면 충분히 설명할 수 있다는 의미입니다.
결론적으로, 다중공선성 검증을 통해 남게 된 5개의 주요 컬럼, 평균 가구소득, 0세 인구비율, 중고등 인구비율, 20대 인구비율, 65세이상 인구비율, 이 5개의 컬럼만을 사용하여 군집분석을 진행했습니다.
- 군집분석
그럼 이제 본론으로 들어가겠습니다
군집분석은 소속 그룹에 대한 정보가 없는 다변량 자료를 토대로 가까운 개체를 묶어 자연스러운 군집을 만들어가는 과정입니다.
다시 말해, 각 데이터 간의 유사성을 측정하여 여러 개의 군집으로 나누는 방법입니다. 군집 내에서는 동질성이 높고, 군집과 군집 사이에는 이질성이 높은 데이터들을 구분할 수 있습니다.
Tableau에서 제공하는 군집분석 방법은 가장 널리 알려진 K-평균 군집분석(K-means)을 사용합니다.
군집분석은 비지도 학습에 속하기 때문에, 사용자가 군집 수 K값을 지정해줘야 합니다. 이 리포트에서는 13개의 군집으로 설정했습니다.
여기서 중요한 부분은 군집 수를 13개로 정한 것에 대한 타당성을 평가하는 것입니다. Tableau에서는 군집 수를 추천해주는 기능이 있긴 하지만, 저희가 정한 군집 수가 유의미한 지 아닌지를 직접적으로 알려주지는 않습니다.
그래서 보완책으로, Python을 이용해서 타당성을 평가했고, 이때 실루엣 계수를 사용했습니다.
- 실루엣 계수
실루엣 계수는 각 데이터 포인트가 잘 클러스터링 되었는지, 즉 각 군집의 품질을 정량적으로 평가할 수 있는 지표입니다. 실루엣 계수를 구하는 함수는 아래와 같습니다.
실루엣 계수는 개별 데이터가 할당된 군집 내 데이터와 얼마나 밀접하게 군집화 되어 있는지(a(i))와, 다른 군집에 있는 데이터와는 얼마나 멀리 떨어져 있는지(b(i))를 측정합니다. 이 값이 1에 가까울수록 군집화가 잘 이루어졌다고 평가할 수 있습니다.
이 방법을 이용해서 저희가 선택한 13개의 군집이 실제로 타당한지 확인해 봤습니다. 그리고, 13개의 군집에서 실루엣 계수가 0.84로 가장 1에 가깝다는 결과를 얻었습니다.
아래 그림은 이 결과값을 그래프를 이용해 보여주고 있습니다.
<그림2> 실루엣 계수 그래프
위의 그래프에서, X축은 실루엣 계수, Y축은 행정동 개수를 나타냅니다. 그리고 각기 다른 색의 막대그래프는 각각의 군집입니다. 군집을 총 13개로 설정했을 때의 실루엣계수를 구하는 것이어서 막대그래프도 13개입니다.
그래프에서 보는 것처럼, 3500여개 대부분의 데이터가 0.84를 넘는다는 것을 알 수 있습니다. 다시 말해, 이 수치로 대부분의 데이터를 설명할 수 있고, 따라서, 군집 수를 13개로 설정한 것이 타당하다고 판단할 수 있었습니다.
- 행정동 군집분석 Tableau Report 보기
앞에서 서술한 것처럼, 다중공선성 검증을 통해서 평균가구소득, 0세 인구비율, 중고등 인구비율, 20대 인구비율, 65세이상 인구비율, 총 5개의 지표를 활용해서 전국의 약 3천여개의 행정동을 13개의 군집으로 분류했습니다.
그리고, 소득이 높은 순서대로 클러스터 번호를 부여했습니다.
<그림3> 행정동 군집분석 결과 (made by Tableau) * 그림을 클릭하면 Tableau Public으로 연결됩니다.
분석한 결과는 지도를 이용해서 시각화 했고, 각 클러스터에는 각각의 색을 부여해서 쉽게 구분할 수 있도록 했습니다. 같은 색 내에서 세부적으로 구분되는 부분은 인구비율에 따라 나뉘도록 했습니다.
지도는 지역 차원에서 볼 수도 있고, 전국 차원에서 볼 수도 있습니다. 각 지역의 군집분포가 어떻게 되는지, 또 전국의 군집분포가 어떻게 되는지 바로 확인할 수 있습니다.
위의 그림에서, 왼쪽의 지도는 서울 지역의 행정동 군집 분포를 보여주고 있습니다. 지도의 오른쪽에는 각 클러스터의 대표적인 수치를 프로파일링 할 수 있게 했습니다.
이 차트에서 클러스트를 선택하면, 지도에는 해당 클러스트만 나타납니다. 또한, 아래쪽에서는 방사선 차트와 산점도를 통해서, 클러스터들이 가진 특성을 한 눈에 확인할 수 있도록 했습니다.
그리고, 각 클러스트에 해당하는 행정동들의 세부 정보도 볼 수 있습니다. 오른쪽 위쪽의 “행정동 목록 보기”를 클릭하면, 구체적인 데이터를 확인할 수 있습니다.
(다음 글에서 계속 이어집니다.)
본 포스트에서 다루는 <행정동군집분석 Report>는 Tableau Public에 게시되어 있습니다.
https://public.tableau.com/app/profile/heejo.shin/viz/_17300903403820/01_