단원 홈

Ⅳ. 데이터 과학 프로젝트6차시

나무는 2025년
여름을 맞힐까

두 방법을 같은 조건에서 겨루게 한다

우리 프로젝트의 방법 ①은 통계적 회귀(5차시), 방법 ②는 기계학습 결정나무입니다. 둘을 겨루게 해 성적표를 뽑는 일은 쉽습니다. 어려운 것은 그 성적표가 방법의 차이를 잰 것인지, 아니면 우리가 몰래 비틀어 놓은 조건을 잰 것인지 가리는 일입니다.

  • [12데과04-03]
  • 50분네 정거장
  • 다시 쓰는 도구train_test_split · DecisionTreeRegressor
  • 자료전력 수요 · 기온 2,922일(2018~2025)
Ⅳ 단원 지도6 / 11차시
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11

학습 목표

  1. 개념에서

    두 분석 방법을 견줄 때 맞춰야 할 네 조건(재료 · 나누기 · 잣대 · 물음)을 말할 수 있다.

  2. 손으로

    같은 자료를 미래로 나눈 시험에 걸어 두 방법의 오차와 치우침을 함께 잴 수 있다.

  3. 확인에서

    조건 하나를 어긴 비교가 실제로 잰 것이 무엇인지 한 문장으로 적을 수 있다.

1
여는 장면 · 3분

같은 두 선수, 성적표 두 장

우리 팀은 5차시에서 통계적 회귀를 세웠습니다. 냉방도일·난방도일에 토요일·쉬는날·명절·연도를 더한 여섯 재료로 하루 평균 전력 수요를 맞히는 직선이었지요. 오늘은 그 옆에 방법 ②를 세웁니다 — 결정나무입니다. 나무에게는 도일 대신 기온을 그대로 주고, 나머지 네 재료는 똑같이 줍니다. 나무는 굽은 자리를 스스로 찾아 자르니까요.

두 선수를 2,922일 위에 세우고 시험을 두 번 치렀습니다. 그런데 시험지를 어떻게 나누느냐에 따라 성적표가 달라졌습니다.

Ⅲ-12 에서 가져옴무작위로 나누느냐 시간 순서로 나누느냐에 따라 같은 모델의 성적이 바뀐다. 오늘은 한 걸음 더 간다 — 프로젝트의 목적이 나누는 법을 고른다.

기술 · 가상 기사

"기계학습이 통계를 눌렀다" — 전력 수요 예측, 결정나무 오차가 회귀의 0.8배

어느 분석 대행사의 보도자료 · 이 기사는 수업을 위해 지어낸 것입니다
표 1성적표 두 장 — 같은 두 선수, 다른 시험지평균 절대 오차(MW) · 하루 평균 수요를 맞힌다
시험지훈련시험회귀나무이긴 쪽
날짜를 섞어서 20%를 시험으로2,337일585일2,1932,211가려 둠
2018~2023 으로 배우고 2024~2025 를 맞히기2,191일731일2,6812,635가려 둠

두 줄은 같은 자료 · 같은 두 모델입니다. 달라진 것은 시험지를 나눈 방법 하나뿐인데, 첫 줄에서는 두 선수가 붙어 있고 둘째 줄에서는 둘 다 오차가 커집니다. 그리고 둘째 줄에서는 회귀가 더 크게 커졌습니다. 자료: 한국전력거래소, 시간별 전국 전력수요량(2018~2025), 공공데이터포털(15065266) · 기상청, 종관기상관측(ASOS) 일자료 — 원장 실측(Pyodide 0.26.4)

먼저 예측

표 1 의 둘째 줄에는 숫자가 하나 더 있습니다 — 치우침, 곧 실제에서 예측을 뺀 값의 평균입니다. 오차(2,681 · 2,635)는 얼마나 틀렸는지만 말하고 어느 쪽으로 틀렸는지는 말하지 않아요. 두 선수는 2024~2025 를 실제보다 높게 봤을까요, 낮게 봤을까요? 그렇게 생각한 까닭도 한 줄로 적어 두세요.

체크포인트 1

같은 두 선수인데 시험지를 바꾸자 성적이 달라졌다 — 무엇을 맞춰야 '어느 방법이 낫다'를 말할 수 있는지 물을 준비가 됐다.

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

겨루기가 공정하려면 네 가지가 같아야 한다

2-1네 레인 — 재료 · 나누기 · 잣대 · 물음

두 방법을 달리기 선수라고 해 봅시다. 레인은 두 선수에게 맞춰 주어야 할 조건 하나이고, 출발선은 그 레인에서 둘이 같은 자리에서 출발했다는 표시입니다. 맞춰야 할 레인은 넷입니다.

① 재료 — 두 모델에게 같은 정보를 주었나. ② 나누기 — 같은 날을 시험으로 삼았나. ③ 잣대 — 같은 식으로 오차를 셌나. ④ 물음 — 같은 것을 맞히게 했나. 넷 가운데 하나라도 어긋나면, 성적표가 잰 것은 '어느 방법이 낫다'가 아니라 '어느 조건이 유리했다'입니다.

어긋난 레인에서는 한 선수의 칩이 출발선보다 앞에 놓입니다 — 이것을 앞당긴 출발이라고 부르기로 합시다. 앞당긴 출발이 하나라도 있으면 등수는 남지만 그 등수가 무엇의 등수인지는 사라집니다.

재료 레인에는 한 가지 함정이 더 있습니다. 회귀에는 냉방도일·난방도일을, 나무에는 기온 그대로를 주었는데, 이것은 앞당긴 출발일까요? 아닙니다. 도일은 기온으로 만든 식이라 담긴 정보가 같고 모양만 다릅니다. 회귀는 사람이 정한 기준 18℃ 에 묶여 있고 나무는 자를 자리를 스스로 찾을 뿐이지요. 같은 레인에서 같은 정보를 다른 모양으로 쥐고 있는 것입니다.

규칙두 방법을 견준 숫자를 보고할 때는 네 레인이 어떻게 맞춰졌는지를 숫자 옆에 함께 적는다.

그림 1출발선 네 레인왼쪽 = 나란한 출발 · 오른쪽 = 한 레인만 앞당긴 출발
① 네 레인이 나란하다회귀 2,681 · 나무 2,635MW — 이때만 견줄 수 있다재료어떤 정보를 주나출발선회귀나무도일 + 토·쉬·명·연기온 + 토·쉬·명·연✓나누기어느 날을 시험으로회귀나무2024~20252024~2025✓잣대무엇을 오차라 부르나회귀나무평균 절대 오차평균 절대 오차✓물음무엇을 맞히나회귀나무하루 평균 수요하루 평균 수요✓ ② 한 레인만 앞당겼다회귀에서만 '연도'를 빼앗았다 — 2,681 → 2,428MW재료어떤 정보를 주나출발선회귀나무연도를 뺀 다섯기온 + 토·쉬·명·연✗앞당긴 출발나누기어느 날을 시험으로회귀나무2024~20252024~2025✓잣대무엇을 오차라 부르나회귀나무평균 절대 오차평균 절대 오차✓물음무엇을 맞히나회귀나무하루 평균 수요하루 평균 수요✓ ① 네 레인이 나란하다회귀 2,681 · 나무 2,635MW — 이때만 견줄 수 있다재료출발선회귀나무여섯 재료다섯 재료✓나누기회귀나무2024~20252024~2025✓잣대회귀나무평균 오차평균 오차✓물음회귀나무하루 평균하루 평균✓ ② 한 레인만 앞당겼다회귀에서만 '연도'를 빼앗았다재료출발선회귀나무연도를 뺀 다섯다섯 재료✗앞당긴 출발나누기회귀나무2024~20252024~2025✓잣대회귀나무평균 오차평균 오차✓물음회귀나무하루 평균하루 평균✓

왼쪽처럼 네 칩이 모두 선 위에 서 있을 때만 '회귀 2,681 · 나무 2,635' 를 두 방법의 차이로 읽을 수 있습니다. 오른쪽은 회귀에서만 '연도'를 빼앗은 판입니다 — 오차는 2,681 에서 2,428 로 오히려 줄어 회귀가 이기지만, 이 숫자가 잰 것은 방법이 아니라 '연도 칸이 이 기간에 도움이 됐나 해가 됐나'입니다. 자료: 원장 실측(Pyodide 0.26.4 · scikit-learn 1.4.2) — 3정거장 코드 ①·②가 찍는 값과 같다

2-2목적이 나누기를 정한다

표 1 의 두 줄은 나누기 레인만 다릅니다. 첫 줄은 train_test_split 을 기본값 그대로 쓴 것이고, 그 기본값은 섞기(shuffle=True)입니다. 도구가 나누기를 한 줄로 해 주지만, 무엇으로 나눌지는 도구가 정해 주지 않습니다.

날짜를 섞으면 어떤 일이 생길까요. 2025년 8월 14일이 시험에 뽑혀도 8월 13일과 15일은 훈련에 들어갑니다. 그 해의 수준을 바로 옆에서 베낄 수 있는 것이지요. 그래서 성적이 좋아 보입니다 — 나무의 오차가 섞은 시험에서는 2,211, 미래 시험에서는 2,635였습니다.

우리 프로젝트의 목적은 내년 여름의 수요를 미리 아는 것입니다. 내년에는 '내년의 이웃 날'이 없습니다. 그러니 시험도 미래여야 합니다. 2018~2023 으로 배우고 2024~2025 를 맞히는 나누기 — 이것이 목적이 고른 나누기입니다.

규칙나누는 법은 도구의 기본값이 아니라 프로젝트의 목적이 정한다. 고른 나누기와 그 까닭을 성적표 옆에 적는다.

두 시험지같은 2,922일
섞어서 20%585일이 여덟 해에 흩어진다미래로2024~2025 의 731일2018202120242025가로 = 2018~2025 여덟 해
섞어서 · 시험 585일미래로 · 시험 731일

자료: 원장이 구운 train_test_split(표.index, test_size=0.2, random_state=0) 의 시험 색인

2-3오차는 크기만 잰다 — 치우침을 옆에 적는다

mean_absolute_error 는 오차에 절댓값을 씌워 평균을 냅니다. 절댓값을 씌우는 순간 방향이 사라집니다. 2,681 과 2,635 는 '얼마나 빗나갔나'만 말할 뿐, 높게 봤는지 낮게 봤는지는 한 글자도 말하지 않습니다.

방향은 한 줄로 직접 재면 됩니다 — 치우침 = 실제 − 예측의 평균. 음수면 실제보다 높게 본 것이고, 양수면 낮게 본 것입니다. 미래 시험에서 회귀는 −1,197, 나무는 −358이었습니다. 오차로는 46MW 차이인 두 선수가, 치우침으로는 세 배 넘게 벌어집니다.

왜 회귀가 더 높게 봤을까요. 회귀에는 '연도' 칸이 있어 한 해에 +369MW 라는 기울기를 2018~2023 에서 배웠고, 2024·2025 에도 그 기울기를 그대로 이어 긋습니다. 그런데 하루 평균 수요는 2022년 65,574MW 를 지난 뒤 64,722 → 64,534 → 64,503MW 로 평평합니다. 이어 그은 선이 꺾인 추세 위로 넘친 것이지요. 그래서 2024(−788)보다 2025(−1,607)가 더 크게 넘칩니다.

나무는 다릅니다. 나무는 '연도 2025' 를 받아도 훈련에서 본 적 없는 해이므로 훈련 마지막 갈래에 그대로 떨어뜨립니다 — 추세를 잇지 않습니다. 그래서 덜 넘쳤고(−358), 2024 −366 과 2025 −350 이 거의 같습니다. 같은 성질이 3정거장에서는 약점이 됩니다.

그림 2꺾인 추세와 벌어지는 치우침왼쪽 = 해마다 하루 평균 수요 · 오른쪽 = 시험 두 해의 치우침
해마다 하루 평균 수요2022 뒤로 평평하다 — 훈련 여섯 해 · 시험 두 해60616263646566천 MW2018201920202021202220232024202564,48161,10965,57464,503시험훈련(2018~2023) 멀어질수록 벌어지는 치우침실제 − 예측의 평균(MW) · 음수 = 실제보다 높게 봤다0회귀−7882024−1,6072025나무−3662024−3502025회귀는 2024 −788 → 2025 −1,607 로 두 배 넘게 벌어지고,나무는 −366 → −350 으로 그대로다. 해마다 하루 평균 수요2022 뒤로 평평하다60616263646566천 MW2018201920202021202220232024202564,48161,10965,57464,503시험훈련 멀어질수록 벌어지는 치우침실제 − 예측의 평균(MW)0회귀−7882024−1,6072025나무−3662024−3502025회귀 −788 → −1,607 (두 배 넘게)나무 −366 → −350 (그대로)

여덟 해의 하루 평균 수요는 64,481 · 63,109 · 61,109 · 63,737 · 65,574 · 64,722 · 64,534 · 64,503MW 입니다. 2020년의 골과 2022년의 봉우리를 지나 마지막 네 해는 거의 나란합니다. 추세를 믿고 이어 긋는 쪽이 추세가 꺾인 해에 더 크게 틀립니다. 자료: 한국전력거래소, 시간별 전국 전력수요량(2018~2025), 공공데이터포털(15065266) — 하루 24칸의 평균을 해마다 다시 평균했다(원장 실측)

같아야 할 두 숫자가 다를 때, 그 차이가 곧 단서입니다. 네 쌍을 나란히 놓아 봅니다.

나무 · 섞은 시험과 미래 시험
2,211섞어서(MW)
→
2,635미래로(MW)
섞어서2,211미래로2,635

이웃 날을 베낄 수 없게 되자 424MW 더 틀린다.

미래 시험 · 오차와 치우침
46오차의 차이(MW)
인데
839치우침의 차이(MW)
오차 차이46치우침 차이839

절댓값이 버린 방향이 여기 들어 있다.

회귀 · 여섯 재료와 다섯 재료
2,681연도 포함(MW)
→
2,428연도 뺌(MW)
연도 포함2,681연도 뺌2,428

재료를 빼앗긴 쪽이 더 잘했다.

회귀 · 2024년과 2025년의 치우침
−7882024(MW)
→
−1,6072025(MW)
2024−7882025−1,607

훈련에서 멀어질수록 더 높게 본다.

자료: 위 네 쌍의 숫자는 모두 3정거장 코드 ① · ②가 찍는 값이다(원장 실측).

체크포인트 2

맞춰야 할 네 레인을 말할 수 있고, 오차 옆에 치우침을 적어야 하는 까닭을 안다. 이제 직접 겨루게 해 본다.

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

두 선수를 2,922일 위에 세운다

1

시험지를 바꾸면 성적표가 바뀐다 — 그리고 치우침이 드러난다

11분

여는 장면에 적어 둔 내 예측입니다. 두 선수는 2024~2025 를 높게 봤을까요, 낮게 봤을까요?

이제 먼저 2분, 아래 깊이 표를 공책에 그대로 옮겨 그립니다 — 가로 다섯 칸, 세로 세 줄이에요. 가운데 깊이 6 줄은 교과서가 채워 두었습니다. 그 줄을 기준 삼아 깊이 3 줄과 깊이 10 줄에 돌리기 전의 짐작을 연필로 먼저 채우세요.

짐작할 것은 둘입니다. 깊이를 키우면 오차는 줄까요? 그리고 치우침도 함께 사라질까요? 나무를 더 잘게 가를수록 훈련 자료에 더 꼭 맞을 테니 오차는 줄 것 같지요 — 그런데 훈련에 없던 2024·2025 에 대해서도 그럴까요. 연필로 적어 두어야 조금 뒤의 결과가 내 생각의 어디를 고쳤는지가 남습니다.

기본 코드 ①에는 빈칸이 둘 있습니다. 빈칸 ①에는 훈련으로 쓸 날의 조건을, 빈칸 ②에는 나무의 깊이를 채우고 ▶ 실행하세요. 처음 실행은 scikit-learn 을 받느라 몇 초 멈춥니다 — 고장이 아니에요(쪽마다 한 번).

도전 나무의 깊이(max_depth)를 3 → 6 → 10 으로 바꿔 세 번 돌리고, 아래 표를 공책에 옮겨 채우세요. 깊이를 키우면 오차는 줄지만 치우침도 함께 사라지는지가 오늘의 물음입니다.

깊이24~25 오차24~25 치우침2024 오차2025 오차
3내가 채운다내가 채운다내가 채운다내가 채운다
62,635−3582,5892,681
10내가 채운다내가 채운다내가 채운다내가 채운다

도전 ② train_test_split(…, random_state=0) 을 train_test_split(…, shuffle=False) 로 바꿔 보세요. 같은 20%인데 시험이 끝 두 해로 바뀝니다 — [1] 의 두 숫자가 어떻게 달라지나요?

탐구 회귀는 '연도'를 받아 한 해에 +369MW 라는 기울기를 배웠습니다. 여러분이 2026년을 맞혀야 한다면, 이 기울기를 그대로 이어 긋겠습니까? 그렇게 하지 않으려면 어떤 재료를 대신 넣어야 할까요?

치우침이 라는 것은 두 모델이 2024~2025 를 실제보다 보았다는 뜻이다. 회귀가 더 크게 그런 까닭은 이고, 그 차이는 2025년에 .

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

짜고 치는 경기장 — 이기게 해 드립니다

9분

지금부터 여러분은 '원하는 결론을 만들어 드리는' 분석 대행사 직원입니다. 의뢰인이 찾아와 "우리 쪽이 이겼다는 숫자를 만들어 달라"고 합니다. 할 수 있을까요? 어느 레인을 비틀면 되겠는지 먼저 짐작해 보세요.

판에 들어가기 전에 말 네 개를 정해 둡니다 — 의뢰서는 오늘 만들어야 할 결론이고, 전광판은 두 선수의 오차를 실시간으로 보여 주는 판(아래 여섯 칸)입니다. 심판은 네 레인에 출발선을 긋고 앞당긴 출발을 찾아내는 사람이며, 기록장은 심판이 내준 정정 기사가 쌓이는 곳입니다. 칩을 하나 누를 때마다 두 모델이 2,922일 위에서 그 자리에서 다시 배우고 채점됩니다.

시뮬레이터

짜고 치는 경기장

이기게 해 드립니다 — 그런데 그 숫자는 무엇을 잰 것일까

  1. 1의뢰서를 고르고 잠금 물음에 답해 예측을 잠근다
  2. 2손댈 선수를 고르고 칩 · 달력 · 잣대 · 물음을 비튼다
  3. 3[심판 부르기] — 정정 문장을 골라 기록장에 남긴다
의뢰서
먼저 예측 — 잠그면 조작이 열린다
지금 손대는 선수
재료 칩 — 누르면 가방에서 빠진다
시험 달력 — 도장
잣대 — 무엇을 오차라 부르나
물음 — 무엇을 맞히나
심판
0판 · 공정 경기네 레인을 모두 맞춰 두었다

심판 규칙 — 한 레인에서 두 선수의 설정이 다르면 ✗ 앞당긴 출발, 같으면 ✓. 둘 다 공정 경기와 다르게 바꾼 레인은 ⚑ 다른 것을 쟀다. 이긴 쪽 = 고른 잣대의 값이 작은 쪽.

딱지 — 한 선수의 훈련에 자기 시험 날보다 뒤의 날이 들어 있으면 「2023년 12월 31일 밤에는 칠 수 없는 시험」이 붙는다. 그 밤에 서 있는 사람은 그 뒤의 날을 알 수 없기 때문이다.

이긴 쪽—
회귀 오차—
나무 오차—
회귀 치우침—
나무 치우침—
어긴 레인—
도전 1

의뢰 ① 재료 레인 하나만 비틀어 회귀가 이겼다는 전광판을 만들고, 심판을 불러 정정 기사를 기록장에 남겨라.

도전 2

의뢰 ② 재료 칩은 다섯 장 그대로 둔 채, 나무 오차가 회귀의 0.9배 아래로 보이게 만들고 정정 기사를 남겨라.

도전 3

의뢰 ④ 네 레인을 모두 나란히 둔 채 두 선수의 치우침을 반 아래로 줄여라 — 칩은 두 장까지.

자료: 한국전력거래소, 시간별 전국 전력수요량(2018~2025), 공공데이터포털(15065266) · 기상청, 종관기상관측(ASOS) 일자료(2018~2025), 기상자료개방포털 — 다섯 지점 일 단위로 가공 · 공휴일은 「관공서의 공휴일에 관한 규정」(대통령령)·임시공휴일 국무회의 의결·「공직선거법」 선거일로 원에듀가 정리했다. 판은 이 2,922일을 쪽 안에 실어(하루 여섯 값) 브라우저에서 직접 회귀와 나무를 배웁니다 — 흩뿌리기 색인은 원장이 train_test_split(표.index, test_size=0.2, random_state=0) 로 구워 실었다.

기본 판에서 만든 두 판을 코드로 다시 확인합니다. 빈칸 ③에 회귀 가방에서 '연도'만 빼는 조건을 채우고 ▶ 실행하세요. (가)의 2,428과 (나)의 0.8배가 판의 전광판과 같은 숫자인지 맞대어 봅니다.

도전 나무재료 에서도 "연도" 를 빼 보세요 — (가) 줄이 두 가방에서 함께 연도를 뺀 비교로 바뀝니다. 나무의 오차는 어떻게 되나요?

탐구 판에서 잣대를 '가장 크게 빗나간 날'로 바꾸면 순위가 뒤집힙니다. 평균을 잘 맞히는 모델과 최악의 날을 덜 틀리는 모델 가운데, 전력 계통을 운영하는 사람에게는 어느 쪽이 더 필요할까요?

회귀에서만 '연도'를 뺀 비교가 실제로 잰 것은 이다. 같은 정보를 주면 두 선수의 오차는 과 이고, 이 판에서 어긴 조건은 레인이다.

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

계단의 천장 — 나무가 낼 수 있는 가장 큰 값

4분

결정나무의 예측은 잎에 모인 훈련 날들의 평균입니다. 그래서 나무가 낼 수 있는 값은 잎의 수만큼, 몇 가지로 정해져 있습니다 — 이것을 계단이라고 부르기로 하지요. 계단에는 천장이 있습니다. 나무가 낼 수 있는 가장 큰 예측값입니다.

깊이 6 나무의 천장은 훈련 기간에 실제로 있었던 가장 높은 날(83,011MW)보다 높을까요, 낮을까요? 그리고 시험 기간의 가장 높은 날(83,203MW)은 어떨까요?

기본 코드 ③은 채워져 있습니다. 그대로 ▶ 실행해 네 숫자를 확인하고, 아래 그림에서 세로 줄무늬 · 대각선 위로 몰린 점 · 넘지 못하는 주황 점선 셋을 찾으세요. (그림은 처음 실행에서 그림 도구를 받느라 몇 초 더 걸립니다.)

도전 DecisionTreeRegressor 의 깊이를 10 으로 올려 다시 그려 보세요 — 줄무늬가 촘촘해집니다. 그런데 오른쪽 끝의 주황 점선은 실제 최댓값(83,203)을 넘어서나요?

탐구 코드에 print(np.unique(p나무).size) 한 줄을 더해 시험 731일에 실제로 쓰인 예측값이 몇 가지인지 세어 보세요. 훈련에서 셀 때(42가지)와 같습니까, 적습니까? 적다면 그 까닭은 무엇일까요?

나무의 예측은 이므로 천장이 생긴다. 깊이를 키우면 계단의 수는 지만, 어느 계단도 이라서 천장은 .

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

성적표 한 장으로 — 그리고 숲도 같은 벽에 부딪히나

6분

오늘 세 미션이 찍어 놓은 숫자를 한 장으로 모을 차례입니다. 모으기 전에 한 가지만 짐작해 두세요 — 여섯 줄 가운데 두 방법이 가장 크게 갈리는 줄은 어디일까요? 오차일까요, 치우침일까요, 아니면 설명할 수 있는 문장일까요?

그리고 수업 뒤의 물음 하나. 나무 하나가 계단이라면, 나무 50그루의 평균은 어떨까요? 계단이 촘촘해져 천장도 사라질까요? 그리고 치우침은요?

기본 먼저 4분 — 확인 문제 1 의 비교표 여섯 줄을 채웁니다. 새로 만들 숫자는 하나도 없어요. 앞의 세 미션이 이미 다 찍어 두었습니다.

비교표의 줄어디서 가져오나
미래 오차 · 치우침미션 ①의 [2] 맨 아랫줄(24~25) — 네 숫자를 그대로 옮긴다.
훈련에서 멀어질 때같은 표의 2024 줄과 2025 줄을 견준다. 두 해 사이에 누가 더 빨리 나빠졌나.
네 조건 점검미션 ②의 기록장에 쌓인 정정 기사. 오늘 공정 경기에서는 네 레인이 다 ✓ 였나.
설명할 수 있는 문장2정거장 2-3 의 '한 해에 +369MW' 같은 계수 한 줄과, 미션 ③의 천장. 어느 쪽을 말로 옮길 수 있나.
계산 부담새로 잴 것이 없다. 오늘 처음 ▶ 를 눌렀을 때 몇 초 멈춘 것과, 두 번째부터 곧바로 끝난 것을 갈라 적는다.

여섯 줄을 채웠으면 칸마다 이긴 쪽에 동그라미를 치고, 맨 아래에 우리 팀 목적이라면 어느 줄이 가장 중요한지와 그 까닭을 씁니다. 동그라미가 갈리는 줄이 있어야 정상이에요 — 한 줄로 이기는 방법은 없습니다.

기본 남은 2분은 우리 팀 프로젝트로 옮깁니다 — 방법 ②를 무엇으로 할지와 네 레인을 어떻게 맞출지를 한 줄씩 정해 비교표 아래에 적으세요. 오늘 겨룬 두 선수가 그대로 후보가 됩니다.

도전 코드 ④는 수업 뒤에 돌려 보는 칸입니다. 시간이 남으면 지금 ▶ 실행해 숲의 오차 · 치우침 · 예측 최댓값을 훈련 최댓값(83,011)과 견주세요.

도전 n_estimators 를 200 으로 올려 보세요 — 그루를 네 배로 늘리면 예측 최댓값이 83,011 을 넘습니까?

우리 팀 프로젝트의 목적은 이므로, 비교표의 여섯 칸 가운데 칸이 가장 중요하다. 그 칸에서 이긴 쪽은 이고, 그렇게 말할 수 있는 까닭은 네 레인이 이기 때문이다.

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

두 방법을 같은 조건에서 겨루게 해 보았고, 조건을 하나 비틀면 결론이 어떻게 뒤집히는지 직접 만들어 보았다. 이제 성적표를 한 장으로 정리한다.

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

오늘의 탐험 일지

  1. 찾은 것

    같은 정보를 준 두 방법의 미래 오차는 2,681 대 2,635MW 로 거의 같았다. 갈린 것은 치우침이다 — 추세를 이어 긋는 회귀가 꺾인 추세에 더 크게 넘쳤다(−1,197 대 −358).

  2. 도구의 한계

    train_test_split 은 나누기를 대신해 주지만 기본값이 섞기라 목적과 어긋날 수 있고, mean_absolute_error 는 크기만 재고 방향을 버린다. 나무는 본 적 없는 높이를 모른다(천장 79,514).

  3. 보고의 규칙

    '어느 방법이 낫다'를 쓰기 전에 네 레인(재료 · 나누기 · 잣대 · 물음)이 어떻게 맞춰졌는지 적는다. 한 레인이라도 어긋났으면 그 비교가 실제로 잰 것을 함께 적는다.

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

1. 두 방법의 성적표를 한 장으로 정리하시오. 칸마다 값을 채우고 이긴 쪽을 적은 뒤, 맨 아래 칸에 우리 팀 프로젝트의 목적이라면 어느 줄이 가장 중요한지와 그 까닭을 쓰시오.
견주는 칸통계적 회귀결정나무이긴 쪽
미래 오차(MW)
치우침(MW)
훈련에서 멀어질 때
(2024 → 2025 오차)
네 조건 점검
(기록장에서 옮긴다)
설명할 수 있는 문장
계산 부담
📖 모범 답안

미래 오차 회귀 2,681 · 나무 2,635 → 나무(46MW 차이, 거의 같다). 치우침 회귀 −1,197 · 나무 −358 → 나무(회귀가 세 배 넘게 높게 봤다). 훈련에서 멀어질 때 회귀 2,510 → 2,853 · 나무 2,589 → 2,681 → 나무(회귀가 더 빨리 나빠진다). 네 조건 점검 재료 ✓(도일과 기온은 같은 정보의 다른 모양) · 나누기 ✓ · 잣대 ✓ · 물음 ✓ → 비김. 설명할 수 있는 문장 회귀는 '냉방도일 1칸에 몇 MW' 처럼 계수를 말로 옮길 수 있다 → 회귀. 계산 부담 둘 다 이 자료에서는 몇십 밀리초 — 다만 처음 한 번 scikit-learn 을 받는 시간이 크다 → 비김.

맨 아래 칸의 예 — "우리 프로젝트의 물음은 '한여름 기온 1℃에 몇 MW' 이므로 설명할 수 있는 문장 줄이 가장 중요하다. 오차가 46MW 더 크더라도 계수를 말로 옮길 수 있는 회귀를 방법 ①로 삼고, 나무는 회귀가 놓친 굽은 자리를 찾는 데 쓴다." 또는 "내년 여름 가장 높은 날에 대비하는 것이 목적이면 치우침 줄이 가장 중요하다 — 둘 다 실제보다 높게 보므로 여유를 그만큼 덜 잡아도 되는지 따로 따져야 한다."

2. 날짜를 섞어서 나눈 시험에서는 나무의 오차가 2,211인데 미래 시험에서는 2,635로 커졌다. ① 섞으면 나무에게 어떤 '도움'이 생기는지 쓰시오. ② train_test_split 의 기본값(shuffle=True)이 맞는 자료와 어긋나는 자료를 하나씩 들고, 오늘 프로젝트에서는 어떻게 나눠야 하는지 쓰시오.
📖 모범 답안

① 섞으면 시험 날의 바로 앞뒤 날(같은 해, 비슷한 수준)이 훈련에 들어간다. 나무는 그 해의 수준을 이웃에서 베낄 수 있다. 미래 시험에는 그런 이웃이 없다 — 2024·2025 는 통째로 훈련 밖이라, 나무는 2023년까지의 갈래에 그 날을 떨어뜨릴 수밖에 없다.

② 맞는 자료: 행이 서로 기대지 않는 자료 — 서로 다른 사람이 답한 설문, 서로 다른 환자의 검사 기록처럼 한 행이 다른 행의 값을 알려 주지 않는 경우. 어긋나는 자료: 내일·내년을 예측하는 시간 자료 — 오늘 우리 전력 수요처럼 이웃 날이 서로를 알려 주는 경우. 섞으면 성적이 부풀려진다(나무 2,211 대 미래 시험 2,635).

오늘 프로젝트는 내년을 맞히는 것이 목적이므로 연도로 직접 나눈다 — 표.index[표["연도"] <= 2023]. shuffle=False 로 섞기를 꺼도 되지만(그때는 회귀 2,617 · 나무 2,682) 어디서 잘랐는지가 코드에 드러나지 않으므로, 목적이 고른 경계를 직접 적는 편이 낫다.

3. 미래 시험에서 회귀의 치우침(실제 − 예측의 평균)은 −1,197MW, 나무는 −358MW다. ① '−'가 뜻하는 것을 쓰고, ② 두 방법의 치우침이 이렇게 다른 까닭을 [2]의 숫자로 설명하시오. ③ 오차만 보고 "두 방법은 비슷하다"고 적으면 무엇을 놓치는지 쓰시오.
📖 모범 답안

① 치우침 = 실제 − 예측의 평균이므로 음수는 예측이 실제보다 컸다는 뜻이다. 둘 다 2024~2025 를 실제보다 높게 봤고, 회귀가 세 배 넘게 높게 봤다.

② 회귀에는 '연도' 칸이 있어 2018~2023 에서 한 해에 +369MW 라는 기울기를 배우고, 2024·2025 에도 그 기울기를 그대로 이어 긋는다. 그런데 실제 하루 평균 수요는 2022년 65,574MW 뒤로 64,722 → 64,534 → 64,503MW 로 평평해졌다. 그래서 연장선이 넘쳤고, 멀어질수록 더 넘친다 (2024 −788 → 2025 −1,607). 나무는 '연도 2025' 를 받아도 훈련에서 본 적 없는 값이라 훈련 마지막 갈래에 그대로 떨어뜨린다 — 추세를 잇지 않으므로 덜 넘쳤고(−366 → −350) 두 해가 거의 같다.

③ 평균 절대 오차는 절댓값을 씌우므로 방향이 사라진다. 2,681 과 2,635 는 46MW 차이지만 치우침은 839MW 차이다. 오차만 보면 '비슷한 두 모델'이고, 치우침을 보면 '한 쪽은 해마다 더 크게 넘치는 모델'이다 — 내년 수요에 맞춰 발전 계획을 세운다면 이 차이가 오차 46MW 보다 훨씬 중요하다.

4. 코드 ②의 (가)에서 회귀에서만 '연도'를 빼자 미래 오차가 2,681 → 2,428 로 줄어 나무(2,635)를 이겼다. ① 이 비교로 "회귀가 더 나은 방법이다"라고 쓸 수 있는지 답하고, ② 이 비교가 실제로 잰 것이 무엇인지 쓰시오. ③ 한편 회귀에는 냉방·난방도일을, 나무에는 기온 그대로를 주었다. 이것도 '같은 재료' 조건을 어긴 것인가? 더 엄격하게 비교하려면 무엇을 더 돌려 보아야 하는지 쓰시오.
📖 모범 답안

① 쓸 수 없다. '같은 재료' 레인을 어겼다 — 두 모델이 받은 정보가 달랐으므로 회귀의 칩이 출발선 앞에 나와 있는 상태다. 공정하게 같은 정보를 주면 회귀 2,681 · 나무 2,635 로 거의 같다(46MW).

② 이 비교가 잰 것은 '연도(추세) 칸이 이 기간의 미래 예측에 도움이 됐나 해가 됐나'이지 회귀와 나무의 차이가 아니다. 덧붙여, 재료를 빼앗긴 쪽이 더 잘했다는 것 자체가 결과다 — 2022 뒤 추세가 꺾였으므로 이 기간에는 추세를 이어 쓰지 않는 편이 나았다. 두 가방에서 함께 빼면 회귀 2,428 · 나무 2,480 으로 둘 다 좋아진다.

③ 어기지 않았다. 냉방도일·난방도일은 기온으로 만든 식이므로 담긴 정보가 같고 모양만 다르다. 회귀는 사람이 정한 기준 18℃ 에 묶이고 나무는 자를 자리를 스스로 찾는다는 차이가 있을 뿐이다. 더 엄격하게 하려면 회귀에 기온만 준 판과 나무에 도일도 준 판을 함께 돌려, 차이가 재료의 모양 때문인지 방법 때문인지 갈라 본다.

5. 빈칸 ②로 나무의 깊이를 3 → 6 → 10 으로 키우자 미래 오차가 3,715 → 2,635 → 2,501 로 줄었다. ① 깊이를 더 키우면 계단의 천장도 사라지겠는지 답하고, ② 해마다 오차와 치우침으로 근거를 대시오. ③ 코드 ④의 숲(나무 50그루)은 이 문제를 풀어 주는지도 함께 쓰시오.
📖 모범 답안

① 사라지지 않는다. 깊이를 키우면 계단의 수는 늘지만, 어느 계단의 값도 그 잎에 모인 훈련 날들의 평균이다. 훈련 기간에 있던 값들의 평균은 결코 훈련 최댓값 위로 올라갈 수 없다. 깊이 6 나무의 천장은 79,514MW 로, 훈련 최댓값 83,011 에도 시험 최댓값 83,203 에도 못 미친다.

② 깊이 10 에서도 2024(2,421)보다 2025(2,581)가 더 틀리고, 치우침은 2024 −718 → 2025 −943 으로 벌어진다. 전체 치우침도 깊이 3 −14 · 깊이 6 −358 · 깊이 10 −830 으로 오히려 커졌다 — 깊이를 키운 것은 훈련 기간을 더 촘촘히 외운 것이지 훈련 밖을 알게 된 것이 아니다.

③ 숲도 마찬가지다. 나무 50그루의 평균은 미래 오차 2,456 로 한 그루보다 낫지만, 치우침은 −766 이고 예측 최댓값은 79,110 으로 훈련 최댓값 83,011 아래다. 계단을 여럿 모아 평균을 내면 계단이 매끈해질 뿐, 본 적 없는 높이는 여전히 모른다.

6. "평균 절대 오차가 작은 쪽이 더 좋은 방법이다"가 틀릴 수 있는 프로젝트 목적을 하나 들고 까닭을 쓰시오. 그리고 그 목적에서는 어떤 잣대로 두 방법을 견주어야 하는지 한 줄로 적으시오.
📖 모범 답안

예 1 — 여름 최대 전력에 대비하는 목적. 전력 계통은 가장 높은 날 하루를 못 맞히면 정전이 난다. 평균이 아무리 좋아도 크게 빗나가는 날이 문제다. 잣대: 가장 크게 빗나간 날의 오차 — 판에서 이 잣대로 바꾸면 회귀 10,118 · 나무 10,021 이다. 또는 더운 날(28℃ 이상)만 따로 재는 잣대.

예 2 — '기온 1℃에 몇 MW' 라는 결론 문장이 목적일 때. 이때는 모델이 내놓는 예측값이 아니라 계수를 말로 옮길 수 있는가가 쓸모를 정한다. 오차가 조금 커도 설명할 수 있는 회귀가 낫다. 잣대: 오차 옆에 '한 문장으로 옮길 수 있나'를 함께 적는다.

예 3 — 한쪽으로 치우친 오차가 비싼 목적. 수요를 낮게 보면 예비력이 모자라고 높게 보면 발전기를 헛돌린다 — 둘의 값이 다르다. 잣대: 치우침, 또는 방향마다 다른 벌점을 주는 잣대.

+
더 알아보기

겨루기 밖의 이야기 셋

예측 대회 다섯 번 — 무엇이 이겼나M-대회(마크리다키스 대회) · 상위 방법의 계열1982M1통계1,001개 시계열 — 간단한 방법이 복잡한 방법에 뒤지지 않았다1993M2통계실시간으로 다시 겨뤘다 — 결론은 M1 과 같았다2000M3통계3,003개 시계열 — '단순함이 이긴다'가 다시 확인됐다2018M4섞은 것10만 개 시계열 — 우승은 지수평활과 신경망을 섞은 방법2020M5나무 계열월마트 판매 — 기울기 부스팅 나무가 상위를 채웠다같은 대회, 같은 자를 쓰고도 이긴 계열이 바뀐다 — 자료와 물음이 다르기 때문이다.
역사

예측 대회의 오랜 결론

1982년, 그리스 출신 경영학자 스피로스 마크리다키스는 예측 방법들을 한자리에 모아 겨루게 하는 대회를 열었습니다. 같은 시계열을 모두에게 주고, 같은 기간을 맞히게 하고, 같은 잣대로 채점하는 — 오늘 우리가 '네 레인을 맞춘다'고 부른 바로 그 일을 대회 규칙으로 못 박은 것입니다.

결과는 오랫동안 한 방향이었습니다. M1(1982) · M2(1993) · M3(2000)에서 복잡한 방법이 간단한 방법을 확실히 이기지 못했지요. 그런데 M4(2018)에서 흐름이 갈립니다 — 우승은 순수 기계학습이 아니라 지수평활(통계)과 신경망을 섞은 방법이었고, 2위도 여러 통계 방법을 가중 평균한 것이었습니다. 그리고 M5(2020, 월마트 판매 자료)에서는 기울기 부스팅 나무 계열이 상위를 채웠습니다.

같은 규칙 아래에서도 이긴 계열이 대회마다 바뀝니다. '기계학습이 통계보다 낫다' 같은 문장은 어느 자료, 어느 물음에서를 빼면 아무 뜻이 없다는 뜻이지요. 오늘 우리 자료에서도 공정하게 재면 두 방법의 차이는 46MW 였습니다.

도해: 대회 다섯 번의 연도와 상위 방법의 계열을 연표로 그렸다. · 출처: M-대회 공식 보고(M1 은 Journal of Forecasting 1982, M2~M5 는 International Journal of Forecasting 의 대회 보고·특집호)

같은 2,681MW, 다른 백분율평균 절대 오차를 무엇으로 나누느냐가 크기를 바꾼다2024년 하루 평균 64,534MW4.2%시험 기간 가장 높았던 날 83,203MW3.2%가게에서 이틀을 틀렸다면같은 '2개 차이'가 분모에 따라 이렇게 변한다100개 판 날2%5개 판 날40%0개 판 날∞나눌 수 없다0 에 가까운 날이 있으면 백분율 오차는 터진다 — 분모를 늘 함께 적는다.
방법 더 깊이

2,681MW 는 큰 오차인가 — 백분율로 옮길 때의 함정

오차를 MW 로 말하면 전력을 모르는 사람에게는 감이 오지 않습니다. 그래서 흔히 평균 수요로 나눠 백분율로 바꿉니다. 이것을 백분율 오차(MAPE)라고 부르지요. 규모가 다른 문제끼리 견줄 수 있다는 것이 장점입니다 — 전력 수요와 편의점 매출을 같은 자리에 놓을 수 있으니까요.

그런데 무엇으로 나누느냐가 크기를 바꿉니다. 같은 2,681MW 를 2024년 하루 평균(64,534MW)으로 나누면 4.2%, 시험 기간 가장 높았던 날(83,203MW)로 나누면 3.2% 입니다. 보고서에 '4.2%' 만 적고 분모를 빼면, 읽는 사람은 어느 쪽인지 알 수 없습니다.

더 큰 함정은 분모가 0 에 가까울 때입니다. 하루에 100개 파는 가게에서 2개를 틀리면 2% 지만, 5개 파는 날 2개를 틀리면 40% 이고, 0개 판 날에는 나눌 수조차 없습니다. 게다가 백분율 오차는 낮게 예측한 쪽을 덜 벌합니다 — 예측이 0 이면 오차가 100% 를 넘지 못하지만, 높게 예측하면 몇백 %도 될 수 있으니까요. 잣대를 고를 때도 목적을 먼저 봐야 하는 까닭입니다.

도해: 같은 2,681MW 오차를 두 분모로 나눈 띠와, 가게의 '2개 차이'가 분모에 따라 달라지는 모습. · 수치: 오차 2,681MW 와 분모 64,534 · 83,203MW 는 이 차시의 원장 실측값이다.

하루 전 예측과 예비력계통 운영자는 내일 24시간 수요를 미리 그려 발전 계획을 세운다(세로 = 수요)0시6시12시18시23시실제하루 전 예측사이의 띠 = 예비력이 메우는 몫평균을 잘 맞혀도 한 날 크게 빗나가면 비싸다이 차시의 회귀가 가장 크게 빗나간 날은 10,118MW —2025년 하루 평균 수요(64,503MW)의 15.7% 다.그래서 계통 쪽 잣대는 평균이 아니라 '가장 크게 빗나간 날'에 가깝다.
현장

하루 전 수요 예측 — 계통 운영자의 숙제

우리는 하루 평균을 맞혔지만, 전력을 실제로 운영하는 사람은 내일 24시간을 시각마다 맞혀야 합니다. 발전기는 버튼 하나로 켜지지 않습니다 — 큰 발전기는 데우는 데 몇 시간이 걸리지요. 그래서 계통 운영자는 하루 전에 내일 수요 곡선을 그려 두고, 그 곡선에 맞춰 어느 발전기를 언제 돌릴지 미리 정합니다.

예측이 빗나가면 그 몫은 예비력이 메웁니다. 예비력은 '언제든 더 낼 수 있게 비워 둔 발전 능력'인데, 비워 두는 것 자체가 비용이고 급히 올려 쓰는 발전기는 대개 더 비쌉니다. 그래서 이 현장에서는 평균적으로 잘 맞히는 것보다 크게 빗나가는 날이 적은 것이 중요합니다.

오늘 우리 회귀가 가장 크게 빗나간 날의 오차는 10,118MW 였습니다. 2025년 하루 평균 수요(64,503MW)의 15.7% 지요. 평균 절대 오차 2,681MW(4.2%)만 보고했다면 이 하루는 보고서에 한 줄도 남지 않습니다. 잣대 하나가 보여 주는 것과 가리는 것을 함께 적어야 하는 까닭입니다.

도해: 하루 24시간의 실제 곡선과 하루 전 예측 곡선, 그 사이 띠를 그린 모식도다 — 곡선의 모양만 보이고 값은 싣지 않았다. · 수치: 10,118MW · 64,503MW 는 이 차시의 원장 실측값이다.