머신러닝에서 어떤 모델이 더 예측을 잘하는가 판단하기 위해 여러 평가지표를 사용한다.
-
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가 클수록 머신러닝 학습이 잘 된 거다.
'머신러닝, 딥러닝' 카테고리의 다른 글
시계열 데이터에서의 invalid type promotion error (0) | 2021.02.10 |
---|---|
Cross Validation vs Train/Validation/Train Set 나누기 (0) | 2021.02.09 |
트리 모델에서 Ordinal 대신 Nominal 인코딩을 해야 하나? (0) | 2021.02.07 |
랜덤포레스트 모델에서 Select K Best를 사용해야 할까? (0) | 2021.02.07 |
Decision Tree 모델에서의 feature_importances_의 의미 (0) | 2021.02.07 |