AI/파이썬 머신러닝 완벽 가이드

평가

ardoh 2024. 5. 24. 10:32

머신러닝은 데이터 가공/변환, 모델 학습/예측, 평가 의 프로세스로 구성된다. 그 중 '분류' 의 평가 방법에 대해 알아보자.

분류의 성능 평가 지표는 정확도, 오차행렬, 정밀도, 재현율, F1 스코어, ROC AUC 가 있다.

1. 정확도

1.1 개요

정확도는 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표이다.

 

가령, 0~9 중에 7이라는 숫자를 true 로 판단하고 나머지 숫자를 인식했을 때는 false 로 판단하고 싶다고 하자. 이 때, 어떤 숫자를 인식하던지 false 라고 판단하게 된다면, 90%의 정답율을 가지게 된다. 따라서 한계가 있다. 

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

2. 오차 행렬

오차 행렬은 학습된 분류 모델이 예측을 수행하면서 얼마나 헷갈리고 있는지도 함께 보여준다. 예측 오류가 얼마나 일어나고 있는지, 어떤 유형의 예측 오류가 발생하고 있는지를 알려준다. 사이킷런은 오차 행렬을 구하기 위해 confusion_matrix() API 를 제공한다.

confustion_matrix(실제 결과, 예측 결과)

 

3. 정밀도와 재현율

정밀도와 재현율을 positive 데이터 세트의 예측 성능에 초점을 맞춘 평가 지표이다.  

3.1 정밀도

 

  • 예측을 positive 로 한 대상 중에 실제값이 positive인 비율
  • 정밀도가 중요 지표인 예시 → 일반 메일을 스팸 메일로 분류
  • FP을 낮추는 데 초점

3.2 재현율

 

  • 실제 값이 positive 인 대상 중에 예측값이 positive인 비율
  • 민감도 (sensitiviy) 또는 TPR (True Positive Rate) 이라고도 불린다.
  • 재현율이 중요 지표인 예시 → 실제 암 환자를 음성으로 잘못 판단
  • FN을 낮추는 데 초점

3.3 정밀도 / 재현율 트레이드오프

정밀도와 재현율은 상호 보완적인 지표이기 때문에 한 쪽을 높이면 다른 하나의 수치는 떨어진다.

👟 개별 데이터별 예측 확률 반환 메서드

  • predict_proba(테스트 feature 데이터 세트)
    • 사이킷런 분류 알고르짐은 예측 데이터가 특정 레이블에 속하는지를 계산하기 위해 먼저 개별 레이블별로 결정 확률을 구한다. 그리고 그 중에 예측 확률이 큰 값으로 예측한다.
    • e.g. 이진 분류 모델에서 특정 데이터가 0이 될 확률이 10%, 1이 될 확률이 90% 로 예측되었다면 최종적으로 1로 예측한다.
    • 학습이 완료된 Classifier 객체에서 호출 가능

👟 트레이드오프 방식

  1. threshold 변수를 특정 값으로 설정
  2. Binarizer 클래스를 객체로 생성
  3. fit_transform 메서드 이용해 ndarray 입력
  4. ndarray의 값이 지정된 threshold 보다 같거나 작으면 0값으로, 크면 1값으로 변환해 반환

👟 임곗값 변화에 따른 평가 지표

precision_recall_curve : 정밀도와 재현율의 임계값에 따른 값 변화를 곡선 형태의 크래프로 시각화

4. F1 스코어

  • 정밀도와 재현율을 결합한 지표이다.
  • 어느 한 쪽으로 치우치지 않는 수치를 나타낼 때 높은 값이 나온다.
  • f1_score

5. ROC 곡선과 AUC

5.1 ROC 곡선

  • Receiver Operation Characteristic Curve
  • FPR (False Positive Rate) 이 변할 떄 TPR (True Positive Rate, 재현율 / 민감도) 이 어떻게 변하는지를 나타내는 곡선
  • TNR (True Negative Rate, 특이성) 은 민감도에 대응하는 지표

 

  • 가운데 직선에 멀어질수록 성능이 뛰어난 것이다.
  • FPR 을 0부터 1까지 변경 (=분류 결정 임계값을 변경) 하면서 TPR의 변화 값을 구한다.
    • FPR 0으로 만들기 → 임계값을 1로 지정
    • FPR 1로 만들기 → 임계값을 0으로 지정 (TN을 0으로)
  • roc_curve

5.2 AUC

  • Area Under Curve
  • ROC 곡선 밑의 면적을 구한 것
  • 1에 가까울수록 좋은 수치

'AI > 파이썬 머신러닝 완벽 가이드' 카테고리의 다른 글

회귀  (0) 2024.07.04
분류  (0) 2024.05.24
사이킷런  (0) 2024.05.24
판다스  (0) 2024.05.24
넘파이  (0) 2024.05.24