"모델 채점하기(정확도 평가, Accuracy Evaluating)"에 대해 아주 자세히 다룹니다.
이전 영상에서 우리가 모델에게 모의고사(X_test)를 풀게 하고 답안지(y_pred)를 받아왔죠? 이제 그 답안지가 실제 정답(y_test)과 얼마나 비슷한지 수학적으로 채점하는 4가지 방법을 배울 차례입니다.
영상에서는 개념만 가볍게 훑고 지나갔지만, 실무에서는 이 지표들의 의미를 정확히 아는 것이 매우 중요하므로 제가 꼼꼼하게 보충 설명을 채워 넣었습니다!
1. 📖 이론: 회귀 모델을 채점하는 4가지 방법
우리가 만든 건 연속된 숫자를 맞추는 '회귀(Regression)' 모델입니다. 회귀 모델의 성적은 기본적으로 오차(에러, Error = 정답과 예측값의 차이)가 얼마나 '작은지'로 판단합니다. 오차가 작을수록 훌륭한 모델이죠!
- MAE (Mean Absolute Error, 평균 절대 오차):
- 의미: (정답 - 예측값)의 차이를 절댓값으로 바꾼 뒤, 전부 더해서 평균을 낸 것입니다.
- 해석: "우리 모델은 평균적으로 실제 정답과 O분 정도 차이가 난다"라고 아주 직관적으로 설명할 수 있어서 가장 많이 쓰입니다.
- MSE (Mean Squared Error, 평균 제곱 오차):
- 의미: 오차를 '제곱'해서 평균을 낸 값입니다.
- 해석: 오차를 제곱하기 때문에, 만약 모델이 정답과 엄청나게 크게 틀린 예측을 했다면 페널티를 아주 강하게 줍니다. 값이 클수록 모델이 엉뚱한 예측을 종종 한다는 뜻입니다.
- RMSE (Root Mean Squared Error, 평균 제곱근 오차):
- 의미: MSE 값에 루트(√)를 씌운 것입니다.
- 해석: MSE는 제곱을 하다 보니 값이 너무 커져서 현실적인 수치로 와닿지 않는데, 여기에 루트를 씌워 원래 데이터와 단위를 맞춰준(예: 분 단위) 지표입니다.
- R² (R-Squared, 결정 계수):
- 의미: 다른 지표들과 달리 에러율이 아니라 '설명력(정확도)'을 나타냅니다.
- 해석: 최고점은 1.0(100%)이며, 1에 가까울수록 모델이 데이터를 완벽하게 설명하고 예측한다는 뜻입니다. (0 이하면 그냥 평균값으로 찍는 것보다 못한 엉망인 모델이라는 뜻입니다.)
2. 💻 실전 코드 & 상세 주석
강사님이 말씀하신 것처럼, 이 복잡한 수학 공식들을 우리가 직접 계산할 필요는 전혀 없습니다! scikit-learn과 numpy라는 마법의 도구가 단 몇 줄의 코드로 다 계산해 줍니다.
import numpy as np
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
# (가정: 이전 코드에서 y_test(실제 정답)와 y_pred(모델의 예측값)가 준비되어 있습니다.)
# 1. MAE (평균 절대 오차) 계산하기
mae = mean_absolute_error(y_test, y_pred)
# 2. MSE (평균 제곱 오차) 계산하기
mse = mean_squared_error(y_test, y_pred)
# 3. RMSE (평균 제곱근 오차) 계산하기
# sklearn에는 RMSE를 직접 구하는 함수가 없어서, MSE를 구한 뒤 numpy의 루트 함수(np.sqrt)를 씌워줍니다.
rmse = np.sqrt(mse)
# 4. R2 Score (결정 계수) 계산하기
r2 = r2_score(y_test, y_pred)
# 결과 출력하기 (소수점 둘째 자리까지 보기 좋게 포맷팅)
print("--- 📊 머신러닝 모델 채점 결과 (성적표) ---")
print(f"1. MAE (평균 오차) : {mae:.2f} 분")
print(f"2. MSE (제곱 오차) : {mse:.2f}")
print(f"3. RMSE (제곱근 오차) : {rmse:.2f} 분")
print(f"4. R2 Score (정확도) : {r2:.2f}")
3. 📝 실행 후 결과 값 및 분석 (영상 기준 데이터)
위 코드를 실행하면 아래와 같은 수치들이 나오게 됩니다. (영상에서 강사님이 설명하신 대략적인 수치를 기반으로 재구성했습니다.)
--- 📊 머신러닝 모델 채점 결과 (성적표) ---
1. MAE (평균 오차) : 23.00 분
2. MSE (제곱 오차) : 2209.00
3. RMSE (제곱근 오차) : 47.00 분
4. R2 Score (정확도) : 0.12
튜터의 족집게 결과 분석 🔍:
- MAE가 23분: 우리 모델은 비행기 연착 시간을 예측할 때, 실제 정답과 평균적으로 약 23분 정도 빗나간다는 뜻입니다.
- RMSE가 47분: MAE(23분)에 비해 RMSE(47분)가 훨씬 높습니다. 이는 모델이 평소에는 그럭저럭 맞추다가도, 가끔씩 정답과 엄청나게 동떨어진 '대형 오답'을 제출하는 경우가 꽤 있다는 것을 의미합니다. (아마 기상 악화 같은 돌발 변수 때문일 수 있습니다.)
- 결론: 에러율(Error)로 끝나는 지표들은 낮을수록 좋고, R2 Score는 1에 가까울수록 좋습니다. 현재 결과로 보아 우리의 첫 번째 선형회귀 모델은 아직 "완벽하게 똑똑하다"라고 말하기는 조금 아쉽네요!
💡 튜터의 마무리 팁!
강사님도 마지막에 강조하셨듯이, 한 번 모델을 만들고 "오차가 크네? 실패!"라고 좌절하는 것이 아닙니다. 지금은 '선형회귀'라는 가장 기본적인 뼈대만 사용했고 힌트 데이터도 2개밖에 없었지만, 앞으로 데이터를 더 정교하게 다듬고 더 발전된 머신러닝 알고리즘을 사용하면서 이 오차(MAE, RMSE) 숫자를 점점 줄여나가는 과정이 바로 데이터 분석가와 AI 엔지니어들의 진짜 업무랍니다!
다음 영상에서는 수학과 과학 계산의 핵심인 Numpy(넘파이)에 대해 배운다고 하니, 계속해서 즐겁게 따라와 주세요! 화이팅! 🚀
'두두 IT > 머신런닝(ML)' 카테고리의 다른 글
| TODO와 함께하는 복습 - 1 (머신러닝 분석, 데이터셋 나누기) (0) | 2026.05.25 |
|---|---|
| [ML-12] 선형모델_선형회귀 (0) | 2026.05.20 |
| 머신러닝 모델 테스트 (0) | 2026.05.17 |
| scikit-learn으로 선형회귀(linear regression) 모델 머신러닝 트레이닝 수행 (1) | 2026.05.17 |
| scikit-learn으로 트레이닝 데이터와 테스트 데이터 분할 (0) | 2026.05.17 |