본문 바로가기
두두 IT/머신런닝(ML)

모델의 정확도 평가(accuracy evaluating)

by DoDo's 2026. 5. 17.
반응형

"모델 채점하기(정확도 평가, Accuracy Evaluating)"에 대해 아주 자세히 다룹니다.

이전 영상에서 우리가 모델에게 모의고사(X_test)를 풀게 하고 답안지(y_pred)를 받아왔죠? 이제 그 답안지가 실제 정답(y_test)과 얼마나 비슷한지 수학적으로 채점하는 4가지 방법을 배울 차례입니다.

영상에서는 개념만 가볍게 훑고 지나갔지만, 실무에서는 이 지표들의 의미를 정확히 아는 것이 매우 중요하므로 제가 꼼꼼하게 보충 설명을 채워 넣었습니다!


1. 📖 이론: 회귀 모델을 채점하는 4가지 방법

우리가 만든 건 연속된 숫자를 맞추는 '회귀(Regression)' 모델입니다. 회귀 모델의 성적은 기본적으로 오차(에러, Error = 정답과 예측값의 차이)가 얼마나 '작은지'로 판단합니다. 오차가 작을수록 훌륭한 모델이죠!

  1. MAE (Mean Absolute Error, 평균 절대 오차):
    • 의미: (정답 - 예측값)의 차이를 절댓값으로 바꾼 뒤, 전부 더해서 평균을 낸 것입니다.
    • 해석: "우리 모델은 평균적으로 실제 정답과 O분 정도 차이가 난다"라고 아주 직관적으로 설명할 수 있어서 가장 많이 쓰입니다.
  2. MSE (Mean Squared Error, 평균 제곱 오차):
    • 의미: 오차를 '제곱'해서 평균을 낸 값입니다.
    • 해석: 오차를 제곱하기 때문에, 만약 모델이 정답과 엄청나게 크게 틀린 예측을 했다면 페널티를 아주 강하게 줍니다. 값이 클수록 모델이 엉뚱한 예측을 종종 한다는 뜻입니다.
  3. RMSE (Root Mean Squared Error, 평균 제곱근 오차):
    • 의미: MSE 값에 루트(√)를 씌운 것입니다.
    • 해석: MSE는 제곱을 하다 보니 값이 너무 커져서 현실적인 수치로 와닿지 않는데, 여기에 루트를 씌워 원래 데이터와 단위를 맞춰준(예: 분 단위) 지표입니다.
  4. R² (R-Squared, 결정 계수):
    • 의미: 다른 지표들과 달리 에러율이 아니라 '설명력(정확도)'을 나타냅니다.
    • 해석: 최고점은 1.0(100%)이며, 1에 가까울수록 모델이 데이터를 완벽하게 설명하고 예측한다는 뜻입니다. (0 이하면 그냥 평균값으로 찍는 것보다 못한 엉망인 모델이라는 뜻입니다.)

2. 💻 실전 코드 & 상세 주석

강사님이 말씀하신 것처럼, 이 복잡한 수학 공식들을 우리가 직접 계산할 필요는 전혀 없습니다! scikit-learn과 numpy라는 마법의 도구가 단 몇 줄의 코드로 다 계산해 줍니다.

Python
 
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. 📝 실행 후 결과 값 및 분석 (영상 기준 데이터)

위 코드를 실행하면 아래와 같은 수치들이 나오게 됩니다. (영상에서 강사님이 설명하신 대략적인 수치를 기반으로 재구성했습니다.)

Plaintext
 
--- 📊 머신러닝 모델 채점 결과 (성적표) ---
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(넘파이)에 대해 배운다고 하니, 계속해서 즐겁게 따라와 주세요! 화이팅! 🚀

반응형