Precision - Recall, 그리고 Type I, II error에 대해
Machine Learning & Pattern Recognition 2018. 4. 13. 15:40영상 처리에서 장소 인식과 같은 문제를 다룰 때, 내가 만든 프로그램이 얼마나 인식을 잘 하는지를 판별하기 위해 precision과 recall을 모두 활용한다고 한다.
간단하게 말하자면, precision은 식별기가 얼마나 정확하게 인식을 수행해냈는가
recall은 식별기가 대상을 얼마나 검출해냈는가라고 할 수 있다.
하나의 예로 여러 장의 사진을 입력으로 받으면 그 영상 내에서 의자를 검출해내는 식별기 A와 B가 있다고 가정해보자.
A의 경우, 여러 장의 사진을 지속적으로 받으면서 그 영상에 있는 객체에 대해서 B보다 더 많고 확실하게 추출해낸다. 그렇다면 이 식별기는 식별기 B보다 검출율(Recall)이 좋다고 할 수 있다. 그러나 A가 검출한 객체에서는 분명하게 의자인 객체도 존재하지만, 의자가 아닌 객체가 검출되는 경우도 종종 발생한다. 결국 이 A는 정확도(Precision) 면에서는 그리 좋다고 할 수가 없다.
반대로 B의 경우, 같은 수의 사진을 입력으로 받을 때 A보다는 상대적으로 훨씬 적은 양의 객체를 추출해낸다. 이로 인해 우리는 이 B의 검출율이 A보다 떨어진다는 것을 알 수 있다. 그러나 전체 검출된 객체에 대해서 이 객체가 의자일 확률을 계산할 때, B에서 검출된 객체가 의자인 확률이 압도적으로 높다면 이 식별기 B는 A보다 정확도가 좋다고 할 수 있다.
그렇다면 이 예에서 식별기 A와 B 중 어느 식별기의 성능이 좋은 것일까?
정답은 없다. 좋은 식별기라면 사실 검출율과 정확도를 모두 고려해야하기 때문이다. 정확도가 높아도 분명히 존재하는 객체들을 많이 추출해내지 못한다면, 반대로 검출을 많이해도 그 정확도가 떨어진다면, 이 두 경우는 좋은 식별기라고 할 수 없다.
따라서 객체 등을 인식하는 식별기를 만들기 위해서는 이 두 요인을 모두 고려해야만 한다.
이렇게 예를 들어서 설명한 정확도와 검출율을 수학적으로 표현을 하자면 다음과 같이 나타낼 수 있다.
식을 보면 네 가지 용어에 대해 적혀있다. True Positive, True Negative, False Positive, False Negative에 대한 설명은 아래 표를 보면 이해를 할 수 있다.
이에 대해서 이해를 할 때, "True"는 참, "False"는 거짓, "Positive"는 긍정적인 대답, "Negative"는 부정적인 대답이라고 여기면 된다.
좀 더 쉽게 이해를 돕기 위해 어떤 임의의 입력 영상이 진짜인지 가짜로 만들어진 것인지 판별하는 작업을 예로 들어 설명하겠다. 임의의 식별기가 임의의 입력 영상을 받게 되고, 진짜 가짜 여부를 검사한 뒤에 그에 대한 답을 내려줄 것이다. 식별 결과, 이 영상이 진짜 영상이라면 식별기는 긍정적인 대답(Positive)를 내놓을 것이고, 가짜 영상이라면 부정적인 대답(Negative)를 내놓을 것이다. 자, 그럼 이제 이 대답이 정답인지 오답인지를 판별해야한다. 만약에 식별기의 대답이 정답이면 "True", 오답이면 "False"가 되는 것이다.
즉, 위의 표에 있는 네 가지 경우를 정리하면 다음과 같이 말할 수 있다.
True Positive : 긍정적인 대답을 내놓았는데, 그게 참이다.
True Negative : 부정적인 대답을 내놓았는데, 그게 참이다.
False Positive : 긍정적인 대답을 내놓았는데, 그게 거짓이다. (Type I Error)
False Negative : 부정적인 대답을 내놓았는데, 그게 거짓이다. (Type II Error)
(사진 출처 : https://marginalrevolution.com/marginalrevolution/2014/05/type-i-and-type-ii-errors-simplified.html)
아마 위의 사진을 보면 두 에러 케이스에 대해 이해하기 쉬울 것이다(...)
다시 앞서 언급했던 식으로 넘어가서, Precision 식의 분모를 보면 True Positive와 False Positive 값을 모두 합했다. 즉, 분모에는 식별기가 긍정적인 대답을 내놓은 모든 경우가 값으로 들어간다. 반대로 Recall의 분모에서는 True Positive와 False Negative를 더했는데, 이는 식별기가 진짜 영상을 검출한 모든 경우를 의미한다. 정리하자면, Precision 식은 식별기가 진짜라고 검출한 모든 이미지에 대해 얼마나 정확하게 진짜를 검출했는가를, Recall은 식별기가 검출한 모든 진짜 영상에 대해 식별기가 얼마나 정확한 답을 많이 내놓았는가를 의미한다고 보면 된다.
(사진 출처 : Felzenszwalb, P. F., Girshick, R. B., McAllester, D., & Ramanan, D. (2010). Object detection with discriminatively trained part-based models. IEEE transactions on pattern analysis and machine intelligence, 32(9), 1627-1645.)