-
평가 - 3Python Machine Learning/평가 2020. 7. 30. 17:30
1. F1 스코어
2. ROC 곡선과 AUC
1. F1 스코어
- F1 스코어는 정밀도와 재현율을 결합한 지표로 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가집니다.
- F1 = 2 / ( 1 / 재현율 ) + ( 1 / 정확도 ) = 2 * ( 정밀도 * 재현율 ) / ( 정밀도 + 재현율 )
- 사이킷런에서는 F1 스코어를 구하기 위해 f1_socre( )라는 API를 제공합니다.
다음 예제는 타이타닉 생존자 예측에서 임계값을 변화시키면서 F1스코어를 포함한 평가 지표를 구하는 예제입니다.
--> get_clf_eval( ) 함수에 F1스코어 구하는 로직 추가
--> get_eval_by_threshold( ) 함수를 이용해 임계값 0.4~ 0.6별로 정확도, 정밀도, 재현율, F1스코어 확인
2. ROC 곡선과 AUC
- ROC 곡선은 FPR( False Positive Rate )이 변할 때 TPR( True Positive Rate )이 어떻게 변하는지를 나타내는 곡선입니다
- TPR은 True Positive Rate의 약자로 재현율( = 민감도 )을 나타냅니다. ( TPR = TP / ( FN+TP ) )
- 민감도에 대응하는 지표로 TNR( True Negative Rate )이라고 불리는 특이성( Specificity )가 있습니다.
- FPR은 FP / ( FP + TN )이므로 1 - TNR 또는 ( 1 - 특이성 )으로 표현됩니다.
- 사이킷런은 ROC곡선을 구하기 위해 roc_curve( ) API를 제공합니다.
다음 예제는 roc_curve( )를 사용해 타이타닉 생존자 예측 모델의 FPR, TPR, 임계값을 구하는 예제입니다.
--> 레이블 값이 1일 때의 예측 확률을 추출
--> 반환된 임계값 배열 로우 중 샘플로 10건만 추출, 임계값을 5 step으로 추출
--> 추출된 임계값에 따른 FPR, TPR 값
==> 임계값이 1에 가까운 값에서 점점 작아지면서 FPR이 커지고 FPR이 커질수록 TPR은 가파르게 커집니다.
--> 임계값에 따른 FPR, TPR값을 반환받음.
--> ROC 곡선을 그래프 곡선으로 그림
--> 가운데 대각선 직선을 그림
--> FPR X축의 Scale을 0.1단위로 변경, X, Y축 명 설정
--> 사이킷런은 ROC AUC를 구하기 위해 roc_auc_score( ) API를 제공.
==> ROC곡선은 FPR과 TPR의 변화 값을 보는데 이용하며 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC 값으로 결정합니다. AUC값은 ROC 곡선 밑의 면적을 구한 것으로서 일반적으로 1에 가까울수록 좋은 수치입니다.
즉, FPR이 작은 상태에서 얼마나 큰 TPR을 얻느냐가 관건이며, 가운데 직선( AUC 값으로 0.5 )에서 멀어지고 왼쪽 상단 모서리 쪽으로 가파르게 곡선이 이동할수록 직사가형에 가까운 곡선이 되어 면적이 1에 가까워지는 좋은 성능 수치를 얻게 되는 겁니다.
타이타닉 생존자 예측 로지스틱 회귀 모델의 ROC AUC 값 get_clf_eval( ) 함수에 ROC AUC값을 측정하는 로직 추가 ==> roc_auc_score( )를 이용해 get_clf_eval( ) 함수는 정확도, 정밀도, 재현율, F1스코어, ROC AUC값까지 출력 가능해졌습니다.