시작에 앞서
해당 내용은 '<파이썬 머신러닝 완벽 가이드> 권철민 지음. 위키북스' 를 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.
이전 내용
F1 스코어
F1 Score는 정밀도와 재현율을 결합한 지표
사이킷런에서는 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() 함수의 인자로 받을 수 있도록 함수명 변경.
전체 코드
'[파이썬 Projects] > <파이썬 머신러닝>' 카테고리의 다른 글
[머신러닝] 분류와 분류 관련 머신러닝 알고리즘 (1) | 2024.06.11 |
---|---|
[머신러닝] 피마 인디언 당뇨병 예측 (0) | 2024.06.11 |
[머신러닝] 성능 평가 지표 - 2 (정밀도, 재현율) (0) | 2024.06.10 |
[머신러닝] 성능 평가 지표 - 1 (정확도, 정밀도, 재현율, 오차 행렬) (1) | 2024.06.09 |
[머신러닝] 타이타닉 생존자 예측 (1) | 2024.06.09 |