본문 바로가기
데이터분석/서적 리뷰

분류 모델 평가 지표 정리 (with 파이썬 머신러닝 완벽가이드)

by Kc93 2023. 11. 30.
728x90
반응형

 

 

책표지

 

이진 분류의 경우 데이터의 구성에 따라 ML Model 성능을 왜곡할 수 있기 때문에
정확도 수치 하나만 가지고 성능을 평가하지 않는다.

 

이 문구를 통해 평가 지표에 대한 공부의 필요성을 느꼈다.

분류 모델에서 대표적인 평가 지표를 정리해봤다.

 


 

정확도(Accuracy)

  • 직관적으로 모델 예측 성능을 나타내는 평가 지표.

정확도 공식

  • 불균형한 레이블 값 분포에서 모델 성능을 판단할 경우, 적합한 평가 지표가 아니다.
  • 정확도는 데이터 분포도가 균일할 때 사용

 


 

혼동행렬(오차행렬) Confusion Matrix

  Negative Positive
Negative TN 예측 : Negative 실제 : Negative FP 예측 : Positive 실제 : Negative
Positive FN 예측 : Negative 실제 : Positive TP 예측 : Positive 실제 : Positive
  • 분류 모델이 예측을 수행하면서 얼마나 헷갈리고 있는지 함께 보여주는 지표
  • 이진 분류에서 성능 지표로 잘 활용

불균형한 이진 분류 데이터 세트에서는
Positive 데이터 건수가 매우 작기 때문에

데이터에 기반한 ML 알고리즘은 Positive보다는
Negative로 예측 정확도가 높아지는 경향이 발생.

결과적으로 정확도 지표는
비대칭한 데이터 세트에서 Positive에 대한
예측 정확도를 판단하지 못한 채

Negative에 대한 예측 정확도만으로도
분류의 정확도가 매우 높게 나타나는
수치적인 판단 오류를 일으킨다.  

from sklearn.metrics import confusion_matrix

 


 

정밀도, 재현율 Precision, Recall

  • Positive 데이터 세트의 예측 성능에 좀 더 초점을 맞춘 평가 지표
    • 정밀도 : 예측을 Positive로 한 대상 중에 예측과 같이 실제 값이 Positive로 일치한 데이터의 비율  
      • Positive 예측 성능을 더욱 정밀하게 측정하기 위한 평가 지표로 “양성 예측도”라고도 불림.
      • Example : 스팸메일 여부 판단 모델,
      • FP(실제 Negative, 예측 Positive)를 낮추는데
from sklearn.metrics import precision_score
  • 재현율: 실제 값이 Positive인 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율
    • 민감도(Sensitivity) 또는 TPR(True Positive Rate)라고도 불림
    • 재현율이 중요 지표인 경우는 실제 Positive 양성 데이터를 Negative로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우.
    • Example : 암 판단 모델, 금융 사기 적발 모델
    • FN(실제 Positive, 예측 Negative)를 낮추는데
from sklearn.metrics import recall_score
    • 재현율과 정밀도는 서로 보완적인 지표로 분류의 성능을 평가하는 데 적용
      • 가장 좋은 성능평가는 재현율과 정밀도 모두 높은 수치를 얻는 것
      • 둘 중 어느 한 평가 지표만 매우 높고 다른 수치는 매우 낮은 결과를 나타내는 경우는 바람직하지 않다.

 


 

정밀도, 재현율 트레이드오프(Trade-off)

  • 분류하려는 업무의 특성상 정밀도 또는 재현율이 특별히 강조돼야 할 경우 분류의 결정 임곗값(Thereshold)을 조정해 정밀도 또는 재현율의 수치를 높일 수 있다.
    • 디폴트는 0.5로 가정
    • 하지만 한쪽을 보완하면 한쪽이 떨어진다. 이를 트레이드오프라고 부른다
from sklearn.preprocessing import Binarizer

#  입력값이 threshold보다 같거나 작으면 0, 크면 1 반환
binarizer = Binarizer(threshold=1.1)
  • 임계값을 낮추면 True값이 많아진다. (좀 더 너그럽게)
    • 너그럽게 True로 판정한다.
    • 상대적으로 재현율(실제 값이 Positive인 대상 중 예측과 실제 값이 Positive 비율) 값이 높아진다.
  • 임계값을 높이면 False값이 많아진다. (좀 더 엄격하게)
    • 엄격하게 False로 판정한다.
    • 상대적으로 정밀도(예측을 Positive로 한 대상 중에 예측과 같이 실제 값이 Positive 비율) 값이 높아진다.
  • 임계값 변화에 따른 평가 지표 값 관련 API
from sklearn.metrics import precision_recall_curve
  • 결국 이러한 변경은 업무 환경에 맞게 두 개의 수치를 상호 보완할 수 있는 수준에서 적용돼야 한다.
  • 단순히 하나의 성능 지표 수치를 높이기 위한 수단으로 사용돼서는 안 된다.

 


 

F1 Score

  • 트레이드오프는 단순 숫자놀이.
  • 이를 보완한 지표
  • 정밀도와 재현율을 결합한 지표.
  • 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가진다.
  • 임계값이 높아지면 F1의 값도 올라가지만 재현율이 크게 감소한다.

F1 공식

from sklearn.metrics import f1_score

 


 

ROC 곡선과 AUC

  • ROC(Receiver Operating Characteristic Curve) 곡선과 이에 기반한 AUC(Area Under Curve) 스코어는 이진 분류의 예측 성능 측정에서 중요하게 사용되는 지표.
  • ROC 곡선은 FPR(False Positive Rate)이 변할 때 TPR(True Positive Rate)이 어떻게 변하는지를 나타내는 곡선.
    • FPR를 x 축, TPR를 y축. 축의 수치는 비율이다. 0~100%
    • TPR은 재현율. FPR은 (100-특이성), 특이성은 혼동행렬 수식 참고
from sklearn.metrics import roc_curve
fprs, tprs, thresholds = roc_curve(y_test, pred_proba)
  • 임계값에 따라 변화되는 수치들을 시각화한 게 ROC 곡선
  • ROC 곡선자체는 두 수치의 변화값을 보는 데 이용.
  • 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC 값으로 결정.
from sklearn.metrics import roc_auc_score
  • 일반적으로 1에 가까울수록 좋은 수치.
  • 보통의 분류는 0.5 이상의 AUC 값을 가진다.

 


https://www.yes24.com/Product/Goods/108824557

 

파이썬 머신러닝 완벽 가이드 - 예스24

자세한 이론 설명과 파이썬 실습을 통해 머신러닝을 완벽하게 배울 수 있다!『파이썬 머신러닝 완벽 가이드』는 이론 위주의 머신러닝 책에서 탈피해, 다양한 실전 예제를 직접 구현해 보면서

www.yes24.com

 

반응형

댓글