회귀(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 | “평균적으로 예측이 실제값에서 이 정도 차이 난다” 라고 바로 해석 가능 |
| 전체 설명력을 보고 싶을 때 | R² | 모델이 데이터를 얼마나 잘 설명하는지(설명력) 보여줌 |
다온 궁금증 어쨋든 예제로 볼 때 수치로 나오는데 R2 스코어의 경우
설명력을 어디서 알 수 있는거지???
그런데 모델이 데이터를 얼마나 잘 설명하느냐는?
실제 점수(y)가 얼마나 그 선(예측값 ŷ)에 가깝게 붙어 있냐로 판단
- 만약 모든 점이 선 위에 정확히 있다면 → 완벽히 설명 (R² = 1)
- 점들이 선에서 멀리 떨어져 있다면 → 설명력이 낮음 (R² = 0에 가까움)
산점도를 그렸을 때
(1) 모델이 데이터를 잘 설명할 때
📈 데이터들이 선 위에 거의 다 붙어 있음
- 예측값이 실제값과 거의 같음
- 오차가 작음
- R² ≈ 1.0 (100%)
→ 모델이 “공부시간과 점수의 관계”를 잘 설명했다고 말함

(2) 모델이 데이터를 못 설명할 때
📉 데이터들이 선에서 멀리 흩어져 있음
- 예측값과 실제값 차이가 큼
- R² ≈ 0
→ 모델이 “공부시간과 점수의 관계를 거의 설명 못한다”는 뜻

'KT 에이블스쿨 8기 > 머신러닝' 카테고리의 다른 글
| 머신러닝 ④ - Linear Regression(선형회귀) (0) | 2025.11.25 |
|---|---|
| 머신러닝 ① - 데이터 전처리, 모델링 (0) | 2025.11.25 |