Precision과 Recall

Posted 2013.02.07 11:00

 Precision과 Recall은 통계가 들어간 논문을 봤던 사람이라면 한번쯤은 봤을 개념이다. 대략적인 개념이야 어깨 넘어로 들었다고 하지만 실제로 이를 계산하려고 하면 헛갈릴 때가 많다. 그래서 정리도 한번 할 겸 이번 포스팅을 시작한다. 


 Precision과 Recall을 계산하기 위해선 아래 표에 대해서 알아야 한다. 

 (T: True, F: False, P: Positive, N: Negative)

 

 실제 값

실제 값

추정 값

 TP: 1이라고 예측 했는데 실제론 1

 FP: 1이라고 했는데 실제론 0

추정 값 

 FN: 0이라고 예측 했는데 실제론 1

 TN: 0이라고 했는데 실제론 0 


 기본적으로 Precision Recall은 1 or Nothing 문제에 적합 한 것 같다. 즉 multi class 문제에는 정의하기 조금 애매해 지는 것 같다. 여튼 다시 원래 주제로 돌아오자면, Precision, Recall, Accuracy는 다음과 같이 정의된다. 


 '$Precision = \frac{tp}{tp+fp}$'

 '$Recall = \frac{tp}{tp+fn}$'

 '$Accuracy = \frac{tp+tn}{tp+tn+fp+fn}$'


 이것의 물리적 의미를 살펴보면,

 Precision의 경우 내가 1이라고 예측한 것(positive) 중에서 실제로 1인 것(TP)의 비율이다. 즉 내가 예측을 하긴 했는데 이게 얼마나 잘 하는지에 대한 것이다. 

 Recall의 경우 실제로 1인 것 중에서 내가 correct를 얼마나 했나를 나타낸다. 사실 좀 애매한 개념이긴 하다. 이 개념은 Sensitivity라고도 불린다. 즉 전체 1 중에 내가 몇개를 맞췄냐는 것이다. 

 Accuracy는 그런 것 없고 그냥 전체 중에서 맞게 예측한 것이 몇개를 나타낸다. 



 자 그럼 문제가 하나 있다. positive와 negative가 있는 문제가 아니라 그냥 label을 맞추는 문제라면? 


 내 생각에는 두 가지 방법이 있을 것 같다. 

 하나는 특정 label에 대한 precision recall을 그릴 수 있을 것 같다. 즉 여러 개의 label일 때 개별 label에 대해서 위의 계산을 다 하는 것이다. 그래서 해당 label이 맞으면 positive, 틀리면 negative로 하는 것이다. 

 다른 하나는 특정 label에 대해서 계산을 하고, 구한 TP, FP, FN, TN을 모두 다 더하는 것이다. 


 

'Enginius > Machine Learning' 카테고리의 다른 글

Kernel Principal Component Analysis (KPCA)  (0) 2013.04.26
Softmax activation이란?  (0) 2013.03.05
Precision과 Recall  (0) 2013.02.07
Distributed Gaussian Process under Localization Uncertainties  (0) 2013.01.08
Deep Learning Rocks. still  (0) 2012.12.13
Reinforcement Learning  (10) 2012.12.04
« PREV : 1 : ··· : 88 : 89 : 90 : 91 : 92 : 93 : 94 : 95 : 96 : ··· : 142 : NEXT »