Precision 직접 개선
- FP(거짓 양성, False Positive) 을 줄이는 데 중점.
- Precision은 “모델이 긍정이라고 예측한 샘플 중 실제로 긍정인 비율”로 정의되기 때문에,
오분류를 방지하고 모델의 예측 신뢰도를 향상시키는 전략
1. 주요 전략 요약
| 방법 | 적용 대상/핵심 | 효과 | | — | — | — | | Threshold 조정 | 모델의 확률 예측 임계값 조정 | FP 감소 → Precision 직접 개선 | | Class Weight 조정 | 손실 함수에 클래스 가중치 적용 | 주요 클래스 Precision 개선 | | Balanced Sampling | 데이터에서 균형 잡힌 샘플링 | 클래스 간 FP 분포 조정 | | Hard Negative Mining | 잘못 예측된 음성 샘플에 집중 | FP 감소 및 Precision 직접 개선 | | Regularization 강화 | 모델 복잡도를 제어 (e.g., L1/L2 정규화) | 과적합 방지 및 오분류 감소 | | Noise 제거 | 학습 데이터에서 레이블 오류 정리 | FP 감소 및 Precision 간접 개선 | | Feature Selection/Engineering | 중요한 피처를 선택하거나 새로운 피처 생성 | 데이터 품질 개선 → FP 감소 | —
1. Threshold 조정
- 설명: 모델이 긍정(1)이라고 예측하는 확률 임계값을 기본값(0.5)에서 상향 조정.
- 효과: FP(잘못된 긍정 예측)가 줄어들어 Precision 상승.
- 구현 예시 (Python):
from sklearn.metrics import precision_score # 예측 확률 probs = model.predict_proba(X_test)[:, 1] # 임계값 조정 threshold = 0.7 preds = (probs >= threshold).astype(int) # Precision 계산 precision = precision_score(y_test, preds) print("Precision:", precision) 주의점: FP가 줄어드는 대신 FN(거짓 음성)이 증가할 수 있어 Recall 감소 가능성.
2. Class Weight 조정
- 설명: 손실 함수에서 긍정 클래스에 더 높은 가중치를 부여.
- 효과: 모델이 특정 클래스에서 오분류(FP)를 줄이는 방향으로 학습.
- 구현 예시 (Sklearn):
from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(class_weight={0: 1, 1: 2}) model.fit(X_train, y_train) 적용 데이터: 클래스 불균형이 심한 경우 효과적.
3. Balanced Sampling
- 설명: 학습 데이터에서 클래스 비율을 균형 있게 샘플링하여 데이터 불균형 완화.
- 효과: 모델이 클래스 간 구분을 더 명확히 학습하여 FP 감소.
- 구현 예시:
from imblearn.under_sampling import RandomUnderSampler sampler = RandomUnderSampler() X_resampled, y_resampled = sampler.fit_resample(X_train, y_train)4. Hard Negative Mining
- 설명: 모델이 자주 오분류하는 음성 샘플(Hard Negatives)에 집중 학습.
- 효과: FP를 직접 줄여 Precision 개선.
- 구현 예시:
- 손실 값이 높은 음성 샘플을 추출하여 추가 학습 데이터로 사용.
예: 객체 탐지에서는 잘못 탐지된 영역을 하드 네거티브로 분류.
5. Regularization 강화
- 설명: 모델의 복잡도를 제어하여 오분류 감소.
- 효과: 불필요한 피처 의존도 감소 → FP 줄이기.
- 구현 예시 (L1/L2 정규화):
from sklearn.linear_model import LogisticRegression model = LogisticRegression(penalty='l1', solver='liblinear', C=0.1) model.fit(X_train, y_train)6. Noise 제거
- 설명: 학습 데이터의 레이블 오류를 제거.
- 효과: 잘못된 샘플로 인한 FP 감소.
방법: 수작업 데이터 클리닝 또는 레이블 검증 알고리즘 활용.
7. Feature Selection/Engineering
- 설명: 불필요한 피처를 제거하거나, 중요한 피처를 추가 생성.
- 효과: 모델이 적절한 신호만 학습 → FP 감소.
- 구현 예시:
from sklearn.feature_selection import SelectKBest, chi2 selector = SelectKBest(chi2, k=10) X_selected = selector.fit_transform(X_train, y_train)3. Precision 개선 전략의 우선순위
| 상황 | 1순위 | 2순위 | 3순위 | | — | — | — | — | | 클래스 불균형 문제 | Threshold 조정 | Class Weight 조정 | Balanced Sampling | | 레이블 오류 또는 데이터 품질 문제 | Noise 제거 | Feature Engineering | Regularization | | 음성 클래스에서 오분류(FP)가 많은 경우 | Hard Negative Mining | Feature Selection | Threshold 조정 | —
결론
- Precision 직접 개선은 FP를 줄이는 데 초점을 맞춰야 하며, 모델 학습 및 데이터 정제의 다양한 기법을 병행
- 상황에 따라 Threshold 조정, Hard Negative Mining, Class Weight 조정을 우선적으로 고려
- Precision과 Recall 사이의 Trade-off를 고려하여 전략을 설정하는 것이 중요