새소식

반응형
AI/ML*DL 시작하기

모델의 성능 평가방법(2) - accuracy, precision, recall, F1 score

  • -
반응형

만약 아래 그림처럼 Trained Model1과 Trained Model2가 있다고 가정해봅시다.

 

2가지 모델의 성능을 비교하기 위해서는 어떻게 하면 좋을까요?

 

Acccuracy(정확도), Precision(정밀도), Recall(재현률), F1 Score를 사용하여 분석해볼 수 있도록 하겠습니다.

 

먼저 TP, TN, FP, FN이란 용어들에 대한 이해가 필요합니다.

  • True Positive(TP) : 실제 True - 예측 True (정답)
  • True Negative(TN) : 실제 False 예측 False (정답)
  • False Positive(FP) : 실제 False 예측 True (오답)
  • False Negative(FN) : 실제 True 예측 False (오답)

실제값과 예측값이 같을 경우(정답의 경우)에는 TP, TN으로

 -TP의 경우에는 True(실제) - True(예측)

 -TN의 경에는 False(실제) - False(예측) 2가지가 나오게 됩니다.

 

실제값과 예측값이 다를경우(오답의 경우)에는 FP, FN으로

 -FP의 경우에는 False(실제) - True(예측)

 -FN의 경우에는 True(실제) - False(예측) 2가직 나오게 됩니다.

 

사실 전혀 다른 4가지의 의미이지만, 저는 처음 들었을때 많이 헷갈리더라구요

저 나름대로 외웠던 방법은 아래와 같습니다.. 참고만 해주시면 될것같습니다.

 1.정답을 맞춤(T), 모델이 True 예측한 값(P)

 2.정답을 맞춤(T), 모델이 False 예측한 값(N)

 3.정답을 틀림(F), 모델이 True 예측한 값(P)

 4.정답을 틀림(F), 모델이 False 예측한 값(N)

 

자 이제, 각 모델별로 예시 Confusion Matrix를 만들어보겠습니다.

두 AI 모델의 성능을 Acccuracy(정확도), Precision(정밀도), Recall(재현률), F1 Score를 사용해서 비교할 수 있도록 하겠습니다.

" Accuracy = TP+TN/(TP+TN+FP+FN) " 으로 계산하게 됩니다.

 - Trained Model1의 Accuracy: 14/20 = 0.7

 - Trained Model2의 Accuracy: 11/20 = 0.55

 

Accuracy를 비교하면 Trained Model1의 성능이 더 좋은걸 확인할 수 있습니다.

 

Accuracy를 통한 모델의 성능 비교는 테스트 데이터들이 Balance(균형)잡혀 있을 때 사용하기 좋습니다.

 

만약 데이터들이 imbalance(불균형) 할때 Accuracy를 통해 비교하게 되면 어떻게 될까요?

 

좀 극단적인 예시를 통해 확인해볼 수 있도록 하겠습니다.

 

두 Train Model에 대한 Confusion Matrix를 Accuracy를 다시 비교해보도록 하겠습니다. 

 

Accuracy = TP+TN/(TP+TN+FP+FN)

 - Trained Model1의 Accuracy: 14/20 = 0.7

 - Trained Model2의 Accuracy: 199/215 = 0.93

 

Accuracy값만 비교한다면 Trained Model2의 성능이 더 좋게 나옵니다. Confusion Matirx를 확인해보면 Trained Model2는 "3"에 대한 예측만 높고 그 외 값은 예측률이 굉장히 떨어진다고 볼 수 있습니다.

 

이럴 경우 F1 score를 사용하여 비교하게 됩니다.

 

F1 score는 Precision(정밀도)와 Recall(재현율)의 조화평균 값이며 계산식은 아래와 같습니다. 

조화평균(Harmonic Mean)

 

조화평균을 통해 단순한 평균이 아닌 평균 변화율로 imbalanced한 데이터의 성능을 구하게 됩니다. 

 

"F1 score = 2* (precision x recall)/(precision+recall)" 으로 구하게 됩니다.

 

먼저 precision과 recall 값을 구하는게 필요합니다. 

 

"Precision = TP/(TP+FP)"

 

"Recall = TP/(TP+FN)"

 

위 계산식으로 Precision과 Recall 값을 계산하게 됩니다. 

 

위 예시 Confusion Matrix의 Precision, Recall 값을 구해볼 수 있도록 하겠습니다. 

 

 

Trained Model1의 Precision, Recall
Trained Model2의 Precision, Recall

 

이제 Trained Model 1,2의 F1 Score를 계산하여 비교해보도록 하겠습니다.

Trained Model 1,2의 F1 Score 비교

F1 score를 통해 비교해보면 Trained Model1의 성능이 더 좋은걸 확인할 수 있습니다. 

 

테스트에 진행하는 데이터 수가 imbalanced할 경우 f1 score를 활용하여 모델의 성능을 비교하는 것이 좋은 방법이라는 것을 알 수 있었습니다. 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.