이 모듈의 도달 목표

예측값과 오차 이해하기

특성과 가중치로 예측값을 만들고 정답과 비교해 오차의 크기·방향과 대표 평가값을 해석합니다.

결과물 · 선형 예측 오차 분석기
약 4~6시간
  • 특성·가중치·편향으로 선형 예측값을 계산한다
  • 예측-정답으로 부호 있는 오차의 방향을 해석한다
  • 절대 오차와 제곱 오차가 방향을 제거하는 방식을 설명한다
  • MAE와 가장 큰 실패 사례로 여러 예측을 평가한다
01

예측은 입력에 가중치를 적용한 계산 결과

가장 단순한 선형 모델은 각 특성에 가중치를 곱해 더하고 편향을 더해 예측값을 만듭니다. 아직 학습하지 않은 가중치라도 이 계산을 통해 입력이 어떻게 출력으로 바뀌는지 볼 수 있습니다.

일상에서 보면과목별 점수에 서로 다른 반영 비율을 곱해 최종 점수를 계산하는 것과 같습니다.
import numpy as np
features = np.array([2.0, 3.0])
weights = np.array([0.5, 1.0])
bias = 1.0
prediction = features @ weights + bias
print(prediction)
실행 결과
5.0
한 줄씩 보기
  1. 두 특성을 입력으로 준비합니다.
  2. 각 특성의 영향인 가중치를 준비합니다.
  3. 내적에 기본값인 편향을 더합니다.
  4. 하나의 예측값 5를 얻습니다.
직접 값 바꾸기첫 번째 가중치를 0으로 바꿔 첫 특성이 예측에 주는 영향을 없애 보세요.
흔한 실수가중치 벡터의 길이는 특성 수와 같아야 합니다.

짧은 확인편향을 1만큼 늘리면 모든 예측값은 얼마나 변할까요?

02

정답은 예측을 비교할 기준

target은 실제로 맞혀야 하는 값이고 prediction은 모델이 계산한 값입니다. 입력과 정답은 한 쌍이며, 같은 샘플 순서를 유지해야 올바르게 비교할 수 있습니다.

일상에서 보면문제마다 학생 답과 정답표의 같은 번호를 나란히 비교하는 것과 같습니다.
import numpy as np
predictions = np.array([2.5, 4.0, 5.5])
targets = np.array([3.0, 5.0, 5.0])
print(predictions.shape, targets.shape)
실행 결과
(3,) (3,)
한 줄씩 보기
  1. 세 샘플의 예측을 준비합니다.
  2. 같은 세 샘플의 정답을 준비합니다.
  3. 두 배열의 shape가 같은지 확인합니다.
직접 값 바꾸기정답 순서를 바꾸면 오차가 왜 잘못 연결되는지 설명해 보세요.
흔한 실수예측과 정답의 샘플 순서가 다르면 shape가 같아도 의미 없는 오차가 계산됩니다.

짧은 확인예측이 5개라면 비교할 정답은 몇 개여야 할까요?

03

부호 있는 오차는 크기와 방향을 함께 말한다

이 모듈에서는 error = prediction - target으로 약속합니다. 양수면 실제보다 크게 예측한 과대 예측, 음수면 작게 예측한 과소 예측, 0이면 정확한 예측입니다.

일상에서 보면목표 지점보다 오른쪽으로 2m 지나치면 +2, 왼쪽으로 1m 모자라면 -1로 기록하는 것과 같습니다.
import numpy as np
predictions = np.array([5.0, 3.0, 7.0])
targets = np.array([4.0, 3.0, 8.0])
errors = predictions - targets
print(errors.tolist())
실행 결과
[1.0, 0.0, -1.0]
한 줄씩 보기
  1. 예측과 정답을 같은 순서로 둡니다.
  2. 예측에서 정답을 뺍니다.
  3. +1은 과대, 0은 정확, -1은 과소입니다.
직접 값 바꾸기prediction과 target의 뺄셈 순서를 바꾸면 모든 부호가 어떻게 달라지는지 확인하세요.
흔한 실수오차 정의를 중간에 target - prediction으로 바꾸면 방향 해석이 반대가 됩니다.

짧은 확인오차가 -3이면 실제보다 크게 예측했을까요, 작게 예측했을까요?

04

절댓값과 제곱은 오차 방향을 제거한다

부호 있는 오차를 그대로 더하면 +와 -가 서로 지워질 수 있습니다. 절대 오차는 abs(error), 제곱 오차는 error²로 모두 0 이상이며 예측이 얼마나 멀리 벗어났는지 비교하게 합니다.

일상에서 보면동쪽 3m와 서쪽 3m를 합쳐 이동 거리가 0이라고 하지 않고 각각 3m로 세는 것과 같습니다.
import numpy as np
errors = np.array([-2.0, 0.0, 3.0])
print(np.abs(errors).tolist())
print((errors ** 2).tolist())
실행 결과
[2.0, 0.0, 3.0]
[4.0, 0.0, 9.0]
한 줄씩 보기
  1. 방향이 다른 세 오차를 준비합니다.
  2. 절댓값은 부호만 제거합니다.
  3. 제곱은 큰 오차를 더 크게 만듭니다.
직접 값 바꾸기오차 1과 4의 절대값 비율과 제곱값 비율을 비교하세요.
흔한 실수부호 있는 오차의 단순 평균이 0이라고 모든 예측이 정확한 것은 아닙니다.

짧은 확인큰 오차를 더 강하게 강조하는 것은 절댓값과 제곱 중 무엇일까요?

05

MAE와 실패 사례를 함께 봐야 한다

MAE는 절대 오차의 평균으로 예측이 보통 얼마나 벗어나는지 원래 단위로 알려 줍니다. 평균 하나만 보면 특정 샘플의 큰 실패를 놓칠 수 있으므로 최대 절대 오차의 위치와 방향도 함께 확인합니다.

일상에서 보면평균 지각 시간과 가장 심하게 늦은 날을 함께 봐야 생활 패턴을 제대로 이해하는 것과 같습니다.
import numpy as np
errors = np.array([-1.0, 0.5, 3.0])
absolute = np.abs(errors)
print(absolute.mean())
print(int(np.argmax(absolute)), errors[np.argmax(absolute)])
실행 결과
1.5
2 3.0
한 줄씩 보기
  1. 오차의 크기를 절댓값으로 바꿉니다.
  2. 평균 크기 MAE를 계산합니다.
  3. 가장 큰 절대 오차의 위치를 찾습니다.
  4. 원래 부호 있는 오차로 방향을 확인합니다.
직접 값 바꾸기큰 오차 3을 10으로 바꾸면 MAE와 최대 오차가 어떻게 변하는지 확인하세요.
흔한 실수MAE만 낮다고 모든 종류의 입력에서 고르게 잘 맞는다고 단정할 수 없습니다.

짧은 확인평균 성능 외에 가장 먼저 살펴볼 실패 사례는 어떤 샘플일까요?

한 샘플의 예측과 오차

  1. 입력·가중치·편향의 역할을 구분합니다.
  2. 선형 예측식을 코드로 옮깁니다.
  3. 오차 정의의 뺄셈 순서를 확인합니다.
  4. 정확한 예측과 과대 예측 사례를 실행합니다.
import numpy as np

features = np.array(input().split(), dtype=np.float64)
weights = np.array(input().split(), dtype=np.float64)
bias, target = map(float, input().split())
prediction = np.dot(features, weights) + bias
error = prediction - target
print(f'예측: {prediction:.2f}')
print(f'오차: {error:.2f}')

핵심을 확인해 볼까요?

5문항 중 4문항 이상 정답이면 완료됩니다. 오답 후에도 다시 제출할 수 있습니다.

1선형 예측식의 올바른 형태는?
2error = prediction - target일 때 오차 +2의 의미는?
3부호 있는 오차를 그대로 평균낼 때 생길 수 있는 문제는?
4MAE가 나타내는 것은?
5MAE와 함께 최대 절대 오차 샘플을 확인하는 이유는?