본문 바로가기

머신러닝, 딥러닝

threshold, precision, recall의 의미

머신러닝에서 어떤 모델이 더 예측을 잘하는가 판단하기 위해 여러 평가지표를 사용한다.

 

  • Accuracy(정확도)는 전체 범주를 모두 바르게 맞춘 경우 / 전체 수 = tp+tn/total

    • f1 점수는 precision과 recall의 조화 평균 = 2 * precision * recall/(precision+recall)

    • Precision(정밀도)는 positive로 예측한 경우 중 올바르게 positive를 맞춘 비율 = tp/tp+fp

  • Recall(재현율, Sensitivity)는 실제 positive인 것 중 올바르게 positive를 맞춘 비율 = tp/tp+fn

Accuracy : 가장 유용하게, 많이 쓰이는 지표로, data가 balance 할 때 효과적이다. (1이랑 0이 반반 분포하는 데이터일 때) 하지만 데이터셋의 타깃 값의 비율이 불균형할 때는,

F1 Score를 사용하여 모델을 비교할 때 더 좋은 예측을 하는 모델을 구할 수 있다.

조화 평균이라는 것이 불균형한 지표 사이에서 큰 값에 패널티를 주어, 작은 값에 불리하지 않게 조화로운 평균을 주기 때문이다. (precision과 recall 값이 균일하지 않을 때도 마찬가지다.)

 

분류-예측 문제에서 어떤 걸 positive로 보느냐 따라 0과 1 라벨이 달라지고, 이에 대한 precision, recall이 다르다.

예를 들어 백신 접종을 하지 않을 확률에서 백신 접종을 positive(1)로 볼 수도, negative(0)으로 볼 수도 있다.

 

암 환자를 분류하는 문제에서,

Precision 값이 커질수록 정말 암환자인 사람만 암환자라고 예측하게 된다.

더 정밀해지는 셈이다. Precision이 높으면 threshold도 높은데,

threshold의 의미는 분류기준이다.

threshold를 기준으로 그 이상이면 1이라고 예측(분류)한다. (디폴트 값은 0.5다.)

 

따라서 분류 기준이 높으므로 더 깐깐하게, 정밀하게 예측(분류)한다.

 

Recall을 높이면 암환자가 아닌 사람도 암환자라고 하게 된다.

Recall을 높이면, threshold가 낮아진다.

threshold의 의미는 분류기준이다.

그래서 Recall을 높이면, threshold가 낮아지므로 암환자의 분류 기준점이 낮아진다.

따라서 조금이라도 암환자일 것 같으면 다 암환자라고 분류한다

 

결론적으로, precision을 놓치지 않는 상황에서 recall을 높이는 것이 좋다.

 

weighted avg : 0과 1이 비율 차이가 많이 날 경우 한쪽에 무게를 두어 평균을 조정해준다.(비율이 많은 쪽에 weight가 가도록)

 

ROC 커브 : 이진 분류 문제에서 

ROC 커브의 중간점은 tpr-fpr이 가장 큰 지점으로, 최적의 threshold 값을 가진다.

AUC : ROC 커브 아래 면적으로, auc_score가 그 면적의 넓이를 나타낸다.(최대가 1)

auc_score가 클수록 머신러닝 학습이 잘 된 거다.