코딜기

[Python/ML] 모델 평가(Model Evaluation) - 다중 분류 로그 손실(logloss) 본문

ML & DL Process/Model Evaluation

[Python/ML] 모델 평가(Model Evaluation) - 다중 분류 로그 손실(logloss)

코딜기 2022. 12. 22. 02:27
반응형

다중 분류의 로그 손실(logloss)이란 무엇일까요?

  • logloss는 분류 문제의 대표적인 평가지표이며 교차 엔트로피(cross-entropy)라 부르기도 합니다.
  • 실제 값을 예측하는 확률에 로그를 취하여 부호를 반전시킨 값입니다.
  • 즉, 분류 모델 자체의 잘못 분류된 수치적인 손실값(loss)을 계산합니다.
  • logloss는 낮을수록 좋은 지표입니다.

다중 분류 로그 손실 계산 수식


다중 분류 로그 손실 계산 예시

  • 예측 값은 행 데이터 수 X 클래스 수의 행렬로 계산되고, 행 데이터가 속한 클래스의 확률을 낮게 예측하면 패널티가 크게 주어집니다.
  • 또한 각 행 데이터에 대한 예측 확률의 합계는 1이 되어야 하므로 그렇지 않을 경우는 평가지표 계산에서 자동 조정됩니다.

Python (다중 분류)

from sklearn.metrics import log_loss

# 데이터 스플릿으로 y_valid와 모델 예측으로 y_pred_proba를 구한 후 실행
# 모델 검정이 없다면 y_true값으로 y_valid 대체
# y_pred_proba값은 3개 이상의 예측값 array로 되어 있어야 다중 분류의 평가지표가 됨
multi_loloss = log_loss(y_valid, y_pred_proba)
print(multi_loloss)
  • logloss를 계산하기 위해서는 확률 예측값(predict_proba)이 필요합니다. 클래스 예측값(predict)은 확률값 대신 예측된 클래스 값을 반환하기 때문에 logloss값을 계산할 수 없습니다.
  • 이진 분류와는 log_loss 함수에 부여하는 예측값 배열의 형태가 다릅니다.
  • 이진 분류에 대한 logloss는 여기를 참고하시면 됩니다.

도메인에 따라 적절한 평가 지표를 선택해서 확인해야 합니다.

 

반응형
Comments