1. Confusion Matrix (혼동행렬)

혼동 행렬을 이용해서 모델을 평가할 수 있다.

혼동 행렬을 계산하려면 모델이 예측한 값들과 실제 값들이 필요하다. 테스트 세트에서 예측할 할 수 있긴 하지만 보통 테스트 세트는 프로젝트의 마지막 단계에서 최종 평가용으로 이용한다. 개발 과정 중에 테스트 세트를 사용하면 모델이 테스트 데이터에 과적합될 수 있기 때문이다.

테스트 세트를 사용하지 않고도 cross_val_predict() 함수를 이용하여 예측값을 얻을 수 있다. 이 함수는 교차 검증(cross-validation)을 수행하면서 각 폴드(fold)에 대해 예측을 생성한다. cross_val_score 함수처럼 cross_val_predict() 함수는 K-fold 교차 검증 기법을 이용한다.

from sklearn.model_selection import cross_val_predict
from sklearn.metrics import confusion_matrix

# 모델 학습 및 예측
y_pred = cross_val_predict(classifier, X, y, cv=5)

# 혼동 행렬 계산
conf_matrix = confusion_matrix(y, y_pred)
print(conf_matrix)

sk-learn에서 실행해보면 행렬이 나오게 된다.

Predicted PositivePredicted Negative
Actually PositiveTrue PositivesFalse Negatives
Actually NegativeFalse PositivesTrue Negatives

각각의 숫자는 위의 표에 대입해서 생각하면 된다. 성능이 좋을수록 왼쪽 위에서 내려오는 대각선에 위치한 값들에 더 많은 숫자가 존재하게 된다.

2. Precision (정밀도)

혼동 행렬은 많은 정보를 주지만, 간결한 정보를 얻고자 할 때 precision(정밀도)를 이용하게 된다.

precision=TPTP+FPprecision = \frac{TP}{TP+FP}

TP : 실제 양성인데, 양성으로 판별된 경우
FP : 실제 음성인데, 양성으로 판별된 경우
→ 양성으로 판별된 경우에 얼마나 잘 맞추는지 확인할 수 있음.

3. Recall (재현율)

분류기가 하나의 양성 인스턴스만을 고려하고 나머지 양성 인스턴스를 모두 무시하는 상황에서는 유용할 수 없다. 이는 특히 불균형 데이터셋에서 문제가 될 수 있다. 그래서 정밀도는 재현율이라 불리는 것과 함께 사용된다.

recall=TPTP+FNrecall = \frac{TP}{TP+FN}

TP : 실제 양성인데, 양성으로 판별된 경우
FN : 실제 양성인데, 음성으로 판별된 경우
→ 실제 양성인 경우에 모델이 얼마나 잘 판별하는지 볼 수 있음

4. F1F_1 score

편의를 위해 정밀도와 재현율을 결합한 형태가 있는데, 그게 바로 F1scoreF_1 score

F1=21precision+1recall=2×precision×recallprecision+recall=TPTP+FN+FP2F_1 = \frac{2}{\frac{1}{precision}+\frac{1}{recall}}= 2 \, \times \frac{precision \times recall}{precision+recall} = \frac{TP}{TP+\frac{FN+FP}{2}}

F1 스코어는 정밀도와 재현율의 조화 평균을 계산하는 지표로, 두 값이 균형을 이룰 때 높은 점수를 받게 된다. 상황에 따라 정밀도와 재현율 중 더 중요하게 여겨야 하는 것이 달라진다.

예를 들어, 아이들에게 안전한 비디오를 감지하는 분류기를 훈련시켰다고 가정해보자. 이 경우엔 이 높은 재현율을 가지지만 몇몇 정말 나쁜 비디오가 제품에 나타나는 분류기보다 나을 것이다. 좋은 비디오가 많이 남는 것보다(낮은 재현율) 안전한 비디오만 남길 수(높은 정밀도) 있는 것이 더 중요하기 때문이다.

반면에 감시 영상에서 절도범을 감지하는 분류기를 훈련시켰다고 생각해보자. 99%의 재현율만 유지된다면 정밀도가 30%밖에 되지 않아도 괜찮을 것이다.

5.정밀도와 재현율 Tradeoff

정밀도 (Precision): 모델이 양성이라고 예측한 것 중에서 실제 양성의 비율,즉, false positive를 얼마나 줄이는지 측정

재현율 (Recall): 실제 양성 중에서 모델이 양성이라고 정확히 예측한 비율, 즉, false negative를 얼마나 줄이는지 측정

F1 스코어: 정밀도와 재현율의 조화 평균으로, 두 지표의 균형을 중시

정밀도와 재현율 사이에는 상쇄 관계가 있어서, 하나를 증가시키면 다른 하나는 감소하는 경향이 있다. 이를 정밀도/재현율 Tradeoff라고 부른다.

6. decision threshold : 결정 임계값

분류 문제에서 모델이 특정 클래스에 속하는지 여부를 결정하는 데 사용되는 기준값이다. 임계값은 모델의 예측 확률을 기준으로 한다.

예를 들어, 이진 분류에서 모델이 어떤 샘플에 대해 클래스 1(양성 클래스)일 확률을 예측했다고 할 때, 이 확률이 결정 임계값을 초과하면 해당 샘플을 클래스 1로, 그렇지 않으면 클래스 0(음성 클래스)으로 분류합니다.

임계값 조정

특정 상황에 따라 이 임계값을 조정하기도 한다. 높은 정밀도가 필요한 경우 임계값을 높이고, 높은 재현율이 필요한 경우 임계값을 낮추면 된다.\

결정 임계값을 높인다는 것은 곧 양성 클래스로 예측하는 기준을 엄격히 한다는 것이다. 그래서 정밀도가 높아질 수는 있지만 정밀도는 낮아지게 된다.

활용 예시

스팸 필터링: 스팸 이메일 분류에서는 정밀도가 중요하다고 볼 수 있다. 임계값을 높여 스팸으로 잘못 분류되는 정상 이메일(false positives)을 줄여야 한다.

암 진단: 암 검진 시스템에서는 재현율이 더 중요하다고 볼 수 있다. 임계값을 낮추어 암을 놓치는 경우(false negatives)를 최소화해야 한다.

PR Curve

R 곡선은 정밀도(Precision) 대 재현율(Recall)을 나타내는 그래프다. 특히 클래스 불균형 문제를 다루는 데 유용하다. PR 곡선이 오른쪽 상단 모서리에 가까울수록 모델의 성능이 더 좋다는 것을 의미한다.

profile
호로록

0개의 댓글