기계학습 모델 구현 보고서

하루 최고기온과 전력 소비량 예측

여름 석 달치 기온과 전력 기록에서 직선 하나를 찾으면,
내일 쓸 전기의 양을 미리 말할 수 있을까?

지도학습 · 예측 (선형 회귀) 도구: 오렌지 환경 · 에너지 · 전기공학

기계학습 모델 구현 보고서를 어떻게 쓰는지 보여 주는 예시 프로젝트입니다. 문항을 푸는 순서와 근거를 대는 방식을 참고하되, 내용은 자신의 프로젝트로 채웁니다. 표와 그래프의 숫자는 수업에서 원리를 확인하려고 지어낸 값이며 실제 관측값이 아닙니다.

기계학습 모델 구현 보고서 예시 내려받기

이 페이지의 문항 1~8을 그대로 담은 보고서 파일입니다. 내려받아 작성 방법을 확인하고 자신의 프로젝트로 바꾸어 채웁니다.

아이디어에서 설계까지

여름이면 왜 해마다 전력 걱정을 할까?

막연한 걱정을 숫자로 바꾸기까지, 어떤 판단을 거쳤는지 따라가 봅시다.

보고서 여덟 문항은 이 여섯 단계를 따라간다 1 문제 정의 2 데이터 수집 3 데이터 전처리 4 유형· 알고리즘 선정 5 모델 생성 6 성능 평가 문항 1 · 2 문항 4 문항 3 문항 5 문항 6 · 7
문항 번호와 단계 번호가 나란히 가지 않는다. 유형과 알고리즘은 데이터를 모아 정리한 다음에 고르는 것이라 보고서에서는 문항 3이지만 실제 작업은 데이터 전처리를 마친 뒤에 한다.
1

어디서 아이디어를 얻었나 — 실생활의 불편함

폭염이 이어질 때마다 「전력 예비율이 위험하다」는 뉴스가 나온다. 더우면 전기를 많이 쓴다는 것은 누구나 알지만, 「얼마나」를 말하는 사람은 없었다. 공개된 기온·전력 자료가 있으니 그 「얼마나」를 직접 측정해 보기로 했다.

2

왜 기계학습인가 — 기준을 내가 정할 수 없다

35°C가 넘으면 10만 MWh처럼 내가 기준을 정해 버릴 수도 있다. 그런데 35와 10만은 어디서 나온 숫자인가? 근거 없이 정한 기준은 맞을 이유가 없다. 기계학습은 그 숫자를 기록에서 찾아 준다.

3

왜 예측인가 — 답의 생김새가 정한다

얻고 싶은 답은 「몇 MWh」라는 하나의 숫자다. 「많다 / 적다」로 나누면 발전 계획을 세울 수 없고, 비슷한 날끼리 묶는 것도 목적이 아니다. 얻고 싶은 답의 생김새가 방법을 정한다.

무엇을 풀 것인가

「더우면 전기를 많이 쓴다」는 이미 아는 사실 아닌가?

아는 것을 숫자로 바꿔야 미리 준비할 수 있습니다.

문항 1. 문제 정의

실생활이나 학문 분야에서 인공지능으로 해결하고자 하는 문제를 구체적으로 정의하시오. 어떤 상황에서 어떤 불편함 또는 필요가 발생하는지를 포함하여 서술하시오.

폭염이 이어지면 냉방 사용이 몰려 전력 수요가 크게 오른다. 발전 설비는 하루아침에 늘릴 수 없으므로 얼마나 필요할지를 미리 알아야 가동 계획을 세울 수 있다. 그런데 지금은 「더우면 많이 쓴다」는 방향만 알 뿐, 얼마나 많이 쓰는지를 숫자로 말하지 못한다.

그래서 하루 최고기온(°C)을 넣으면 그날 전력 소비량(MWh)을 알려 주는 모델을 만들고자 한다. 기상 예보의 기온으로 다음 날 수요를 가늠하는 것이 목적이다.

자기점검 체크리스트

  • ☑ 해결하고자 하는 문제가 실생활 또는 학문 분야와 연관되어 구체적으로 제시되어 있다.
  • ☑ 문제가 발생하는 상황(불편함·필요성)이 명확하게 서술되어 있다.

무엇이 들어가고 무엇이 나오는가

기온 예보 하나로 전력 수요를 말할 수 있을까?

입력과 출력을 못 박으면 만들 것의 윤곽이 잡힙니다.

문항 2. 모델 설명 (입력 → 출력)

구현하려는 인공지능 모델을 설명하시오. 이 모델은 어떤 데이터를 입력받아, 어떤 결과를 출력하는가? 입력과 출력을 중심으로 모델의 역할을 구체적으로 서술하시오.

  • ■ 입력: 하루 최고기온 (단위: °C) — 숫자 하나
  • ■ 출력: 예측 전력 소비량 (단위: MWh) — 숫자 하나

여름철 기록으로 기온과 전력 사이를 지나는 직선 하나를 찾아 두고, 새로운 기온이 들어오면 그 직선 위의 높이를 답으로 내놓는다. 모델이 학습하는 것은 전력 값 자체가 아니라 직선의 기울기와 높이 두 개다.

숫자 하나가 들어가서 숫자 하나가 나온다 입력 하루 최고기온 33°C 학습된 모델 전력 소비량 = 2,800 × 기온 − 7,000 출력 예측 전력 소비량 85,400 MWh 학습이 정한 것은 가운데 상자의 2,800과 −7,000, 두 개뿐이다

자기점검 체크리스트

  • ☑ 만들고자 하는 모델의 입력 데이터(종류·형태)가 명확히 제시되어 있다.
  • ☑ 모델이 출력하는 결과(레이블·수치·군집 등)가 구체적으로 서술되어 있다.
  • ☑ 입력과 출력을 통해 모델의 역할이 명확하게 드러난다.

어떤 방법으로 풀 것인가

회귀·분류·군집 중 무엇을 고를지는 취향일까?

두 번의 질문으로 유형이 정해지고, 정해진 유형이 도구를 정합니다.

문항 3. 기계학습 유형 및 구현 도구 선택

위에서 구상한 모델을 구현하기 위해 아래 ①, ② 순서대로 선택하고 그 이유를 서술하시오. ① 기계학습 유형: 지도학습과 비지도학습 중 이 모델에 적합한 유형을 선택하고, 분류·군집·예측 등의 개념을 활용하여 그 이유를 설명하시오. ② 구현 도구: ①에서 선택한 유형을 구현하기 위해 티처블머신·코랩·오렌지 중 어떤 도구를 선택했는지 밝히고, 그 이유를 서술하시오.

유형은 취향이 아니라 두 번의 질문으로 정해진다 데이터에 정답(레이블)이 함께 들어 있는가? 아니오 예 비지도학습 군집 지도학습 출력이 숫자인가, 범주인가? 숫자 범주 예측 (회귀) ↑ 이 프로젝트 분류
이 나무의 잎 세 개가 예측 · 분류 · 군집이 각각 앉는 자리다. 같은 나무에서 나뉘어 나왔다는 것이 보이면 「왜 이 방법인가」에 답할 수 있다.

① 기계학습 유형: 지도학습 — 예측 (선형 회귀)

모아 둔 자료에는 날짜마다 실제 전력 소비량이 함께 적혀 있다. 정답이 붙어 있으므로 지도학습이다. 그리고 내놓아야 할 답이 연속된 숫자이므로, 미리 정해 둔 범주(고를 수 있는 칸) 가운데 하나를 집는 분류가 아니라 수치를 맞히는 예측을 쓴다.

다른 방법이 아닌 이유: 분류로 하면 「수요 많음 / 보통 / 적음」 정도만 알 수 있는데, 발전 계획은 몇 MWh를 준비할지를 알아야 세울 수 있다. 군집은 정답을 쓰지 않고 비슷한 날끼리 묶는 방법이라, 이미 갖고 있는 전력 소비량 정답을 버리게 된다.

② 구현 도구: 오렌지(Orange)

공개 자료는 대부분 CSV로 내려받게 되어 있어, 표를 그대로 읽어 들이는 오렌지가 맞다. 선형 회귀와 산점도를 블록을 잇는 것만으로 만들 수 있고 회귀선이 데이터 위에 겹쳐 보인다. 티처블머신은 사진·소리를 다루는 도구라 표 데이터에는 맞지 않고, 코랩은 같은 일을 할 수 있지만 코드를 직접 써야 해서 이번 목적에는 과하다.

자기점검 체크리스트

  • ☑ 지도학습 또는 비지도학습 중 하나를 명확히 선택하였다.
  • ☑ 분류·군집·예측 등의 개념을 활용하여 유형 선택 이유가 논리적으로 서술되어 있다.
  • ☑ 구현 도구를 선택하고 그 이유가 기계학습 유형과 연결되어 설명되어 있다.

무엇으로 배우게 할 것인가

여름 석 달치면 충분할까?

모아 둔 범위가 곧 모델이 답할 수 있는 범위가 됩니다.

문항 4. 데이터 설명

모델 학습에 사용한 데이터를 설명하시오. 데이터의 출처·유형·수량·특성 등을 작성하고, 필요한 경우 스크린샷을 첨부하시오.

  • • 출처: 기상청 기상자료개방포털(기온) + 공공데이터포털의 전력 수요 자료(전력)
  • • 유형: 수치형 정형 데이터 (CSV, 2개 열)
  • • 수량: 여름 석 달(6~8월) 일별 자료 92행
  • • 범위: 최고기온 28°C ~ 40°C — 이 범위를 적어 두는 것이 중요하다
최고기온(°C) | 전력 소비량(MWh)
─────────────┼──────────────────
28           |  69,900
31           |  81,300
34           |  88,200
37           |  98,100
40           | 103,500
(이하 87행 생략 / 전체 92행)

실제 수행평가 때는 여기에 두 포털의 자료 내려받기 화면 및 오렌지 CSV 불러오기 화면 스크린샷을 붙입니다.

데이터를 모을 때 놓치기 쉬운 것

  • 여름만 모으면 여름만 아는 모델이 된다. 28~40°C 밖의 기온에 대해서는 근거가 하나도 없다. 범위를 좁게 잡은 것 자체는 잘못이 아니지만, 좁다는 사실을 적어 두지 않으면 잘못이 된다.
  • 날짜를 두 자료에서 맞춰 붙여야 한다. 기온과 전력을 다른 곳에서 받았으므로 같은 날끼리 짝지어야 하고, 한쪽에만 있는 날은 버린다.
  • 전력은 기온만으로 정해지지 않는다. 평일과 휴일, 산업 가동 여부가 크게 작용한다. 이 모델은 그것을 열로 넣지 않았으므로, 남는 오차의 상당 부분이 거기서 온다고 보아야 한다.
  • 공개 자료라도 이용 조건을 확인한다. 출처 표기 방식과 재배포 가능 여부가 포털마다 다르다.

자기점검 체크리스트

  • ☑ 데이터의 출처(직접 촬영·공개 데이터셋·직접 수집 등)가 명시되어 있다.
  • ☑ 데이터의 유형(이미지·텍스트·수치 등)과 수량이 구체적으로 서술되어 있다.
  • ☑ 학습에 사용된 데이터 화면 또는 데이터 목록 스크린샷이 첨부되어 있다.

모델은 무엇을 배웠는가

기온 0°C를 넣으면 전기를 −7,000 MWh 쓴다고?

학습이 찾아낸 숫자 두 개와, 그 숫자를 읽는 법을 봅시다.

문항 5. 학습 결과

수집한 데이터로 모델을 학습시킨 결과를 서술하시오. 학습이 완료된 화면 또는 학습 결과를 스크린샷으로 첨부하고, 수치나 지표를 포함하여 결과의 의미를 간략히 설명하시오.

이 결과를 직접 만들어 보려면 — 오렌지에서 잇는 순서

  1. File 블록을 놓고 날짜로 합쳐 둔 CSV를 불러온다.
  2. 열 설정에서 전력 소비량을 target으로, 최고기온을 feature로 지정한다. 이것을 빠뜨리면 무엇을 맞혀야 하는지 모델이 알 수 없다.
  3. Scatter Plot을 이어 점이 어떻게 흩어져 있는지 먼저 눈으로 본다. 직선으로 보이지 않으면 선형 회귀를 쓸 상황이 아니다.
  4. Linear Regression과 Test and Score를 잇고, 교차 검증을 켜서 R²와 평균 오차를 읽는다.
  5. Predictions에 새 기온을 넣어 실제로 답이 나오는지 확인한다.

이 상자는 보고서에 쓰는 답이 아니라 따라 해 보라는 안내다.

  • 산점도에서 점들이 한 줄로 늘어서 있어, 최고기온이 높았던 날일수록 전력 소비량도 큰 값으로 기록되어 있음을 눈으로 확인했다.
  • 학습된 회귀식: 전력 소비량 = 2,800 × 최고기온 − 7,000
  • R² = 0.92 / 평균 절대 오차 약 2,400 MWh
  • 기울기 2,800은 기온이 1°C 높았던 날들이 평균 2,800 MWh 더 많이 기록되어 있었다는 뜻이다. 이 자료만으로는 기온이 전력을 그만큼 늘렸다고 말할 수 없다 — 관찰한 것이지 조작한 것이 아니다.
  • 식의 −7,000은 「0°C일 때의 전력」이 아니라 선의 높이를 맞춰 준 숫자다. 28°C 아래는 기록이 없는 자리이므로 이 값은 해석하지 않는다.
  • R² 0.92는 학습에 쓴 28~40°C 구간에 붙은 점수이며, 그 바깥까지 보장하지 않는다.

실제 수행평가 때는 여기에 오렌지 회귀선 산점도 및 Test and Score 결과 화면 스크린샷을 붙입니다.

R²와 평균 절대 오차는 무엇을 측정하는 숫자인가

평균 절대 오차 2,400 MWh: 예측값이 실제 기록에서 평균 2,400 MWh쯤 빗나간다는 뜻이다. 단위가 MWh라 「얼마나 틀리는가」를 바로 가늠할 수 있다.

R² = 0.92: 날마다 오르내리는 전력 소비량의 92%를 최고기온만으로 설명할 수 있다는 뜻이다. 1에 가까울수록 직선이 점들을 잘 지나간다.

남은 8%에는 평일·휴일과 산업 가동처럼 열로 넣지 않은 것들이 들어 있을 것이다. R²를 더 올리고 싶다면 모델을 바꾸기 전에 무엇을 빠뜨렸는지부터 본다.

전력 소비량(MWh) 학습하지 않은 구간 학습한 구간 0 5만 10만 0 10 20 30 40 하루 최고기온(°C) 실제 겨울 기록 95,000 식이 말한 7,000
파란 굵은 선은 기록이 있는 28~40°C 구간이고, 주황 점선은 그 선을 그냥 늘여 놓은 것이다. 점선은 왼쪽으로 갈수록 내려가다 결국 0 아래로 떨어지는데, 실제 겨울 전력은 오히려 높다.

식의 −7,000은 「0°C면 전기를 음수만큼 쓴다」는 뜻이 아니다

식에 0°C를 넣으면 −7,000 MWh가 나온다. 계산해 보면 2.5°C 아래에서는 예측이 전부 음수다. 전기를 음수만큼 쓰는 일은 없으므로 이것은 모순처럼 보이지만, 실은 아주 평범한 것이다.

−7,000은 「기본으로 깔리는 전력」이 아니라 28~40°C 구간의 점들을 가장 잘 지나가도록 선의 높이를 맞춰 준 숫자다. 0°C는 기록이 하나도 없는 자리이고, 거기까지 선을 늘였을 때 나오는 값일 뿐이다.

그래서 절편을 해석할 때는 x=0이 학습 범위 안에 있는지 먼저 본다. 밖에 있다면 그 값은 해석하지 않는다.

자기점검 체크리스트

  • ☑ 학습이 완료된 모델 화면 또는 학습 결과 스크린샷이 첨부되어 있다.
  • ☑ 모델의 학습 결과를 확인할 수 있는 수치나 지표가 언급되어 있다.
  • ☑ 학습 결과의 의미(모델이 잘 학습되었는지 여부 등)가 서술되어 있다.

새로운 값을 넣으면 맞히는가

여름만 배운 모델에 겨울을 물으면 어떻게 될까?

학습 범위 안과 밖에 각각 물어보고 결과를 비교해 봅시다.

문항 6. 테스트 및 결과 분석

학습된 모델에 새로운 데이터를 직접 입력하여 성능을 테스트하시오. 테스트 전 예상했던 결과와 실제 결과를 비교하고, 차이가 발생했다면 그 원인을 분석하시오.

■ 테스트 1 — 학습 범위 안 (33°C인 여름날)

  • 예상: 약 85,400 MWh (= 2,800 × 33 − 7,000)
  • 실제 기록: 87,600 MWh
  • 차이: 2,200 MWh — 평균 절대 오차와 비슷한 정도. 예상대로 맞았다.

■ 테스트 2 — 학습 범위 밖 (5°C인 겨울날)

  • 예상: 약 7,000 MWh (= 2,800 × 5 − 7,000)
  • 실제 기록: 95,000 MWh
  • 차이: 88,000 MWh — 예측이 실제의 십분의 일도 되지 않는다. 완전히 빗나갔다.

■ 분석

두 테스트의 차이를 만든 것은 모델의 성능이 아니라 물어본 자리다. 33°C는 28~40°C 안이라 비슷한 날이 여러 번 있었지만, 5°C짜리 기록은 학습 데이터에 한 건도 없었다. 모델은 그 구간을 배운 적이 없으면서도 직선을 그대로 늘여 답을 내놓았다.

게다가 이번에는 방향까지 틀렸다. 직선은 기온이 내려가면 전력도 내려간다고 말하지만, 실제 전력 수요는 여름과 겨울에 높고 봄·가을에 낮은 U자 모양이다. 여름 구간만 잘라서 보면 오른쪽으로 오르는 직선처럼 보이지만, 그것은 U자의 오른쪽 절반만 본 것이었다. 겨울에는 냉방이 아니라 난방이 수요를 높인다.

즉 R² 0.92는 28~40°C 구간에 한해 붙은 점수였다. 모델을 쓸 때는 성능 지표만 볼 것이 아니라 지금 묻는 값이 학습 범위 안인지, 그리고 범위 밖에서도 같은 모양이 이어질 이유가 있는지를 먼저 확인해야 한다.

자기점검 체크리스트

  • ☑ 학습에 사용하지 않은 새로운 데이터로 테스트를 수행하였다.
  • ☑ 테스트 전 예상 결과와 실제 결과가 모두 서술되어 있다.
  • ☑ 예상과 실제 사이에 차이가 있다면 그 원인이 분석되어 있다. (차이가 없으면 이유 서술)

어디에 쓰고 무엇을 고칠 것인가

예측이 빗나가면 어느 쪽이 더 나쁠까?

쓸모와 한계를 나란히 놓고, 개선해도 남는 어려움까지 봅시다.

문항 7. 기대 효과 및 개선 사항

기대 효과: 이 모델을 자신의 관심 분야(예: 의료·환경·스포츠 등)에 적용한다면 어떤 효과를 기대할 수 있는지 서술하시오. 개선 사항: 현재 모델의 한계를 바탕으로, 성능을 향상시키기 위해 필요한 개선사항을 구체적으로 서술하시오.

기대 효과

관심 분야: 환경 · 에너지

기상 예보의 최고기온을 넣으면 다음 날 필요한 전력을 미리 가늠할 수 있다. 발전 계획을 미리 세워야 하는 쪽에서는 하루 앞선 숫자 하나가 큰 도움이 된다.

「더우면 많이 쓴다」는 막연한 말을 「1°C 높은 날 2,800 MWh 더」라는 측정할 수 있는 값으로 바꿔 놓은 것이 이 모델의 쓸모다. 절약 효과를 이야기할 때도 근거로 쓸 수 있다.

개선 사항

한계: 여름 석 달만 학습해 28~40°C 밖에서는 방향까지 틀린다. 기온 외에 평일·휴일, 산업 가동 같은 큰 요인이 하나도 들어 있지 않다.

개선 방향: ① 사계절 자료를 모두 넣는다 — 다만 U자 모양이므로 직선 하나로는 안 되고, 여름과 겨울을 나누어 학습하거나 곡선을 쓸 수 있는 모델로 바꿔야 한다. ② 요일과 휴일 여부를 열로 추가한다.

개선해도 남는 어려움

이 예측은 두 방향으로 틀릴 수 있는데, 두 오류의 무게가 같지 않다. 실제보다 적게 예측하면 준비한 전력이 모자라 정전으로 이어질 수 있고, 많게 예측하면 쓰지도 않을 발전을 돌려 연료와 배출을 낭비한다. 어느 쪽 오차를 더 피할 것인지는 모델이 정해 주지 않는다. 안전을 위해 넉넉히 잡을수록 환경 부담은 커지고, 환경을 위해 빠듯하게 잡을수록 정전 위험은 커진다.

변수를 늘리면 정확해지지만 왜 그 숫자가 나왔는지 설명하기는 어려워진다. 직선 하나일 때는 「기온이 1°C 높은 날은 2,800 MWh 더 쓰더라」고 말할 수 있었지만, 변수가 열 개가 되면 그런 문장을 만들 수 없다. 사람이 설명해야 하는 결정일수록 이 손해가 크다.

자기점검 체크리스트

  • ☑ 자신의 관심 분야가 명시되고, 모델 적용 시 기대되는 효과가 구체적으로 서술되어 있다.
  • ☑ 현재 모델의 한계 또는 부족한 점이 언급되어 있다.
  • ☑ 성능 향상을 위한 개선사항(데이터 확충·모델 변경·파라미터 조정 등)이 제시되어 있다.

무엇이 남았는가

만들기 전과 후, 무엇이 달라졌을까?

점수가 아니라 생각의 변화를 적는 자리입니다.

문항 8. 소감

기계학습 모델을 직접 구현하는 과정에서 달라진 생각, 어려웠던 점, 새롭게 알게 된 것, 또는 느낀 점을 자유롭게 서술하시오.

공개된 자료를 직접 내려받아 써 본 것이 처음이었다. 두 포털에서 받은 표를 날짜로 맞춰 붙이는 데 시간이 가장 많이 들었는데, 학습을 실행하는 것보다 데이터를 정리하는 일이 훨씬 오래 걸린다는 걸 알았다.

R²가 0.92로 나왔을 때는 잘 만든 줄 알았다. 그런데 겨울 기온을 넣어 보니 예측이 실제의 십분의 일도 되지 않았다. 여름 자료만 보고 있어서 U자의 오른쪽 절반을 전체라고 믿고 있었던 것이다. 자료를 어디까지 모았는지가 모델이 무엇을 아는지를 정한다는 걸 이때 실감했다.

기울기 2,800도 처음에는 「기온이 전력을 높인다」는 뜻으로 읽었는데, 관찰한 자료로는 그렇게 기록되어 있더라는 것까지만 말할 수 있다는 걸 배웠다. 다음에는 사계절 자료로 다시 만들어 보고 싶다.

자기점검 체크리스트

  • ☑ 기계학습 구현 과정에서 새롭게 알게 된 것 또는 달라진 생각이 포함되어 있다.
  • ☑ 자신의 경험을 바탕으로 진솔하게 작성되어 있다.