Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[머신러닝] Classification evaluation measure 본문

연구 Research/인공지능 Artificial Intelligent

[머신러닝] Classification evaluation measure

보통의공대생 2021. 5. 25. 23:06

모델을 만들고 나서 이 모델이 실제로 사용되기 위해서는 모델의 성능을 고려해야 합니다.

 

 

  • Sensitivity (민감도, True positive rate, recall) : 실제 true인 것 중에 모델이 true라고 예측한 비율

    $\text{Sensitivity = }\frac{TP}{TP+FN}$

 

  • Specificity (True negative rate) : 실제 false인 것 중에 모델이 false라고 예측한 비율

    $\text{Specificity = }\frac{TN}{FP+TN}$

 

  • Precision : 모델이 true라고 예측한 것 중에 실제로 true인 비율

    $\text{Precision = }\text{TP}{TP+FP}$

 

  • F1 score : precision과 recall의 조화평균

    $\text{F1 score = }2*\frac{Precision*Recall}{Precision+Recall}$

 

 

recall은 실제 true인 것 중에 모델이 true라고 예측한 비율이고, precision은 모델이 true라고 예측한 것 중에 실제로 true인 비율입니다.

f1 score는 불균형 데이터의 성능을 평가할 때 유용하게 쓸 수 있습니다.

만약 데이터 자체가 true값이 지나치게 많으면 대충 예측해도 true값이 많아서 recall이 높게 나옵니다. 그러나 결국에는 모델이 true라고 한 것 중에 정말로 true인 것을 찾아보면 그 값이 낮을 수도 있고, 이는 모델 자체의 성능이 썩 좋지 않다는 것을 말합니다. 따라서 precision, recall를 종합적으로 고려할 필요가 있습니다.

 

예를 들어 recall이 1이고 precision이 0.1인 경우를 생각해보겠습니다.

 

실제 true값을 모델이 모두 true라고 예측한 것은 맞지만 모델이 예측한 true 중 실제 true인 경우는 10퍼센트밖에 되지 않는 것입니다. 극단적으로 말하면, 무조건 true라고 내뱉는 모델이 있을 때 데이터에 true가 10퍼센트이면 당연히 recall이 1, precision은 0.1이 나올 것입니다.

 

이런 모델은 말도 안되는 모델이지만, 단순하게 recall과 precision을 일반평균 낸다면 0.55로, 아주 나쁘다고 보기는 어려울 수도 있습니다.

하지만 f1 score를 계산하면 $2*\frac{1*0.1}{1+0.1}=0.18$이기 때문에 f1 score가 매우 낮으므로 이 모델을 폐기할 것입니다. (실제로 모델을 학습하다보면 데이터가 편향된 경우에 accuracy는 높은데 f1이 아주 낮은 경우가 생깁니다.)

 

편향된 데이터를 다룰 때는 accuracy만 보는 것이 아니라 f1 score도 고려해주어야 합니다.

Comments