에이블스쿨 6기 DX 트랙/일일 복습

성능 평가

d061120 2024. 10. 17. 21:07
  • 회귀 모델 평가
    • 회귀 모델: 수치형 값을 예측하는 것
    • 회귀 모델이 정확한 값을 예측하기는 사실상 어렵다.
    • 예측값과 실젯값에 차이(=오차)가 있을 것으로 예상
    • 예측값이 실젯값에 가까울 수록 좋은 모델이라 할 수 있음
    • → 오차로 모델 성능을 평가
  • 분류 모델 평가
    • 분류 모델: 0 또는 1인지를 예측하는 것
    • 실젯값도, 예측값도 0과 1임
    • 물론 0을 1로, 1을 0으로 예측할 수도 있음
    • 예측값이 실젯값과 많이 같을 수록 좋은 모델
    • → 정확히 예측한 비율로 모델 성능 평가

 

1. 회귀 모델 성능 평가

1. 용어

  • 실젯값: 실제로 예측하고 싶은 값, Target이자 목푯값
                 우리가 알아야 할 오차는 이 값과 예측값의 차이
  • 평균값: 이미 알고 있는, 이미 존재하고 있는 평균으로 예측한 값
                 우리가 만든 모델의 예측값이 평균값보다 오차를 얼마나 더 줄였는지가 관건
  • 예측값: 우리가 만든 모델로 새롭게 예측한 값
                 평균값보다 얼마나 잘 예측했을지를 알아봐야 함
  • 오차 = 실젯값 - 예측값

2. 회귀 평가 지표

  • MSE: Mean Squared Error
  • RMSE: Root Mean Squared Error
  • MAE: Mean Absolute Error
  • MAPE: Mean Absolute Percentage Error
  • → 주로 MAE를 사용

 

3. 결정 계수 R^2(R-Squared)

  • 전체 오차 중에서 회귀식이 잡아낸 오차 비율(일반적으로 0 ~ 1 사이)
  • 오차의 비 또는 설명력이라고 부름
  • R^2 = 1 이면 MSE = 0이고 모델이 데이터를 완벽하게 학습한 것(R^2가 완전히 1이 되는 것은 사실상 불가능)
  • R^2 = SSR / SST = 1 - (SSE / SST)

 

4. 모델 평가하기

  • 평가에 필요한 함수 호출
# 함수 불러오기
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_absolute_percentage_error
from sklearn.metrics import r2_score

 

  • 실젯값(y_test)과 예측값(y_pred)을 매개변수로 전달해 평가
# 평가하기
# mean_absolute_error(실젯값, 예측값)
print(mean_absolute_error(y_test, y_pred))
  • MSE, RMSE, MAE, MAPE는 오류(Error)이므로 값이 작을 수록 좋음
  • R2 Score는 값이 클 수록 좋음

 

2. 분류 모델 성능 평가

1. 용어

  • 정확도(Accuracy): 1과 0을 정확히 예측한 비율
  • 정밀도(Precision): 1이라 예측한 것 중에서 실제로 1인 비율(예측값 관점)
  • 재현율(Recall): 실제로 1인 것 중에서 1이라 예측한 비율(실젯값 관점)

2. 혼동행렬과 평가지표

  • TN: 음성을 음성으로 잘 예측한 것
  • FP: 음성을 양성으로 잘못 예측한 것
  • FN: 양성을 음성으로 잘못 예측한 것
  • TP: 양성을 양성으로 잘 예측한 것

2-1. 정확도

  • 가장 직관적으로 모델 성능을 확인할 수 있는 평가지표
  • Accuracy = (TN + TP) / (TN + FP + FN + TP)

2-2. 정밀도(예측 관점)

  • Precision = TP / (FP + TP)
  • 예) 암이라 예측한 환자 중 실제 암 환자 비율
    정밀도가 낮을 경우 발생하는 상황 → 암이 아닌데 암이라 진단하여 불필요한 치료 발생

2-3. 재현율(실제 관점)

  • Recall = TP / (FN + TP)
  • 예) 실제 암 환자 중 암이라고 예측한 환자 비율
    재현율이 낮을 경우 발생하는 문제 → 암 환자에게 암이 아니라 진단하여 심각한 결과 초래

※ 정밀도와 재현율은 각각 예측과 실제 관점이라는 차이가 있기 때문에 서로 반비례하는 성질을 가진다.

 

3. F1-Score

  • 정밀도와 재현율의 조화 평균
  • 분자가 같지만 분모가 다를 경우, 즉 관점이 다른 경우 조화 평균이 큰 의미를 가짐
  • 정밀도와 재현율이 적절하게 필요할 때 사용

4. 모델 평가하기

  • 평가에 필요한 함수 호출
# 함수 불러오기
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report

 

  • 실젯값(y_test)과 예측값(y_pred)을 매개변수로 전달해 평가
# 평가하기
# accuracy_score(실젯값, 예측값)
print(accuracy_score(y_test, y_pred))
print(precision_score(y_test, y_pred, average=None))
  • 정밀도와 재현율 등은 average 매개변수로 평균으로 표시할지 개별 값으로 표시할지 지정 가능

  • classification_report 함수를 사용해 한번에 여러 평가지표를 확인할 수 있음