코딩뚠뚠

[머신러닝 공부] 딥러닝 평가지표의 종류 본문

공부/ML&DL

[머신러닝 공부] 딥러닝 평가지표의 종류

로디네로 2021. 4. 1. 14:35
반응형

 

 

 

딥러닝 모델을 평가 할 때

 

어떻게 모델의 완성도를 측정할 수 있을까?

 

Accuracy (정확도) 만 가지고 측정이 가능할까?

 

이번 포스팅에서는 여러 머신러닝에서 통상적으로 쓰이는 지표들에 대해서 알아보도록 한다

 

Accuracy, Recall, Precision, F1score, PRcurve, AP, mAP, IOU

 

+confusion matrix..

 


 

 

 

 

우선 아래의 Confusion Matrix 에 대해 간단히 알아보도록 하자

TP FN FP TN 의 네 가지 분류가 있고

 

앞 : T F

뒤 : P N 으로 나뉨을 알 수 있다.

 

P : predict - ex) 사과가 있다

N : negative - ex) 사과가 없다

 

T : true - 예측한 것이 맞았다

F : false - 예측한 것이 틀렸다.

 

이제 다시 표를 보며 TP FN FP TN 이 각각 무슨 의미를 갖는지 한번 생각해보자

 

 

 

 


 

 

Accuracy (정확도)

 

전체 문제중에서 정답을 맞춘 비율이다.

 

Accuracy = TP+TN / TP+TN+FP+FN 으로

 

TP : 모델이 정답을 맞췄을 때

TN : 모델이 오답을 맞췄을 때

FP : 모델이 오답을 정답으로 잘못 예측했을 때

FN : 모델이 정답을 오답으로 잘못 예측했을 때

 

맞춘 예측의 수 / 전체 문제의 수 로 볼 수 있다.


Accuracy 예시

 

사과인지 아닌지 구분할 수 있는 예측 모델을 만든다

  예측 (predicted)
실제
(Actual)
분류 사과 다른과일
사과 1 (TP) 8 (FN)
다른과일 1 (FP) 90 (TN)

TP : 실제로 사과이면서 예측결과도 사과인 결과

TN : 실제로 다른과일이면서 예측결과도 다른과일인 결과

FN : 실제로 사과이지만 예측결과는 다른과일인 결과

FP : 실제로 다른과일이지만 예측결과는 사과인 결과

 

Accuracy = (TP+TN) / (TP+TN+FP+FN) = 1+90 / 1+90+1+8 = 91%

 

91%의 정확도를 보인다


하지만 Accuracy는 단지 예측의 성공에만 초점을 맞춘다.

 

Domain의 편중(bias)을 고려해야 한다.

 

만약 전체 데이터 중 사과의 비율이 99.999%라면

 

분류기는 99.9%이상의 Accuracy를 나타낼 수 있을 것이다. 사과가 아닌 과일이 거의 없으니깐.

 

하지만 희박한 가능성으로 발생할 상황에 대해서 제대로 분류를 해주는지는 알 수 없다.

 

그래서 recall(재현율) 지표가 필요하다.

 

 

 

 

 


 

 

Recall(재현율)

 

Recall = TP / (TP+FN)

 

실제로 정답이 True인 것들 중 분류기가 True로 예측한 비율

(True가 발생하는 확률이 적을때 사용하면 좋다)

 

ex) 여름인 현재 내일 시간당 1m 이상의 눈이 내릴지 여부를 예측

  예측(predicted)
실제 (Actual)   온다 안온다
온다 0 (TP) 1 (FN)
안온다 0 (FP) 99 (TN)

만약 분류기가 위와 같이 언제나 안온다 로 예측을 한다면 Accuracy 는 99%겠지만 TP가 0이니 Recall 은 0이 된다.

 

Recall이 높다는 것은 알고리즘이 관련있는 결과를 최대한 많이 가져왔다는 의미


하지만 Recall도 완벽한 통계지표가 아니다.

 

만약 (여름인 현재 내일 시간당 1m 이상의 눈이 내릴지 여부를 예측) 에서 언제나 눈이 온다 라고 답하는 분류기가 있다면 Accuracy는 낮을테지만 눈이 많이 온 날 만큼은 정확하게 맞힐 수 있기 때문에 Recall은 1이 될 것이다.

 

따라서 Precision 지표가 필요하다.

 

 

 

 


 

 

 

 

Precision (정밀도)

 

Precision = TP / TP+FP

 

정답을 정답이라고 맞춘 개수(TP)를 (TP+정답을 오답이라고 판단한 개수) 로 나누어주면 된다.

 

분류기가 눈이 많이 내릴 것이라고 예측한 날 중 실제로 눈이 많이 내린 날의 비율을 구하는 것

 

Precision이 높다는 것은 알고리즘이 관련 결과를 그렇지 못한 것 대비 충분히 맞추었다는 의미로 볼 수 있다.


Recall의 반대개념 지표이기 때문에 각자 장단점이 반대이다.

 

따라서 recall 과 precision의 조화평균인 F1 score 가 필요하다.

 

 

 


 

 

 

F1 Score

 

F1 = (2 * Precision * Recall) / (Precision+Recall)

 

Precision과 Recall 둘 중하나가 0에 가깝게 낮을 때 지표에 잘 반영되게끔하여 모델의 성능을 나타낼 수 있게 한 것

(즉 일반적인 평균이 아니라 낮은 수치쪽으로 치우친다)

 

 

 

 


 

 

 

PR 곡선 (precision-recall 곡선)

 

confidence 레벨에 대한 threshold 값의 변화에 의한 물체 검출기의 성능을 평가하는 방법

 

confidence 레벨이 높다는 것은 알고리즘 자체가 확신을 가지고 있다는 것이지 정확도가 높다는 것은 아니다

 

confidence 레벨에 threshold(문턱값)을 일정 값을 주어 그 이상이면 검출 된 것으로 인정한다

 

그러므로 confidence 레벨에 대한 threshold 값 변화에 따라서 precision과 recall 값도 달라질 것이다.

 

70% TP
54% TP
90% TP
91% TP
15% FP
23% FP
86% TP
76% FP
34% TP
98% TP

총 15개의 데이터셋에서 10개의 데이터가 검출(detection) 되었다.

 

 

각각의 confidence level은 위의 표와 같다. 3개의 level이 threshold 값에 의해 FP로 분류되었다.

 

Precision = TP/(TP+FP) = 7/10 = 0.7

 

Recall = TP/(TP+FN) = 7/15 = 0.47

 

 

만약 threshold 값을 90으로 했다면 이를 넘는 값은 90 91 98 세가지로

 

Precision = 3/10 = 0.3

 

Recall = 3/15 = 0.2

 

 

이와 같이 confidence 레벨에 따라 threshold 값을 내려간다면 precision과 recall 값을 검출된 항목만큼 계산해낼 수 있을 것이다.

 

이들을 그래프로 나타낸 것이 PR 곡선이다.

 

우선 이를 위의 표로 PR을 계산해본다면

 

이를 그래프로 나타낸다면

 

 

이와 같은 PR 그래프를 그릴 수 있을 것이다.

Recall 값에 따른 precision 값을 확인할 수 있다.

 

 

 

 


 

 

AP (Average Precision)

 

PR곡선 Precision, Recall 을 그렸을 때 근사되는 넓이

 

PR곡선을 단조적으로 감소하는 그래프가 되도록 수정해준다.

 

이후 빨간 부분의 넓이를 구한 것이 AP 값이 된다.

 

PR곡선은 그래프로 성능을 판별할 수 있지만 하나의 숫자로 나타내지는 못한다

 

그에 반해 AP는 PR곡선을 단 하나의 숫자로 나타내어 성능을 나타낼 수 있다.

 

 

 

 


 

 

 

mAP (mean average precision)

 

class가 여러 개일 경우 적용한다

 

각 class 당 AP를 모두 합한 다음에 물체 class 개수로 나눈 값을 뜻한다

 

 

 

 


 

 

 

IOU (intersection over union)

 

iou = TP / (TP+FP+FN)

 

위와 같은 공식이 있지만 이는 바운더리 박스간 중첩 영역을 검사하는 것이므로

 

위와 같은 그림으로 더 잘 설명이 된다.

 

전체의 영역 중에서 겹치는 영역의 크기의 비율 IOU가 0.5가 넘는다면 검출 (TP) 되었다고 판단한다.

반면 0.5 미만이면 (FP)되었다고 판단한다.

 

 

 


이외에도 

 

'FPR' 'TPR' 'ROCcurve' '민감도' '특이도' 가 존재한다

반응형