- 머신러닝 이진 분류 문제에서는 모델의 단순 정확도보다 더 세밀한 평가 지표가 필요함
- 특히 데이터가 불균형한 경우, 또는 False Positive / False Negative의 중요도가 다른 경우, 정밀도(Precision), 재현율(Recall), ROC 곡선, AUC 등을 통해 성능을 평가
1. 정밀도/재현율 기준 임계값 설정 방법
예제 1) 정밀도 0.9 이상을 만족하는 최소 임계값 찾기
idx = np.argmax(precisions >= 0.9)
threshold_90_precision = thresholds[idx]
- precisions >= 0.9 조건을 만족하는 첫 번째 인덱스를 찾고,
- 해당 인덱스의 thresholds[idx] 값을 가져오면 정밀도 90% 이상을 보장하는 최소 임계값
예제 2) 재현율 0.8 이상을 만족하는 최대 임계값 찾기
idx = np.argmax(recalls < 0.8)
threshold_80_recall = thresholds[idx - 1]
- recalls < 0.8인 첫 인덱스를 찾아 **그 이전 인덱스(-1)**의 임계값을 사용하면,
- 재현율 80% 이상을 보장하는 최대 임계값
2. 선택된 임계값으로 예측 수행 및 평가
선택된 임계값을 기준으로 모델 예측 수행:
y_scores = sgd_clf.decision_function(X_train)
y_pred = (y_scores >= threshold_80_recall)
- 이후 precision_score()와 recall_score()을 이용해 성능 평가
4. ROC 곡선과 AUC
1) ROC 곡선이란?

- ROC (Receiver Operating Characteristic) Curve는 임계값 변화에 따른 FPR(False Positive Rate) 와 TPR(True Positive Rate) 의 관계를 나타냄
- top-left 코너에 근접할 수록 좋은 분류기임.
- TPR = Recall
- FPR = FP / (FP + TN)
2) roc_curve() 함수
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
- 다양한 임계값에서 FPR과 TPR 값을 계산
3) AUC (Area Under the Curve)
- ROC 곡선 아래 면적
- 1에 가까울수록 좋은 분류기
- 모델 간 비교에 효과적
4) 정밀도/재현율 곡선

- top-right 코너에 근접할 수록 좋은 성능의 분류기임.
- 이 곡선의 AUC 또한 1에 가까울 수록 좋은 성능의 분류기임.
5. ROC vs 정밀도/재현율 곡선, 언제 사용해야 할까?
| 상황 | 선호 곡선 |
| Positive 클래스가 희귀한 경우 | 정밀도/재현율 곡선 |
| False Positive가 더 문제인 경우 | 정밀도/재현율 곡선 |
| 일반적인 이진 분류 평가 | ROC 곡선 |
예시
- 아이가 봐도 되는 동영상을 필터링할 때:
- 잘못된 영상을 허용하는 것(FP) 이 더 큰 문제
- ⇒ 정밀도/재현율 곡선 사용이 더 적합
6. 좋은 분류기의 기준
| 곡선 | 이상적인 위치 |
| 정밀도/재현율 곡선 | 오른쪽 상단 코너 (Precision ↑, Recall ↑) |
| ROC 곡선 | 왼쪽 상단 코너 (FPR ↓, TPR ↑) |
| AUC 값 | 1에 가까울수록 좋음 |
'AI(ML & DL)' 카테고리의 다른 글
| [기계학습] ML 프로젝트 - 분류(Classfication) 모델 ( 5 ) (0) | 2025.06.02 |
|---|---|
| [기계학습] ML 프로젝트 - 분류(Classfication) 모델 ( 4 ) (0) | 2025.05.30 |
| [기계학습] ML 프로젝트 - 분류(Classfication) 모델 ( 2 ) (0) | 2025.05.23 |
| [기계학습] ML 프로젝트 - 분류 (Classification) 모델 (0) | 2025.05.19 |
| [기계학습] ML 프로젝트 A - Z 까 ( 7 ) (0) | 2025.05.17 |