회귀(Regression) 모델

“이 데이터가 얼마인지(숫자값) 예측하는 모델”

즉: 결과값이 숫자형(연속형) 데이터

(예: 집값, 점수, 온도, 판매량 등)

🔹 예시

공부시간 점수

20시간 90점
10시간 70점
  • 이 데이터를 학습해서
  • “15시간 공부한 학생은 몇 점일까?” 를 예측하는 문제 👉 회귀 문제

🔹 대표 알고리

  • Linear Regression (선형 회귀)
  • Decision Tree Regressor
  • Random Forest Regressor
  • K-Nearest Regressor
  • XGBoost Regressor

🔹 성능 평가 지표

  • MAE (평균 절대 오차)
  • MSE (평균 제곱 오차)
  • RMSE (제곱근 평균 제곱 오차)
  • R² (결정계수)

회귀 모델 평가란?

모델이 예측한 값(ŷ) 과 실제 값(y) 의 차이, 즉 오차(error) 를 계산해서

모델이 얼마나 정확하게 예측했는지 평가하는 과정이에요.

결국 회귀 모델의 평가는 “오차들의 평균”을 구하는 과정

💡핵심 아이디어

  • 회귀 문제에서는 정답이 숫자로 되어 있음
  • (예: 키, 집값, 점수, 온도 등)
  • 예측한 숫자와 실제 숫자는 완전히 같을 수 없어요 → 항상 차이(오차) 가 생긴다
  • 그래서 “오차가 얼마나 작은가”로 모델의 성능을 판단

📊 성가 평가 지표 (자주 쓰는 방법)

평가 지표 의미 해석 기준

MAE (Mean Absolute Error) 오차의 절댓값 평균 → 예측이 실제와 얼마나 떨어져 있는지 작을수록 좋음
MSE (Mean Squared Error) 오차를 제곱해서 평균 → 큰 오차에 더 큰 패널티 작을수록 좋음
RMSE (Root Mean Squared Error) MSE의 제곱근 → 실제 단위와 같아 이해 쉬움 작을수록 좋음
R² (결정계수) 예측이 실제 데이터를 얼마나 잘 설명하는가 (0~1) 1에 가까울수록 좋음

실제 값(y) 예측 값(ŷ) 오차y-ŷ

10 12 +2
15 14 -1
20 19 -1
  • MAE = (2 + 1 + 1) / 3 = 1.33
  • MSE = (4 + 1 + 1) / 3 = 2.0
  • RMSE = √2.0 = 1.41

💡 핵심 정리

  • 오차 계열(MAE, MSE, RMSE) → 작을수록 모델이 실제값에 더 가깝다
  • 결정계수(R²) → 클수록 모델이 전체 데이터를 더 잘 설명한다

결정계수 (R-squared)

모델이 실제 데이터를 얼마나 잘 설명하고 있는지를 나타내는 수치

  • 값의 범위: 0 ~ 1 (가끔은 음수도 나올 수 있음)
  • 1에 가까울수록 → 모델이 데이터를 잘 설명함
  • 0에 가까울수록 → 모델이 거의 설명하지 못함

📊 직관적으로 이해하기

상황 설명 R² 값

모델이 완벽하게 예측함 예측값 = 실제값 → 오차 0 R² = 1.0
모델이 아무것도 못 맞춤 예측이 평균 수준으로만 나옴 R² = 0
모델이 오히려 더 나쁨 평균보다 더 엉뚱하게 예측함 R² < 0

1) MAE(Mean Absolute Error)

# 모듈 불러오기
from sklearn.metrics import mean_absolute_error

# 성능 평가
print('* MAE:', mean_absolute_error(y_test, y_pred))

2) MSE(Mean Squared Error)

# 모듈 불러오기
from sklearn.metrics import mean_squared_error

# 성능 평가
print('* MSE:', mean_squared_error(y_test, y_pred))

3) RMSE(Root Mean Squared Error)

# 모듈 불러오기
from sklearn.metrics import mean_squared_error

# 성능 평가
print('* RMSE:', np.sqrt(mean_squared_error(y_test, y_pred)))

4) MAPE(Mean Absolute Percentage Error)

# 모듈 불러오기
from sklearn.metrics import mean_absolute_percentage_error

# 성능 평가
print('* MAPE:', mean_absolute_percentage_error(y_test, y_pred))

5) R2-Score

# 모듈 불러오기
from sklearn.metrics import r2_score

# 성능 평가
print('* R-2:', r2_score(y_test, y_pred))

근데 어떨 때 어떤 식을 쓰는거지 ?

회귀(숫자 예측) 문제일 때

상황 추천 지표 이유

일반적인 회귀 문제 MAE, MSE, RMSE 오차가 얼마나 작은지 확인하기
큰 오차가 특히 중요할 때 MSE or RMSE 제곱을 하기 때문에 큰 오차에 더 큰 패널티 줌
해석을 직관적으로 하고 싶을 때 MAE “평균적으로 예측이 실제값에서 이 정도 차이 난다” 라고 바로 해석 가능
전체 설명력을 보고 싶을 때 모델이 데이터를 얼마나 잘 설명하는지(설명력) 보여줌

다온 궁금증 어쨋든 예제로 볼 때 수치로 나오는데 R2 스코어의 경우

설명력을 어디서 알 수 있는거지???

그런데 모델이 데이터를 얼마나 잘 설명하느냐는?

실제 점수(y)가 얼마나 그 선(예측값 ŷ)에 가깝게 붙어 있냐로 판단

  • 만약 모든 점이 선 위에 정확히 있다면 → 완벽히 설명 (R² = 1)
  • 점들이 선에서 멀리 떨어져 있다면 → 설명력이 낮음 (R² = 0에 가까움)

산점도를 그렸을 때

(1) 모델이 데이터를 잘 설명할 때

📈 데이터들이 선 위에 거의 다 붙어 있음

  • 예측값이 실제값과 거의 같음
  • 오차가 작음
  • R² ≈ 1.0 (100%)

→ 모델이 “공부시간과 점수의 관계”를 잘 설명했다고 말함

공부시간 →

(2) 모델이 데이터를 못 설명할 때

📉 데이터들이 선에서 멀리 흩어져 있음

  • 예측값과 실제값 차이가 큼
  • R² ≈ 0

→ 모델이 “공부시간과 점수의 관계를 거의 설명 못한다”는 뜻

공부시간 →

+ Recent posts