단원 홈

Ⅲ. 데이터 모델링과 평가6차시

이 역과 가장 닮은
역은 어디인가

'닮음'은 누가 정하나

서울 지하철 239개 역의 하루를 숫자 40칸으로 받았습니다. 기준 역과 가장 닮은 역을 찾아 달라는 의뢰가 들어왔어요. 거리를 재면 답이 하나로 나올 것 같지만, 같은 유클리드 거리를 세 가지 표에 대고 재면 세 가지 답이 나옵니다. 도구가 정해 주지 않는 것은 무엇인지, 그 자리에서 누가 결정하는지를 봅니다.

  • [12데과03-03]
  • 50분네 정거장
  • 새 도구pairwise_distances
  • 자료서울 지하철 239역 × 40칸
Ⅲ 단원 지도6 / 14차시
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14

학습 목표

  1. 개념에서

    같은 유클리드 거리라도 어느 표에 대고 재느냐가 '무엇이 닮았나'를 정한다는 것을 예로 들어 말할 수 있다.

  2. 손으로

    표를 셋으로 바꿔(인원 · 표준화 · 구성비) 가장 닮은 역을 찾고, pairwise_distances 로 손으로 잰 거리와 같은지 확인할 수 있다.

  3. 확인에서

    의뢰의 목적을 먼저 적고, 그 목적에 맞는 자를 골라 까닭을 한 줄로 쓸 수 있다.

1
여는 장면 · 5분

「이 역과 가장 닮은 역을 찾아 주세요」

기준 역은 신림입니다. 평일 하루에 승차 60,180명, 하차 58,728명. 아침 08시에 11,784명이 타고, 저녁 18시에 9,193명이 내립니다(그림 1 왼쪽). 타는 봉우리가 아침에, 내리는 봉우리가 저녁에 있는 이 모양은 사람들이 이 동네에서 나갔다가 돌아온다는 뜻입니다.

이 역과 닮은 역을 찾아 달라는 의뢰가 들어왔습니다. 후보가 둘 올라왔어요. 이름은 잠깐 가려 둡니다.

후보 가는 하루에 타는 사람이 신림의 절반도 안 되지만(0.46배), 하루 곡선의 모양은 거의 포개집니다. 후보 나는 타는 사람 수가 신림과 비슷한데(1.07배), 아침에 내리는 사람이 유난히 많습니다.

오늘의 자리거리를 재기 전에 먼저 정해야 하는 것이 있습니다 — 무엇을 닮음으로 볼 것인가.

의뢰서 · 가상

신림역과 가장 닮은 역 한 곳을 찾아 주십시오. 자료는 239개 역의 평일 하루 승하차 40칸입니다.

목적은 적혀 있지 않습니다 · 이 의뢰서는 수업을 위해 지어낸 것입니다
그림 1신림의 하루와 두 후보왼쪽은 인원 그대로, 오른쪽은 하루 중 몫(%)
① 인원 그대로 — 신림의 하루(명) 진한 선 승차 · 주황 파선 하차 0 3,000 6,000 9,000 12,000 05 08 11 14 17 20 23 시각(시) 승차 08시 11,784명 하차 18시 9,193명 승차 60,180명 · 하차 58,728명 — 아침에 타고 저녁에 내린다 ③ 구성비 — 하루 중 몫(%) 40칸 = 승차 20칸 + 하차 20칸 0% 5% 10% 15% 20% 승05 승15 하05 하15 하24 신림(기준) 후보 가 후보 나 후보 나 · 아침 하차 후보 가는 신림에 거의 포개지고, 후보 나는 아침 하차에서 어긋난다 ① 인원 그대로 — 신림의 하루(명) 진한 선 승차 · 주황 파선 하차 0 3,000 6,000 9,000 12,000 05 08 11 14 17 20 23 시각(시) 승차 08시 11,784명 하차 18시 9,193명 승차 60,180명 · 하차 58,728명 — 아침에 타고 저녁에 내린다 ③ 구성비 — 하루 중 몫(%) 40칸 = 승차 20칸 + 하차 20칸 0% 5% 10% 15% 20% 승05 승15 하05 하15 하24 신림(기준) 후보 가 후보 나 후보 나 · 아침 하차 후보 가는 신림에 거의 포개지고, 후보 나는 아침 하차에서 어긋난다

왼쪽 판은 인원 그대로라서 크기가 먼저 보이고, 오른쪽 판은 하루 합을 1로 맞춘 몫이라 모양만 보입니다. 오른쪽에서 후보 가는 신림과 거의 포개지고, 후보 나는 아침 하차에서 크게 어긋납니다. 자료: 서울교통공사, 역별 일별 시간대별 승하차인원 정보(2024), 공공데이터포털(15048032), 이용허락범위 제한 없음 — 2024년 11월 평일 하루 평균으로 가공

표 1두 후보의 숫자크기는 신림을 1.00 으로 놓은 배율
역크기(승차 합)출근 승차 몫출근 하차 몫역 이름
신림 (기준)1.0033%5%신림
후보 가0.4635%6%가려 둠
후보 나1.0722%21%가려 둠

'출근 승차 몫'은 하루 승차 가운데 07시·08시 두 칸이 차지하는 몫, '출근 하차 몫'은 하루 하차 가운데 같은 두 칸의 몫입니다. 후보 가는 크기가 다르고, 후보 나는 모양이 다릅니다 — 다른 쪽이 서로 다른 셈입니다. 가려 둔 두 이름은 2정거장 시뮬레이터와 3정거장 미션 ②에서 드러납니다. 자료: 같은 자료, 3정거장 코드 ② 가 찍는 값과 같다

먼저 예측

둘 가운데 누가 더 닮았습니까? 고른 쪽과 그 까닭을 한 문장으로 적어 두세요. 까닭을 적을 때는 '무엇이' 닮았다고 본 것인지를 함께 적습니다 — 크기인가요, 모양인가요. 2정거장 시뮬레이터와 3정거장 미션 ③에서 여러분의 한 문장을 다시 꺼내 봅니다.

체크포인트 1

기준 역의 하루를 읽었고, 두 후보가 서로 다른 쪽으로 닮았다는 것을 보았다 — 하나는 모양이, 하나는 크기가.

다음 정거장 · 개념 15분 →
2
개념 · 15분

같은 거리, 세 개의 자

2-1거리는 하나인데 표는 여럿이다

역 하나의 하루는 숫자 40칸입니다 — 첫차부터 막차까지 시간대마다 탄 사람 20칸과 내린 사람 20칸. 두 역이 얼마나 닮았는지는 이 40칸을 좌표로 보고 유클리드 거리를 재면 됩니다. 칸마다 차이를 제곱해 모두 더한 뒤 제곱근을 씌우는, 중학교에서 배운 그 거리입니다.

그런데 거리를 재기 전에 표를 고쳐 놓을 수 있습니다. 여기서 이 차시의 낱말 하나를 정합니다 — 자는 닮음을 재는 방식 하나를 말합니다. 어떤 표에 대고 같은 유클리드 거리를 재느냐가 자를 정합니다. 오늘 쓰는 자는 셋입니다.

  1. ① 인원 그대로받은 숫자 40칸을 그대로 좌표로 쓴다
  2. ② 칸마다 표준화칸마다 239개 역의 평균을 빼고 표준편차로 나눈다(Ⅱ-8 의 z)
  3. ③ 구성비역마다 자기 승차 합·하차 합으로 나눠 하루 중 몫으로 바꾼다

세 자는 모두 같은 거리 공식을 씁니다. 바뀐 것은 공식이 아니라 공식에 넣는 표뿐입니다. 그런데도 답이 갈립니다.

Ⅱ-8 에서 가져옴② 의 표준화는 8차시에서 단위가 다른 줄을 한 그림에 올릴 때 쓴 그 z 입니다. 오늘은 새로 배우지 않고, 그것만으로는 모자란 자리를 봅니다.

2-2하루 그림 검색대 — 내가 그린 하루를 세 자가 잰다

말로 듣는 것보다 한 번 그려 보는 쪽이 빠릅니다. 아래 판에서 하루를 직접 그리면 세 자가 239개 역 가운데 가장 닮은 역을 각자 하나씩 불러 줍니다. 사건 여섯을 차례로 지나며 언제 세 자의 답이 갈리는지 찾아보세요. 사건마다 예측을 먼저 잠그고(카드를 고르면 잠깁니다) 판정을 받습니다.

시뮬레이터

하루 그림 검색대

내가 그린 하루를 세 자가 동시에 잰다 — 같은 거리, 세 개의 답

  1. 1판을 끌어 하루를 그린다(화살표 키로도)
  2. 2예측 카드를 골라 잠근다
  3. 3세 자가 부른 역과 판정을 읽는다
사건
하루 그림 올리기
크기 손잡이
내 예측 — 고르면 잠긴다
낙서 구역
사건 0 · 손 풀기아무 하루나 그려 보세요

세 자 — ① 인원 그대로 · ② 칸마다 표준화(239역으로 만든 자) · ③ 구성비(자기 승차 합·하차 합으로 나눈 몫). 셋 다 같은 유클리드 거리로 재고, 가장 가까운 역 하나를 부른다

크기 손잡이는 모양을 두고 40칸 전부에 같은 배수를 곱한다 · 사건 ④ 에서는 기준 역 신림을 빼고 부른다(자기 자신이 늘 1등이면 낙서가 무엇을 바꾸는지 볼 수 없다)

세 자의 답—갈래
① 인원 그대로—
② 칸마다 표준화—
③ 구성비—
내 하루 승차0
낙서0
도전 1

작은 여의도 — 여의도를 올리고 크기 손잡이를 ×0.3 아래로 내려, ③ 만 여의도를 지키고 ①② 는 다른 역을 부르게 하라.

도전 2

낙서해도 안 바뀐다 — 사건 ④ 에서 조용한 20칸에 열 번 낙서해도 ① 이 부른 역이 그대로인지 보라.

도전 3

두 얼굴 그림 — ① 은 신림을, ③ 은 신대방을 부르는 하루 하나를 만들어라. 한 그림에 이름이 둘이다.

자료: 서울교통공사, 역별 일별 시간대별 승하차인원 정보(2024), 공공데이터포털(15048032), 이용허락범위 제한 없음 — 2024년 11월 평일 하루 평균 239역 × 40칸을 쪽 안에 실었다. 가상은 학생이 그린 하루뿐이고, 그것이 이 판의 질문이다.

2-3큰 칸이 거리를 독차지한다

판에서 본 것을 숫자로 확인합니다. ① 인원 그대로로 신림과 서울대입구의 거리를 잰 뒤, 거리²(칸마다 차이를 제곱한 것)를 칸마다 나눠 보면 아래와 같습니다.

그림 2거리를 누가 차지하나① 인원 그대로 · 신림 ↔ 서울대입구
칸마다 나눈 몫 — 신림 ↔ 서울대입구 거리² 를 40칸이 나눠 가진 몫 0% 10% 20% 30% 승08 33.7% 승07 11.1% 하19 10.3% 승05 승10 승15 승20 하05 하10 하15 하20 승차 20칸 하차 20칸 주황 세 칸이 거리² 의 55% 를 차지한다 큰 칸부터 더해 간 누적 가로는 칸의 순위(1~40) — 몇 칸이 거리를 다 쓰나 절반 90% 100% 3칸에 절반 12칸에 90% 1 10 20 30 40 칸의 순위 절반까지 3칸 · 90%까지 12칸 — 나머지 28칸은 거의 말이 없다 칸마다 나눈 몫 — 신림 ↔ 서울대입구 거리² 를 40칸이 나눠 가진 몫 0% 10% 20% 30% 승08 33.7% 승07 11.1% 하19 10.3% 승05 승10 승15 승20 하05 하10 하15 하20 승차 20칸 하차 20칸 주황 세 칸이 거리² 의 55% 를 차지한다 큰 칸부터 더해 간 누적 가로는 칸의 순위(1~40) — 몇 칸이 거리를 다 쓰나 절반 90% 100% 3칸에 절반 12칸에 90% 1 10 20 30 40 칸의 순위 절반까지 3칸 · 90%까지 12칸 — 나머지 28칸은 거의 말이 없다

40칸 가운데 승08(33.7%) · 승07(11.1%) · 하19(10.3%) 세 칸이 거리² 의 55% 를 가져갑니다. 절반까지 3칸, 90%까지 12칸 — 나머지 28칸은 거의 말이 없습니다. 붐비는 칸의 인원 차이가 새벽 칸의 차이보다 수백 배 크기 때문입니다. 자료: 같은 자료 — 3정거장 코드 ④ 가 찍는 값과 같다

그래서 ① 로 찾은 '가장 닮은 역'은 사실상 출근 시간에 타고 내리는 사람 수가 비슷한 역입니다. 퍼짐이 가장 넓은 10칸만 남기고 나머지 30칸을 버려도 ① 은 같은 셋을 부릅니다(서울대입구 · 신도림 · 사당). 버린 30칸이 답에 보탠 것이 거의 없었다는 뜻이에요.

그러면 칸마다 폭을 맞추는 ② 표준화가 이 문제를 풀어 줄까요. 절반만 풀어 줍니다. 표준화는 칸의 폭을 맞출 뿐인데, 큰 역은 모든 칸에서 평균보다 크게 나오므로 z 값이 한쪽으로 함께 쏠립니다. 그래서 ② 도 여전히 '얼마나 큰가'를 잽니다 — ② 가 고른 셋 가운데 둘이 ① 과 같고, 나머지 하나도 크기 1.07배인 역이었습니다.

기준 신림(1.00) · 두 자가 고른 셋의 크기
0.86① 의 1등 · 배율
vs
0.46③ 의 1등 · 배율

맨 왼쪽이 기준 신림, 이어지는 옅은 셋이 ① 의 셋, 주황 셋이 ③ 의 셋 — ③ 쪽은 절반 이하다.

출근 시간에 내리는 사람의 몫
5%신림
vs
21%② 가 고른 구로디지털단지

표준화해도 아침에 내리는 자리가 이렇게 어긋난 역이 이웃으로 뽑힌다.

거리² 의 90%까지 몇 칸이 필요한가
12① 인원 표 · 칸
vs
16③ 구성비 표 · 칸

진한 선 ① · 주황 파선 ③ 의 누적 — ③ 은 더 여러 칸에 퍼진다. 하루 전체가 말한다.

자료: 239역 × 40칸 — ① 의 영수증은 신림↔서울대입구(절반까지 3칸 · 90%까지 12칸), ③ 의 영수증은 신림↔신대방(하18 16.0% · 하19 15.9% · 승05 9.7% · 절반까지 4칸 · 90%까지 16칸)에서 잰 값이다.

2-4목적이 자를 고른다

세 자 가운데 옳은 자는 없습니다. 목적에 맞는 자가 있을 뿐이에요. 목적을 숫자로 적어 보면 어느 자를 써야 하는지가 드러납니다. 두 가지 목적을 손해로 적어 봅시다 — 손해는 기준 역에 맞춘 계획을 짝 역에 그대로 가져갔을 때 어긋나는 양입니다.

  1. 요원 손해역 안전 요원 배치 — 칸마다 인원 차이를 모두 더한다(÷1,000). 규모가 곧 문제다
  2. 버스 손해출근 시간 마을버스 연계 — 칸마다 몫 차이를 모두 더한다(÷4, %). 모양이 곧 문제다

두 손해로 238개 역의 줄을 세운 뒤, 세 자가 세운 줄과 얼마나 같은지를 순위 상관으로 재면 이렇게 갈립니다.

표 2자가 세운 줄과 손해가 세운 줄이 얼마나 같은가신림 기준 238역 · 순위 상관(1 에 가까울수록 같은 줄)
자요원 손해와버스 손해와이 자가 부른 1등
① 인원 그대로0.930.45서울대입구
② 칸마다 표준화0.870.24서울대입구
③ 구성비0.200.99신대방

① 은 요원 손해와 거의 같은 줄을 세우고(0.93), ③ 은 버스 손해와 거의 같은 줄을 세웁니다(0.99). 그런데 서로의 목적에 대해서는 0.45 · 0.20 으로 멀어집니다 — 한 자로 두 목적을 다 맡을 수 없습니다. 실제로 요원 손해 1위 서울대입구는 버스 손해로는 44위, 버스 손해 1위 신대방은 요원 손해로는 20위입니다. 자료: 239역 × 40칸 — 시뮬레이터 사건 ⑤ 가 화면에 그리는 값과 같다

보고의 규칙'가장 닮은 역'을 보고할 때는 쓴 자와 그 자를 고른 까닭(목적)을 함께 적는다. 자를 적지 않은 '닮음'은 읽는 사람이 제 마음대로 읽는다.

마지막으로 한 가지. 도구는 이 결정을 대신해 주지 않습니다. 3정거장에서 쓸 pairwise_distances 는 239 × 239 개 역 쌍의 거리를 한 번에 정확히 재 줍니다. 그러나 어느 표를 넣을지는 묻지 않습니다. 넣은 표의 거리를 정확히 재 줄 뿐이에요.

체크포인트 2

자 셋이 무엇을 재는지 말할 수 있고, ① 은 몇 칸이 거리를 독차지한다는 것과 ② 도 규모를 잰다는 것을 보았다. 이제 코드로 직접 재 본다.

다음 정거장 · 손으로 20분 →
3
손으로 · 20분

표를 셋으로 바꿔 같은 거리를 잰다

오늘의 장비

pairwise_distances — 모든 쌍의 거리를 한 번에

손으로 한 번 잰 뒤 같은 일을 scikit-learn 에게 시켜 같은 값이 나오는지 확인합니다. 처음 실행은 몇 초 멈춥니다 — 고장이 아니라 scikit-learn 과 그림 도구를 그 칸에서 처음 받는 중이에요(쪽마다 한 번). 실행 칸은 칸마다 혼자 돌아갑니다(자료를 ../data/ 에서 다시 읽습니다).

부르는 모양

from sklearn.metrics import pairwise_distances

D = pairwise_distances(표)   # 역 × 역 거리표
D[i]                          # i 번 역이 잰 모든 거리

오늘 쓰는 함수 넷

pairwise_distances
표의 모든 행 쌍 거리 — 기본이 유클리드
StandardScaler
칸마다 표준화 — fit 은 한 번, 새 값은 transform
div(…, axis=0)
행마다 자기 합으로 나누기 — 구성비 표
nsmallest
가장 작은 k 개를 값과 이름째 꺼내기

손으로 잰 것과 다른 셋

  1. 한 번에 모두239 × 239 거리표를 한 줄로 — 서로 다른 쌍 28,441개
  2. 표를 고르는 일은 그대로어느 표를 넣을지는 묻지 않는다
  3. 자를 한 번만 만든다fit 은 239역으로 한 번, 새 하루는 transform 만

대가 — 한 줄이라 무엇을 넣었는지 잊기 쉽다. 도구가 정확할수록 표를 고른 손이 안 보입니다.

1

기준 역의 하루를 읽는다

3분

코드 ①은 239개 역의 표를 읽어 기준 역 신림의 하루를 뽑습니다. 가장 많이 타는 때와 가장 많이 내리는 때는 각각 몇 시일까요? 먼저 짐작해 두세요.

기본 코드 ①은 채워져 있습니다. 그대로 ▶ 실행해 두 봉우리의 시각과 인원을 확인하세요. 시각 칸의 뜻에 눈여겨보세요 — 05 는 첫차~6시, 24 는 자정~막차입니다.

도전 기준 = "신림" 을 여러분이 아는 역으로 바꿔 돌려 보세요(예: "강남" · "홍대입구"). 봉우리의 시각이 어떻게 옮겨 가는지 보면, 그 역 둘레가 사는 곳인지 일하는 곳인지가 곡선에 적혀 있습니다.

탐구 승차 봉우리와 하차 봉우리의 높이 차이는 무엇을 말할까요? 둘이 거의 같은 역과, 한쪽만 유난히 높은 역은 둘레의 쓰임이 어떻게 다를지 생각해 보세요.

아침에 이 솟고 저녁에 가 솟는 모양은, 이 역 둘레가 라는 뜻이다.

확인 문제 1 의 (가) 에 한 줄 적어 두기 →
2

자 셋을 만들고 같은 거리로 잰다

4분

2정거장에서 ① 과 ③ 이 고른 셋이 하나도 겹치지 않는다는 것은 보았습니다. 그렇다면 ② 칸마다 표준화는 어느 쪽에 설까요? ① 쪽일까요, ③ 쪽일까요, 아니면 제 갈 길을 갈까요. 셋 중 하나를 골라 두세요.

기본 빈칸 ①에는 하차 구성비를 — 바로 윗줄의 승차 줄이 본보기입니다. 빈칸 ②에는 기준 역과 모든 역 사이의 유클리드 거리를 채우세요. 막히면 🔑 정답 코드 단추를 눌러 답을 넣고, 답을 읽은 뒤 ↩ 내 코드로 돌아와 다시 채워 보세요.

도전 기준 을 "쌍문" 으로 바꿔 돌려 보세요. 이 역에서도 ① 과 ③ 의 세 곳이 하나도 겹치지 않는지 확인합니다 — 신림 하나를 골라 만든 현상이 아니라는 것을 스스로 확인하는 자리입니다.

탐구 가장_가까운(표, k=3) 의 k 를 10 으로 늘려 보세요. ① 의 열 곳과 ③ 의 열 곳에는 겹치는 이름이 생길까요? 생긴다면 몇 번째부터 생기는지가 두 자의 거리를 말해 줍니다.

② 는 칸마다 를 맞췄는데도 ① 과 곳이 같았다. 표준화가 지우지 못한 것은 이기 때문이다.

확인 문제 3 에 적어 제출 →
3

그림으로 확인 — 무엇이 닮았나

4분

1정거장에서 적어 둔 내 예측입니다. 그림을 보기 전에 한 번 더 읽어 두세요.

코드 ③은 기준 역과 ① 이 고른 역 · ③ 이 고른 역 셋을 두 칸에 겹쳐 그립니다. 왼쪽은 인원 그대로, 오른쪽은 하루 승차 중 몫 — 어느 칸에서 세 곡선이 포개질까요?

기본 코드 ③은 채워져 있습니다. 그대로 ▶ 실행해 두 칸을 견주고, 왼쪽에서 갈리고 오른쪽에서 포개지는 것이 무엇인지 한 줄로 적을 준비를 하세요.

도전 plt.subplots(1, 2, sharex=True) 에 sharey=True 를 더해 보세요. 두 칸의 세로 눈금이 하나로 묶이면서 오른쪽 판이 납작해집니다 — 단위가 다른 두 칸(명과 %)을 한 눈금에 묶으면 안 되는 까닭이 바로 보입니다.

탐구 눈금 이야기가 하나 더 있습니다. plt.subplots 는 칸마다 제 축을 씁니다 — 칸마다 자기 최댓값에 맞춰 세로 눈금을 늘려 그린다는 뜻이에요. 그래서 두 역을 칸 둘에 따로 그리면, 크기가 아무리 달라도 그림에서는 봉우리 높이가 비슷해 보입니다. 눈이 그때 쓰는 자는 ① 이 아니라 ③ 에 가깝습니다. 실제로 여섯 후보 역을 '제 축으로 그렸을 때 눈에 닮아 보이는 순서'로 줄 세워 ③ 의 줄과 견주면 순위 상관이 0.94, ① 의 줄과는 −0.60 으로 오히려 거꾸로 갑니다. 무악재는 ① 의 줄에서 205번째인데 ③ 의 줄에서는 6번째예요. 그림 도구의 기본값도 하나의 자라는 뜻입니다.

왼쪽 칸에서 갈린 것은 이고, 오른쪽 칸에서 포개진 것은 이다. 그림 도구의 기본 눈금도 결국 하나다.

확인 문제 4 에 적어 제출 →
4

거리의 영수증 — 누가 냈는지 칸마다 떼어 본다

3분

① 로 잰 거리² 를 40칸이 나눠 가집니다. 몇 칸이 모이면 절반을 넘을까요? 2 · 3 · 5 · 10 · 20 가운데 하나를 골라 두세요.

기본 코드 ④는 채워져 있습니다. 그대로 ▶ 실행해 위 5칸의 몫과, 절반·90%까지 몇 칸이 필요한지 읽으세요.

도전 맨 끝 줄이 일러 주는 대로 이웃 = "서울대입구" 를 "신대방"(③ 이 고른 역)으로 바꿔 돌려 보세요. 위 3칸이 여전히 절반을 넘는지, 절반까지 몇 칸이 필요한지 바뀐 숫자를 직접 읽습니다.

탐구 같은 짜임을 구성비 표에 대고 해 보면 어떨까요. 신림과 신대방을 구성비 표로 재면 위 세 칸은 하18 16.0% · 하19 15.9% · 승05 9.7% 이고 절반까지 4칸 · 90%까지 16칸이 필요합니다. 같은 두 역인데 영수증에 적힌 칸 이름과 칸 수가 달라지는 까닭을 설명해 보세요.

① 로 잰 이 거리는 사실상 를 잰 것이다. 나머지 칸이 아무리 달라도 답은 .

확인 문제 1 의 (나) 에 적어 제출 →
5

도구로 한 번에, 그리고 의뢰 셋

6분

이번에는 기준 역 없이 239개 역을 모두 서로 재 봅니다. 28,441개 쌍 가운데 하루 모양이 가장 닮은 두 역은 어디일까요? 같은 노선의 이웃 역일까요, 아니면 멀리 떨어진 두 역일까요.

기본 코드 ⑤는 채워져 있습니다. 그대로 ▶ 실행해 첫째 거리표의 크기, 둘째 기준 역 줄이 손으로 잰 거리와 같은지(True), 셋째 가장 닮은 두 역과 가장 다른 두 역을 읽으세요.

탐구 가장 닮은 두 역으로 먹골 · 사가정이 나옵니다(둘 다 7호선, 구성비 거리 0.021). 그런데 노선도에서 바로 이웃한 두 역이 늘 가까운 것은 아닙니다 — 7호선 이웃인 철산과 가산디지털단지는 구성비 거리 0.535 로 철산이 잰 238곳 가운데 꼴찌입니다. 지도 위 거리와 데이터 속 거리가 왜 이렇게 다른지 적어 보세요(확인 문제 5).

도전 아래 코드 ⑥은 2정거장 하루 그림 검색대가 하는 일을 코드로 옮긴 것입니다. 한 역의 40칸에 배수를 곱해 세_자() 에 넣으면 판과 같은 세 이름이 나옵니다. 자를 239역으로 한 번만 만들고(fit), 새 하루는 재기만(transform) 한다는 데 눈여겨보세요.

본 과제 의뢰가 셋 들어왔습니다. 의뢰마다 자를 하나 골라 까닭을 쓰세요(확인 문제 2 의 표). 2정거장 표 2 의 순위 상관(요원 손해 ↔ ① 0.93 · 버스 손해 ↔ ③ 0.99)을 근거로 써도 좋습니다.

  1. 의뢰 가역 안전 요원을 몇 명 배치할지 정하려 한다 — 신림과 비슷한 역을 찾아 달라
  2. 의뢰 나출근 시간 마을버스 노선을 신림과 같은 방식으로 이으려 한다
  3. 의뢰 다비슷한 동네끼리 묶어 공동 행사를 열려 한다

도구가 대신해 준 것은 이고, 정해 주지 않은 것은 이다. 그것을 정하는 사람은 .

확인 문제 2 의 표를 채워 제출 →
체크포인트 3

표를 셋으로 바꿔 같은 거리를 재 보았고, 도구가 손으로 잰 거리와 같다는 것을 확인했고, 의뢰 셋에 자를 하나씩 붙여 보았다.

다음 정거장 · 정리·확인 10분 →
4
정리·확인 · 10분

오늘의 탐험 일지

  1. 찾은 것

    거리 공식은 하나인데 표를 바꾸면 답이 갈린다 — ① 이 고른 셋과 ③ 이 고른 셋에 겹치는 이름이 한 곳도 없었다.

  2. 도구의 한계

    pairwise_distances 는 넣은 표의 거리를 소수점까지 정확히 잰다. 그러나 어느 표를 넣을지는 묻지 않는다 — 그림 도구의 기본 눈금도 마찬가지다.

  3. 보고의 규칙

    '가장 닮은 역'을 보고할 때는 쓴 자와 그 자를 고른 까닭(목적)을 함께 적는다. 자가 적히지 않은 닮음은 읽는 사람이 제 마음대로 읽는다.

✍️ 문제마다 답을 쓰고 제출하기를 누르세요. 제출하면 모범 답안이 열리고, 제출한 답은 선생님께 전달됩니다.

1. (가) 신림의 승차 봉우리는 08시(11,784명), 하차 봉우리는 18시(9,193명)였다. 이 두 봉우리의 시각이 역 둘레의 동네에 대해 말해 주는 것을 한 줄로 쓰시오. (나) 인원 그대로 잰 거리에서 거리² 의 절반이 출근 시간 세 칸에서 나왔다. 이 거리로 찾은 '가장 닮은 역'은 사실상 무엇이 닮은 곳인지 쓰시오.
📖 모범 답안

(가) 아침에 타는 사람이 몰리고 저녁에 내리는 사람이 몰린다는 것은, 이 역 둘레에 사는 사람들이 아침에 다른 곳으로 나갔다가 저녁에 돌아온다는 뜻이다. 사는 동네(주거지)에 가깝다. 반대로 아침에 내리는 사람이 많고 저녁에 타는 사람이 많은 역은 일터·학교가 모인 곳이다.

(나) 출근 시간에 타고 내리는 사람 수가 비슷한 역, 곧 규모가 비슷한 역이다. 거리² 의 55%를 승08 · 승07 · 하19 세 칸이 차지했고 절반까지 3칸이면 충분했으니, 낮·밤의 모양은 거의 반영되지 않았다. 붐비는 칸의 인원 차이가 새벽 칸의 차이보다 수백 배 크기 때문에 큰 칸이 거리를 독차지한 것이다. 실제로 퍼짐이 가장 넓은 10칸만 남기고 나머지 30칸을 버려도 ① 은 같은 셋(서울대입구 · 신도림 · 사당)을 불렀다.

2. 아래 의뢰 셋에 자를 하나씩 고르고 까닭을 쓰시오. 그리고 ③ 구성비로 잰 '가장 닮은 역'이 기준보다 평일 하루 승차가 0.46배였다는 사실(60,180명 대 27,883명)이 이 고름에 어떤 근거가 되는지 아래 칸에 함께 쓰시오.
의뢰고른 자까닭
가 · 역 안전 요원 배치
나 · 출근 마을버스 연계
다 · 비슷한 동네끼리 공동 행사
📖 모범 답안

가 — ① 인원 그대로. 요원 몇 명, 개찰구 몇 개는 사람 수가 곧 문제다. 하루 모양이 닮아도 인원이 절반이면 계획을 옮길 수 없다. 자가 세운 줄과 요원 손해가 세운 줄의 순위 상관이 ① 0.93 · ③ 0.20 으로 갈린 것이 근거다.

나 — ③ 구성비. 출근 시간에 몇 시에 몰리는가가 문제이므로 크기가 아니라 모양을 재야 한다. 버스 손해와의 순위 상관이 ③ 0.99 · ① 0.45 다.

다 — ③ 구성비. '비슷한 동네'는 하루의 쓰임새가 닮았다는 뜻이다. 다만 행사 규모(의자 수·안내 인원)를 정할 때는 ① 을 한 번 더 봐야 한다.

0.46배가 근거가 되는 까닭 — ③ 이 신림에게 불러 준 신대방은 평일 하루 승차가 27,883명으로 기준(60,180명)의 절반도 안 된다. 쓰면 안 되는 목적은 안전 요원·개찰구 수 계획이다(규모가 다르니 그대로 옮기면 반쯤 틀린다). 써도 되는 목적은 동네 성격 비교와 출근 버스 연계다(하루의 모양이 닮았다). 같은 답이 어떤 목적에는 맞고 어떤 목적에는 틀리다 — 답이 아니라 목적이 먼저다.

3. 칸마다 표준화한 ② 가 고른 셋은 서울대입구 · 신도림 · 구로디지털단지로, 둘이 ① 과 같고 나머지 하나도 크기 1.07배인 역이었다. 칸의 폭을 맞췄는데도 왜 표준화가 규모를 지우지 못했는지 쓰시오.
📖 모범 답안

표준화는 칸마다 폭을 맞출 뿐이다. 승08 칸의 넓은 폭과 승05 칸의 좁은 폭을 같은 자로 바꿔 주기는 하지만, 큰 역은 모든 칸에서 평균보다 크게 나오므로 z 값이 40칸 모두 한쪽(양수)으로 함께 쏠린다. 그래서 거리는 여전히 '얼마나 큰가'를 잰다 — 표준화했다고 모양을 잰 것이 아니다.

모양만 보려면 칸이 아니라 역마다 자기 합으로 나눠야 한다. 그것이 ③ 구성비다. 시뮬레이터 사건 ③ 에서 신림을 ×0.1 로 줄였을 때 ① 은 용마산을, ② 는 신길을 불렀고 ③ 만 신림을 지킨 것이 같은 이야기다.

4. pairwise_distances 가 손으로 잰 거리와 소수점까지 같았다(True). 그러면 '가장 닮은 역'도 도구가 정확히 찾아 준 것인지 쓰시오. 그리고 plt.subplots 의 기본값(칸마다 제 축)으로 역 둘을 나란히 그리면 눈은 어느 자로 닮음을 재게 되는지 까닭과 함께 쓰시오.
📖 모범 답안

도구는 넣은 표 사이의 거리를 정확히 잴 뿐이다. 인원 그대로의 표를 넣으면 '규모가 닮은 역'을, 구성비 표를 넣으면 '하루 모양이 닮은 역'을 정확히 찾는다. 어느 표를 넣을지, 곧 무엇을 닮음으로 볼지는 목적을 아는 분석가가 정한다. 정확한 것과 옳은 것은 다르다.

제 축 — plt.subplots 는 칸마다 자기 최댓값에 맞춰 세로 눈금을 늘려 그린다. 그래서 크기가 아무리 다른 두 역도 그림에서는 봉우리 높이가 비슷해 보이고, 눈은 크기를 이미 지운 뒤의 모양을 보게 된다 — ③ 구성비에 가까운 자다. 여섯 후보 역을 '제 축으로 그렸을 때 눈에 닮아 보이는 순서'로 줄 세워 견주면 ③ 의 줄과 순위 상관 0.94, ① 의 줄과는 −0.60 으로 거꾸로 간다(무악재는 ① 의 줄에서 205번째, ③ 의 줄에서 6번째다). 크기를 견주려는 그림이라면 sharey=True 로 눈금을 묶거나, 눈금이 다르다는 것을 그림 아래에 적어야 한다.

5. 7호선에서 바로 이웃한 철산과 가산디지털단지는 구성비로 재면 거리 0.535 로 철산이 잰 238곳 가운데 꼴찌였다. 반대로 4호선 쌍문과 9호선 양천구청은 0.036 으로 1번째였다. 가능한 까닭을 쓰시오.
📖 모범 답안

데이터 속 거리는 지도 위 거리가 아니다. 이 표가 재는 것은 역 사이의 물리적 거리가 아니라 하루가 흘러가는 모양이다. 한 역은 아파트가 둘러싼 주거지이고 옆 역은 공단·업무지구라면, 한쪽은 아침에 타는 사람이 몰리고 다른 쪽은 아침에 내리는 사람이 몰린다 — 곡선이 정반대가 되므로 이웃 역끼리 가장 멀어질 수 있다.

반대로 멀리 떨어진 두 역도 둘레의 쓰임이 같으면(둘 다 주거지) 하루 모양이 거의 포개진다. 쌍문과 양천구청이 그런 쌍이다. 그래서 '가깝다'는 말은 무엇으로 재느냐에 따라 다른 것을 가리킨다.

6. 이번에는 역이 아니라 사람이다. "이 두 학생은 비슷하다"를 성적 · 출결 · 동아리 표로 재려 한다. 척도(자)를 고르기 전에 반드시 정해야 할 물음 하나와, 잘못 고르면 생길 문제 하나를 쓰시오.
📖 모범 답안

정해야 할 물음 — 무엇을 위해 비슷한가? 학습 짝을 지으려는 것인지, 진로 상담 자료로 쓰려는 것인지, 동아리를 추천하려는 것인지. 목적이 정해져야 어떤 표를 만들지(총점을 쓸지 과목별 몫을 쓸지, 출결을 넣을지)가 정해진다. 오늘 두 손해를 적어 보고 자를 고른 것과 같은 순서다.

잘못 고르면 — 첫째, 폭이 가장 큰 변수 하나(예: 총점)가 닮음을 독차지한다. 오늘 승08 한 칸이 거리² 의 33.7%를 가져간 것과 같은 일이다. 둘째, 목적과 무관한 특성으로 사람을 묶으면 그 묶음이 꼬리표가 된다. 역은 이름이 바뀌어도 상관없지만 사람은 다르다 — 그래서 자를 고른 까닭을 반드시 함께 적고, 묶음을 누가 어떤 목적으로 쓰는지까지 보고해야 한다.

+
더 알아보기

탐험 밖의 이야기 셋

첨두 한 시간이 하루를 정한다 신림 · 평일 하루 승차(명) 진한 선 = 있는 그대로 옅은 점선 = 같은 곡선을 한 시간 뒤로 옮긴 것 0 4,000 8,000 12,000 05 08 11 14 17 20 23 시각(시) 하루 평균 3,009명 (60,180 ÷ 20칸) 08시 11,784명 평균의 3.9배 봉우리가 한 시간만 옮겨져도 가장 붐비는 칸이 달라진다 — 열차 간격도, '닮은 역'을 부르는 자도 함께 움직인다.
현장

하루의 두 봉우리, 그리고 첨두시

교통 계획가는 하루 평균이 아니라 봉우리를 보고 열차 간격과 칸 수를 정합니다. 봉우리가 선 한 시간을 첨두시라고 불러요. 신림의 08시 승차 11,784명은 하루 평균(60,180 ÷ 20칸 = 3,009명)의 3.9배입니다. 평균에 맞춰 열차를 넣으면 아침 한 시간이 무너지고, 첨두에 맞춰 넣으면 낮 내내 빈 칸이 달립니다 — 그래서 시간대마다 간격을 달리 짭니다.

이 차시의 이야기와 만나는 곳은 여기입니다. 첨두시가 몇 시인지는 구성비가, 얼마나 큰지는 인원이 말합니다. 유연 근무나 등교 시간 조정으로 봉우리가 한 시간 당겨지거나 두 시간에 걸쳐 퍼지면, 같은 역이 다른 역과 닮아집니다 — 계획도 바뀌고, '닮은 역'을 부르는 자의 답도 함께 바뀝니다.

도해: 신림의 평일 하루 승차 곡선에 하루 평균 선을 긋고, 같은 곡선을 한 시간 뒤로 옮겨 겹쳤다. 숫자는 이 차시가 쓰는 자료에서 계산한 값이다.

지도 위 거리와 데이터 속 거리 하루 승차 중 몫(%) — 크기를 지우고 모양만 0 10 20 철산 ↔ 가산디지털단지 거리 0.535 진한 선 철산 · 주황 파선 가산디지털단지 238곳 가운데 238번째 05 14 24시 0 10 20 쌍문 ↔ 양천구청 거리 0.036 진한 선 쌍문 · 주황 파선 양천구청 238곳 가운데 1번째 05 14 24시 7호선 이웃 역(위)보다 4호선과 9호선의 두 역(아래)이 훨씬 가깝다.
방법 더 깊이

지도 위 거리와 데이터 속 거리

노선도를 펴 놓고 보면 철산과 가산디지털단지는 7호선에서 바로 이웃입니다. 그런데 구성비로 재면 거리 0.535 로, 철산이 잰 238곳 가운데 가장 먼 역입니다. 한쪽은 아침에 타는 사람이 몰리는 주거지이고 다른 쪽은 아침에 내리는 사람이 몰리는 일터라서, 하루 곡선이 거의 뒤집혀 있기 때문이에요.

반대편도 있습니다. 4호선 쌍문과 9호선 양천구청은 서울을 가로질러 떨어져 있는데 거리 0.036 으로 쌍문이 잰 238곳 가운데 1번째입니다. 데이터가 만드는 공간에서는 이웃이 새로 짜입니다. 7차시에서 역들을 무리로 묶을 때, 그 무리가 지도의 구역과 다르게 나오는 까닭이 여기에 있습니다.

도해: 두 쌍의 하루 승차 몫(%) 곡선을 나란히 그렸다. 거리와 순위는 이 차시가 쓰는 자료에서 계산한 값이다.

두 목적, 두 답 신림과 짝지을 역 238곳 · 왼쪽 아래일수록 두 목적 모두에 좋다 가로 = 요원 손해(인원 차이 합 ÷ 1,000) 세로 = 버스 손해(몫 차이 합 ÷ 4, %) 0% 20% 40% 60% 0 70 140 1 2 3 4 5 6 0역 앞줄 — 두 손해를 함께 줄이는 역 1 서울대입구 0.86배 2 수유 0.63배 3 연신내 0.62배 4 쌍문 0.55배 5 화곡 0.53배 6 신대방 0.46배 옅은 상자 = 합격 상자(요원 40 이하 · 버스 6% 이하) — 한 역도 없다. 요원 손해 1위 서울대입구는 버스로는 44위, 버스 1위 신대방은 요원으로는 20위다. 분석가의 첫 일은 목적을 적는 일이다.
직업

닮은 곳을 찾는 일로 먹고사는 사람들

상권 분석가와 도시계획가는 '하루 흐름이 닮은 역세권'을 찾아 새 가게 자리, 버스 노선, 공공시설 위치를 판단합니다. 그런데 닮음의 자를 고르는 일이 이미 판단의 절반입니다. 신림과 짝지을 역 238곳을 두 손해의 평면에 찍어 보면 그 사정이 한눈에 보여요 — 가로는 요원 손해(인원 차이), 세로는 버스 손해(몫 차이)입니다.

두 손해를 함께 줄이는 역들이 왼쪽 아래에 계단처럼 늘어섭니다. 이것을 앞줄이라고 부릅시다 — 한쪽을 더 좋게 하려면 다른 쪽을 꼭 나쁘게 해야 하는 역들입니다. 신림의 앞줄은 여섯 곳(서울대입구 · 수유 · 연신내 · 쌍문 · 화곡 · 신대방)이고, 두 손해를 모두 만족시키는 합격 상자(요원 40 이하 · 버스 6% 이하)에는 한 역도 없습니다. 이럴 때 분석가가 할 일은 더 좋은 계산이 아니라, 어느 쪽을 얼마나 양보할지를 의뢰인에게 물어 적어 두는 것입니다.

도해: 238곳의 두 손해를 평면에 찍고 앞줄 여섯을 이었다. 손해식과 값은 이 차시가 쓰는 자료에서 계산한 값이다.