[실제 양성인 데이터 예측을 음성으로 잘못 판단하면 안되는 경우]에 [재현율]이 중요하다.
암 판단 모델 ⇒ FN 오류의 댓가가 생명이기에, 양성을 음성으로 잘못 판단하면 안되는 경우 ↔ FP 경우, 재검사를 하는 수준의 비용
금융 사기 모델 ⇒ FN 오류의 댓가가 어마어마한 금액 ↔ FP 경우, 사기인지 재확인 하는 수준의 비용
통상적으로도, 정밀도보다는 재현율이 더 중요한 업무가 많긴 함
recall_score()
정밀도와 재현율 모두 TP를 높이는데 동일하게 촛점을 맞추지만,
정밀도는 FP를 낮추는데 촛점을 맞추고
재현율을 FN을 낮추는데 촛점을 맞춘다.
그러므로 서로 보완적인 지표로 분류의 성능을 평가하는데 도움이 되며,
가장 좋은 성능 평가는 재현율과 정밀도 모두 높은 수치를 얻는 것이며,
어느 한 평가 지표만 매우 높고 반대는 매우 낮은 경우는 바람직하지 않음
3.3. 정밀도/재현율 트레이드 오프 trade-off
정밀도와 재현율은 상호보완적 지표이다.
predict_proba(): 개별 데이터별로 예측 확률을 반환하는 메서드
predict() 가 위 메서드를 참고, 정제하여 보여주는 개념이라 생각하면 편함
predict()의 의사(pseudo) 코드 만들기
from sklearn.preprocessing import Binarizer
#Binarizer의 threshold 설정값. 분류 결정 임곗값임.
custom_threshold =0.5# predict_proba( ) 반환값의 두번째 컬럼 , 즉 Positive 클래스 컬럼 하나만 추출하여 Binarizer를 적용
pred_proba_1 = pred_proba[:,1].reshape(-1,1)
binarizer = Binarizer(threshold=custom_threshold).fit(pred_proba_1)
custom_predict = binarizer.transform(pred_proba_1)
get_clf_eval(y_test, custom_predict)
임곗값 threshold 보다 같거나 작으면 0을, 크면 1로 변환하고 반환한다.
분류 결정 임곗값은 양성 예측값을 결정하는 확률의 기준이 된다.
임곗값이 낮을 수록 True값이 많아진다. (양성증가)
양성 예측값이 많아지면 상대적으로 재현율이 높아진다. 정밀도는 떨어진다.
threshold 임곗값에 따른 재현률/정밀도 변화
precision_recall_curve() : 임곗값 변화에 따른 정밀도와 재현율 값 나타내주는 API
입력 파라미터
y_true : 실제 클래스값 배열 (배열 크기 = [데이터 건수])
probas_pred : pos 칼럼의 예측 확률 배열 (배열 크기 = [데이터 건수])
반환 값
- 정밀도 : 임곗값별 정밀도 값을 ndarray로 반환
- 재현율 : 임곗값별 재현율 값을 ndarray로 반환
- 임곗값 : 일반적으로 0.11~0.95 정도의 임곗값들을 ndarray로 반환
from sklearn.metrics import precision_recall_curve
precision, recalls, threshold = precision_recall_curve(y_test, \
*X_test의 predict_proba() 의 양성 예측 확률 배열*)*# == [:,1]*
4. F1 Score
정밀도와 재현율을 결합한 지표. 정밀도와 재현율이 어느 쪽으로 치우치지 않을 때 상대적으로 높은 값을 가짐
F1=2∗precision+recallprcision∗recall
from sklearn.metrics import f1_score
5. ROC 곡선과 AUC
: 머신러닝 이진분류 모델의 예측 성능을 판단하는 중요한 평가지표
ROC 곡선: FPR(False Positive Rate)이 변할 때 [X축], TPR(True Positive Rate)이 변하는지 [Y축] 나타내는 곡선
TPR (재현율) = TP/(FN+TP) = 실제 양성이 정확히 예측되어야 하는 수준(민감도)
- 질병이 있는 사람은 질병이 있는 것으로 양성 판정
TPR(재현율,민감도)=FN+TPTP
TNR (특이성) = TN/(FP+TN) = 실제 음성이 정확히 예측되어야 하는 수준 (특이성 ↔ 민감도에 대응하는 지표)