TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 머신 | 딥러닝 & AI>

[파이썬] 성능 평가 지표 - 3 (F1 스코어, ROC 곡선, AUC)

by 기록자_Recordian 2024. 6. 10.
728x90
반응형
시작에 앞서
해당 내용은 '<파이썬 머신러닝 완벽 가이드> 권철민 지음. 위키북스' 를 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.

 이전 내용
 

[파이썬] 성능 평가 지표 - 2 (정밀도, 재현율)

시작에 앞서해당 내용은 ' 권철민 지음. 위키북스' 를 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다. 이전 내용 [파이썬] 성능 평

puppy-foot-it.tistory.com


F1 스코어

 

F1 Score는 정밀도와 재현율을 결합한 지표

정밀도와 재현율. 출처; https://www.v7labs.com/blog/f1-score-guide
f1 스코어 공식. 출처: https://www.v7labs.com/blog/f1-score-guide

 

사이킷런에서는 f1_score() API 제공.

 

[앞서 학습/예측한 로지스틱 회귀 기반 타이타닉 생존자 모델의 F1 스코어 구하기]

 

[임곗값 변화에 따른 F1 스코어 및 기타 평가 지표 구하기]

이를 위해 앞서 작성한 get_clf_eval() 함수에 F1 스코어를 구하는 로직을 추가하고 앞에서 작성한 get_eval_by_threshold() 함수를 이용해 임곗값 0.4 ~ 0.6별로 정확도, 정밀도, 재현율, F1 스코어를 구해본다.

평가지표 분류 결정 임곗값
0.4 0.45 0.5 0.55 0.6
정확도 0.8212 0.8547 0.8659 0.8715 0.8771
정밀도 0.7042 0.7869 0.8246 0.8654 0.8980
재현율 0.8197 0.7869 0.7705 0.7377 0.7213
F1 0.7576 0.7869 0.7966 0.7965 0.8000

▶ F1 스코어는 임곗값이 0.6일 때 가장 좋으나, 재현율이 크게 감소한다.


ROC 곡선과 AUC

 

ROC 곡선과 이에 기반한 AUC 스코어는 이진 분류의 예측 성능 측정에서 중요하게 사용되는 지표이다.

  • ROC 곡선(Receiver Operation Characteristic Curve): FPR이 변할 때 TPR이 어떻게 변하는지를 나타내는 곡선. FPR을 X축, TPR을 Y축으로 잡는다.
  • TPR은 재현율, 그에 대응하는 TNR은 특이성(실제값이 정확히 예측돼야 하는 수준)
  • AUC(Area Under Curve) 값은 ROC 곡선 밑의 면적을 구한 것으로서 일반적으로 1에 가까울수록 좋다.

빅데이터 분석기사 정리 내용 중

 

사이킷런은 ROC 곡선을 구하기 위해 roc_curve() API 제공 (사용법은 precision_recall_curve()와 유사).

반환값이 FPR, TPR, 임곗값으로 구성되어있다.

 

<입력 파라미터>

y_true: 실제 클래스 값 array (array shape=[데이터 건수])

y_score: predict_proba()의 반환 값 array에서 Positive 칼럼의 예측 확률이 보통 사용됨. array.shape=[n_samples]

 

<반환 값>

fpr: fpr 값을 array로 변환

tpr: tpr 값을 array로 변환

thresholds: threshold 값 array

 

[roc_curve() 이용해 타이타닉 생존자 예측 모델 수행]

앞서 진행했던 LogisticRegression 객체의 predict_proba() 결과를 다시 이용해 roc_curve() 결과 도출

▶ 임곗값이 1에 가까운 값에서 점점 작아지면서 FPR 이 점점 커지고, FPR이 조금씩 커질 때 TPR은 가파르게 커짐을 알 수 있다.

 

[FPR의 변화에 따른 TPR의 변화 시각화 - ROC 곡선]

▶ 일반적으로 ROC 곡선 자체는 FPR과 TPR의 변화 값을 보는 데 이용하며 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC 값으로 결정한다.

AUC 수치가 커지려면 FPR이 작은 상태에서 얼마나 큰 TPR을 얻을 수 있느냐가 관건이다.

 

[타이타닉 생존자 예측 로지스틱 회귀 모델의 ROC AUC 값 측정]

[get_clf_eval() 함수에 ROC AUC 값 추가하기]

ROC AUC는 예측 확률값을 기반으로 계산되므로 이를 get_clf_eval() 함수의 인자로 받을 수 있도록 함수명 변경.


전체 코드

03. Evaluation.ipynb
0.10MB

728x90
반응형