데이터 과학

군집 분석으로 GDP와 행복 점수

같은 데이터, 다른 질문입니다.
이번에는 어떤 나라들이 서로 비슷한지를 봅니다.

학습 목표

  1. 같은 데이터에 회귀와 군집을 각각 적용해 답의 종류가 어떻게 다른지 말할 수 있다.
  2. 두 속성으로 나라를 군집화하고 실루엣 계수로 결과를 평가할 수 있다.
  3. k-평균이 뭉침이 없는 데이터에서도 답을 내놓는다는 것을 확인하고 해석할 수 있다.
  4. 나라를 묶어 이름을 붙이는 일에 어떤 책임이 따르는지 설명할 수 있다.

같은 데이터에 다른 질문을 던지면

답의 종류 자체가 달라집니다.

회귀 분석은 여섯 속성으로 행복 점수를 맞히는 식을 만듭니다. 이번에는 같은 파일을 열어 놓고 전혀 다른 것을 묻습니다. 「비슷한 처지에 놓인 나라들은 어디인가?」

회귀 분석의 답

「사회적 지지가 행복 점수와 강하게 얽혀 있다」

속성에 대한 답입니다. 어떤 값이 다른 값을 얼마나 설명하는지를 말해 줍니다. 특정 나라 이야기는 하지 않습니다.

군집 분석의 답

「이 나라들이 서로 비슷한 자리에 있다」

나라에 대한 답입니다. 명단이 나옵니다. 무엇이 무엇을 설명하는지는 말해 주지 않습니다.

목표

1인당 GDP와 행복 점수 두 가지만 가지고 나라를 묶어 봅니다. 소득도 낮고 행복 점수도 낮은 무리가 드러난다면 어떤 나라들에 먼저 눈을 돌려야 할지 가늠하는 데 쓸 수 있습니다.

실습 순서 1~3 — 두 속성만 남깁니다

나라 이름은 버리지 않고 꼬리표로 답니다.

회귀 분석과 같은 파일을 File 위젯으로 엽니다. 다만 역할 설정이 완전히 달라집니다.

속성 역할 왜 그렇게 두나
Country name
(나라 이름)
meta 거리를 측정할 수 없는 글자다. 그래도 어느 나라가 묶였는지 봐야 하므로 버리지 않는다
Logged GDP per capita
(1인당 GDP)
feature 군집을 만들 때 거리 계산에 쓰이는 두 축
Ladder score
(행복 점수)
나머지 전부 skip 이번 질문에 쓰지 않는다

target 칸이 비어 있는 것을 확인하세요

회귀 분석에서는 Ladder score가 맞혀야 할 값입니다. 군집 분석에서는 거리를 측정하는 축 가운데 하나가 됩니다. 같은 속성이 질문에 따라 역할을 바꾼 것입니다. 군집 분석에는 맞힐 값이 없으니 target은 비워 둡니다.

Data Table을 이어 확인해 보세요. 137줄, 속성 2개, 결측치 없음이면 제대로 된 것입니다. 두 속성만 쓰기로 한 덕분에 산점도로 결과를 그대로 볼 수 있습니다.

실습 순서 4 — 셋으로 묶습니다

속성의 단위가 다르면 Normalize columns 상자를 체크해 눈금을 맞추는 습관을 들입니다.

File

두 속성만 남긴다

k-Means

셋으로 묶는다

Scatter Plot

색으로 확인한다

설정 값 무엇을 정하는가
Fixed 3 군집을 셋으로 못 박는다
Normalize columns 체크 평균을 빼고 표준 편차로 나누는 표준화 방식으로 두 속성의 눈금을 맞춘다

여기서 눈금 맞추기를 빠뜨리면 결과가 달라질 수 있습니다

두 속성은 단위가 다릅니다. 행복 점수는 0에서 10 사이의 점수이고, 1인당 GDP는 소득에 자연로그를 씌운 값입니다. 단위가 다른 속성은 값의 폭도 달라지기 쉬운데, 눈금을 맞추지 않으면 값의 폭이 넓은 속성이 거리를 더 크게 좌우해 한쪽 속성에 끌려간 결과가 나올 수 있습니다. Normalize columns를 켠 것과 끈 것을 각각 실행해 비교해 보세요.

산점도로 확인하기

k-Means에 Scatter Plot을 이어 가로축에 Logged GDP per capita, 세로축에 Ladder score, Color는 Cluster로 둡니다.

소득도 행복 점수도 낮은 쪽 가운데 소득도 행복 점수도 높은 쪽 가로 — 1인당 GDP · 세로 — 행복 점수

소득이 높은 나라가 대체로 행복 점수도 높습니다. 두 값의 상관계수가 0.78 안팎인 것이 그림으로 확인됩니다. 군집은 이 비스듬한 띠를 왼쪽 아래부터 세 토막으로 나눕니다.

실습 순서 5 — 잘 묶였는지 측정하고 명단을 봅니다

실루엣으로 측정하고, 어느 나라가 어디에 들어갔는지 확인합니다.

k-Means에 Silhouette Plot을 잇고 Distance는 유클리드 거리, Grouping은 Cluster로 둡니다. 그다음 Select Rows와 Data Table을 차례로 이어 보고 싶은 군집만 뽑습니다.

Silhouette Plot과 Select Rows 사이의 연결선을 두 번 눌러 Data에서 Data로 고쳐 주세요. 그대로 두면 드래그로 선택한 것만 넘어가 빈 표가 나옵니다. 그다음 조건을 Cluster is C1처럼 주면 그 군집의 나라 명단이 뜹니다.

군집마다 적어 봅시다

군집 나라 수 1인당 GDP와 행복 점수는 어느 쪽인가 눈에 띄는 나라
C1
C2
C3
다 적고 나서 열어 보세요

세 군집의 크기는 대략 서른에서 쉰 나라씩으로 나뉩니다. 소득도 행복 점수도 낮은 군집에는 사하라 이남 아프리카와 남아시아의 나라들이 많이 모입니다. 둘 다 높은 군집에는 서유럽과 북유럽, 북아메리카의 나라들이 들어가고, 우리나라는 가운데나 높은 쪽 군집의 경계 부근에 놓이는 경우가 많습니다. 군집 번호에는 정해진 뜻이 없습니다. 오렌지는 같은 설정이면 같은 번호를 붙이지만, 속성이나 k를 바꾸면 같은 무리에 다른 번호가 붙을 수 있습니다.

스스로 확인

실루엣 그림에서 값이 낮은 나라를 몇 개 골라 산점도에서 어디 있는지 보세요. 군집과 군집이 맞닿는 자리에 있지 않나요? 왜 그런 나라가 이렇게 많을까요?

이것을 「군집」이라 불러도 될까

결과가 나왔다고 덩어리가 있었다는 뜻은 아닙니다.

산점도를 다시 보세요. 떨어져 있는 덩어리가 보이나요? 덩어리가 훤히 보이는 데이터도 있고, 점이 고르게 흩어진 데이터도 있습니다. 이 데이터는 또 다른 모양입니다. 왼쪽 아래에서 오른쪽 위로 이어진 하나의 긴 띠입니다.

k-평균이 한 일은 토막 내기에 가깝습니다

이어진 띠에 k = 3을 주면 k-평균은 그 띠를 세 도막으로 자릅니다. 원래 세 무리가 있어서 찾아낸 것이 아니라, 셋으로 나누라고 했으니 셋으로 나눈 것입니다. k를 4로 주면 네 도막이 나옵니다. k-평균은 점을 고르게 흩어 놓아도 k개의 군집을 만들어 냅니다. 그 일이 실제 데이터에서 벌어진 것입니다.

그렇다고 쓸모가 없다는 뜻은 아닙니다. 「소득이 낮은 쪽 삼분의 일」을 미리 정한 눈금 없이 데이터를 보고 나눠 준 것은 그 자체로 값어치가 있습니다. 다만 「세 종류의 나라가 존재한다」고 말하면 안 됩니다. 「우리가 셋으로 나누었다」가 정확한 표현입니다.

실루엣 값으로도 확인할 수 있습니다. 덩어리가 뚜렷했다면 대부분의 나라가 높은 값을 받았을 것입니다. 이 데이터에서는 경계 부근에 낮은 값이 많이 몰려 있을 것입니다. 이어진 띠를 토막 냈으니 경계에 걸친 나라가 많을 수밖에 없습니다.

나라에 이름을 붙이는 일

이 결과를 두고 「지원이 필요한 나라 명단」이라고 부르기는 쉽습니다. 그러나 우리가 쓴 것은 속성 두 개뿐입니다. 그 두 값이 낮다는 사실만으로 한 나라의 사정을 다 안다고 할 수는 없습니다. 어떤 나라는 전쟁 중이고, 어떤 나라는 이미 크게 나아지는 중이며, 어떤 나라는 도움을 원하지 않을 수도 있습니다.

묶은 결과를 보고 어떤 나라를 다르게 대하기 시작하면, 그때부터는 숫자가 아니라 그 나라 사람들의 삶이 걸린 문제가 됩니다. 군집은 「여기부터 살펴보라」고 알려 주는 데까지이고, 무엇을 할지 정하는 것은 사람입니다.

다른 속성으로 묶어 보기

축을 바꾸면 다른 나라가 한 무리가 됩니다.

File에서 역할만 바꾸면 나머지 배선은 그대로 두고 결과가 갱신됩니다. 행복 점수는 세로축에 그대로 두고 가로축만 갈아 끼워 보세요.

세 가지 조합을 시험하고 적어 봅시다

행복 점수와 짝지은 속성 실루엣 평균 낮은 쪽 군집에는 어떤 나라들이 모이나
1인당 GDP
사회적 지지
건강 기대 수명

건강 기대 수명에는 값이 빈 나라가 하나 있습니다. File 위젯의 정보란에서 결측치가 보이면 Preprocess 위젯을 끼워 빠진 값이 있는 줄을 지운 뒤 군집화하세요.

더 해 보기

  1. From X to Y로 2에서 8까지 범위를 주고 오렌지가 고른 k가 몇인지 보세요. 정말 3이 가장 나은가요?
  2. 같은 두 속성으로 k를 2, 4, 5로 바꿔 보세요. 띠가 그만큼의 도막으로 나뉘나요?
  3. 여섯 속성을 모두 넣어 군집화해 보세요. 산점도로는 볼 수 없지만 명단은 달라집니다. 어느 쪽 결과가 더 그럴듯한가요?

핵심 정리

답의 종류가 다르다

two kinds of answer

  • 회귀는 속성에 대한 답, 군집은 나라 명단
  • 회귀는 새 값을 넣어 예측할 수 있다
  • 군집은 지금 있는 것을 나눠 준다
  • 어느 속성이 행복 점수와 더 크게 얽혀 있는지는 군집으로 알 수 없다

역할이 바뀐다

roles change

  • 행복 점수의 오렌지 역할이 target에서 feature로 옮겨 갔다(feature 역할은 거리를 측정하는 축으로 쓰인다)
  • 나라 이름은 meta로 두어 꼬리표로 쓴다
  • 속성의 단위(눈금)가 다른 데이터에서는 눈금을 맞추는 습관(Normalize columns)을 들인다

띠를 토막 낸 결과

slicing, not finding

  • 점들이 비스듬한 띠 하나로 이어져 있다
  • k를 3으로 주었기 때문에 세 도막이 나왔다
  • 「세 종류가 있다」가 아니라 「셋으로 나누었다」

해석의 책임

what a label costs

  • 속성 두 개로 한 나라를 단정할 수 없다
  • 군집은 「여기부터 살펴보라」까지만 말한다
  • 군집 번호에는 뜻이 없고 속성이나 k를 바꾸면 달라질 수 있다

확인 퀴즈

배운 내용을 확인해 봅시다.

Q1

회귀 분석에서 맞혀야 할 값이었던 행복 점수가 이번에는 어떤 자리에 놓였나?

Q2

나라 이름을 meta로 두는 까닭은?

Q3

산점도의 점들이 비스듬한 띠 하나로 이어져 있었습니다. 결과를 어떻게 읽어야 하나?

Q4

속성끼리 값의 폭이 크게 다른 데이터에서 눈금을 맞추지 않으면 어떤 일이 벌어질 수 있나?

Q5

낮은 쪽 군집을 두고 결과를 서술할 때 알맞은 태도는?