본문 바로가기
인공지능/ML-DL 기초

모델의 평가 방식: Evaluation Metric

by 3n952 2024. 3. 13.

우리가 열심히 만든 딥러닝 모델이 얼마나 성능이 좋은지 파악하려면 어떻게 해야 할까?
이번 포스팅에서 모델을 평가하는 평가 지표에 대해 알아보자.

 

먼저 Evaluation metric을 알아보기 앞서 Loss와 Metric의 차이를 알 필요가 있다.

간단히 설명하면 Loss와 metric은 다음과 같다.

 

- Loss: 모델 학습 시 학습 데이터(train data)를 바탕으로 계산되어, 모델의 파라미터 업데이트에 활용되는 함수
- Metric: 모델 학습 종료 후 테스트 데이터(test data)를 바탕으로 계산되어, 학습된 모델의 성능을 평가하는데 활용되는 함수

 

즉, 학습 도중에 파리미터를 업데이트하는데 관심 있는 함수는 Loss function이 될 것이고, 학습이 끝나고 모델의 성능을 평가하는 데 관심있는 함수는 metric function이 될 것이다.

 

그렇다면 드는 의문이 하나 있다.

MNIST 손글씨 분류 같은 모델에서 accuracy를 loss로 쓰지 않는 이유는 무엇일까?

그 이유는 accuracy는 이산적이기 때문에 파라미터 업데이트가 매우 비효율적이기 때문이다.

 

(보다 상세한 설명은 아래 링크의 3.3을 확인할 것!)

https://james-scorebook.tistory.com/entry/%EC%86%90%EC%8B%A4-%ED%95%A8%EC%88%98Loss-function

 

손실 함수(Loss function)

💡 'Deep Learning from Scratch'를 참고하여 작성 신경망에서 학습(train)이란 학습 데이터로부터 가중치 매개변수(weight parameter)의 최적값(optimal value)을 자동으로 획득하는 것을 의미합니다. 이번 게시

james-scorebook.tistory.com

 

분류모델의 궁극적인 목표는 테스트 데이터에 대한 정확도가 될 것이다.

따라서 cross entropy 같은 지표보다 accuracy와 같은 지표를 평가 지표로 사용하는 것이다.

따라서 task가 가지는 목적에 따라 어떠한 loss를 사용할지, 어떤 metric이 적당할지 판단하는 직관력은 매우 중요하다.

 

1. Confusion matrix

앞서 분류 모델에서 accuracy는 좋은 평가지표가 된다고 언급했다. 하지만 모든 경우에 대해 그런 것은 아니다.

그 이유에 대해 알아보기 위해 confusion matrix(혼동행렬)의 개념을 알 필요가 있다.

모델의 결과가 이진 분류되는 형태일 때, 모델의 예측 결과와 실제 정답값을 비교하여 표현하는 행렬을 confusion matrix라고 한다.

 

 

 

그림1. confusion matrix

 

각각에 대한 값은 다음과 같다.

True Positive(TP) = 모델이 양성을 양성으로 맞혔을 때

True Negative(TN) = 모델이 음성을 음성으로 맞혔을 때

False Positive(FP) = 모델이 음성을 양성으로 오판했을 때

False Negetive(FN) = 모델이 양성을 음성으로 오판했을 때

 

여기서 Accuracy는 어떤 값으로 표현할 수 있을까?

전체 표본에서 정확히 분류된 즉, 모델이 맞힌 경우의 표본 수라고 할 수 있다.

2. Precision과 Recall

앞서 살펴본 것과 같이 confusion matrix에서 정확도는 TP와 TN에 관심이 있다는 것을 알 수 있었다.

그렇다면 FN, FP는 어떻게 고려되는 것이 좋을까?

이때 등장하는 개념이 Precision(정밀도), Recall(재현율)이다.

precision과 recall의 의미는 아래의 그림을 보면 이해하기 쉽다.

 

그림2. precision & recall

 

그림에서 볼 수 있듯이, precision은 양성으로 규정한 것이 얼마나 정확한지 관심이 있고

recall은 '실제 양성이' 모델에 의해 얼마나 정확하게 탐지되었는지에 관심이 있다는 것을 알 수 있다.

 

task나 도메인에 따라 AI를 개발할 때 precision과 recall값은 상당히 중요하다.

가령 암 환자를 진단해 주는 AI의 정확도는 91%인데 재현율이 11%가 되는 경우에 이 모델은 좋은 모델일까?

전혀 아니다. 실제 암환자를 거의 못 가려낸다는 뜻이므로 정확도가 높은 것은 의미가 없다.

또한 음성 대 양성 데이터 분포가 불균형할 경우 (= 원본 데이터에 암환자 1명, 정상 100 명 있는 경우)

정확도는 모델을 평가하는데 좋은 척도가 될 수 없을 것이다. 

이러한 불균형 데이터가 주어진 상황에서 분류 모델을 어떻게 평가하면 좋을까?

 

3. F-score

위에서 본 precision과 recall은 단독으로 쓰기에는 부족하다.

 

예를 들어, precision이 좋은 척도가 될만한 스팸메일 분류기 모델을 생각해 보자.

이경우 FN은 다소 허용할 만하다. 반면 FP는 허용하기에 risk가 너무 크다.

중요한 비즈니스 메일이 스팸함에 버려져 큰 손실을 야기할 수 있기 때문이다.

그래서 FP를 줄이기 위해 애매한 메일을 음성으로 판단하는 게 좋은데,

그렇다고 해서 FN을 무한히 허용하면 스팸 메일 분류기 모델은 쓸모없는 것과 마찬가지다.

마찬가지로 Recall이 좋은 척도가 될만한 모델도 있다. 암환자 예측 모델이 그것이다.

 

F score에 대한 식은 다음과 같다.

 

 

여기서 베타(beta)값이 1이 되면 F1-score가 되는 것이다.

따라서 F1-score는 Precision과 Recall의 조화평균이 되는 값으로,

둘 다 고려할 수 있기에 분류 모델에서 자주 사용되는 metric 중 하나이다.

 

만약 precision보다 recall을 더 중요하게 생각한다면 F score에서 beta값을 1보다 크게 하면 될 것이다.

 

4. 다양한 머신러닝 Evaluation metrics

지금까지 분류모델의 평가 척도에 대해 알아보았다.

분류 문제에 있어 문제의 성격, 분류 기준 등 다양한 변수에 따라

정확한 모델 평가 척도는 달라질 수 있어 다소 복잡하다.

 

하지만 머신러닝에는 분류만 있는 것이 아니라 회귀, 추천, 군집등 다양한 모델이 있다.

특히 음성, 이미지, 텍스트등의 생성형 모델들이 가지는 독특한 평가 척도들도 매우 다양하다.

이 내용들은 추후에 관련 내용을 다루게 되면 따로 다루도록 하겠다.

이번 포스팅에서 알아야 할 점은 우리가 다루고자 하는 문제의 특성에 따라 다양한 평가 척도가 존재할 수 있다는 것이다.

 

다음 다양한 task에 따른 모델의 평가 척도 내용을 참고하자.

 

1. 회귀

https://white-joy.tistory.com/10

 

회귀 모델 성능 평가 지표(MAE, MSE, RMSE, MAPE 등)

회귀 모델(regression model)을 평가할 때 주로 MAE, MSE, RMSE, MAPE 등을 사용한다. MAE(Mean Absolute Error) = 평균 절대 오차 실제 정답 값과 예측 값의 차이를 절댓값으로 변환한 뒤 합산하여 평균을 구한다.

white-joy.tistory.com

 

 

2. 추천시스템 랭킹

https://velog.io/@mertyn88/%EC%A0%95%EB%B3%B4-%EA%B2%80%EC%83%89Information-Retrieval-%ED%8F%89%EA%B0%80

 

정보 검색(Information Retrieval) 평가

다양한 형태로 원하는 내용과 관련있는 결과를 얻어내는 것을 정보 검색(Information Retrieval, 이하 IR)이라고 한다.IR의 정확도 및 효율을 분석하기 위한 평가기준을 알아본다.True Positives(tp) = 선택된

velog.io

 

3. 이미지 생성 모델

https://datascience.stackexchange.com/questions/48642/how-to-measure-the-similarity-between-two-images

 

How to measure the similarity between two images?

I have two group images for cat and dog. And each group contain 2000 images for cat and dog respectively. My goal is try to cluster the images by using k-means. Assume image1 is x, and image2 is y.

datascience.stackexchange.com

 

4. 기계 번역

https://jrc-park.tistory.com/273

 

BLEU Score의 소개와 계산하는 방법 (Python)

Last Updated on July 23, 2021 Bilingual Evaluation Understudy (BLEU) 딥러닝의 발달로 텍스트를 생성하는 Generative Model은 챗봇, 문서 요약등 다양한 분야에서 사용되고 있습니다. Generated Sentence를 평가하는 방식

jrc-park.tistory.com