/*
written by kaspy (kaspyx@gmail.com)
*/
recall(재현률), precision(정확률), accuracy(정확도)
이 용어는 검색이나 정답률, 정보의질 등의 척도로써 중요한 평가요소로 사용되고 있는 용어인데, 가끔씩 많이 헷갈립니다.
논문 내용중, 특히 데이터베이스 검색이나, 자연어 처리에서 자주 나오는 용어인데, 이참에 공부하게되어서 정리를 하게되었습니다.
예를들어 네이버 처럼 검색에 대한 정보를 제공해주는 서비스가 있다고 가정해봅시다.
인터넷 상에는 굉장히 많은 정보가 있겠지요?? 모든 데이터... 그걸 모든 정답 후보라고 할수있습니다.
어떤 정보를 요청했을때, 거기에 맞는 정보를 제공해주는 검색의 척도로써 위의 세용어가 사용됩니다.
사용자가 검색 시스템에 어떤 검색어(맛집?? 막이런거) 를 입력하면 거기에 맞는 정보를 사용자에게 제공하는데 이를 아래처럼 도식화 해서 표현할수 있습니다.
A = 정답들
D = 모든 데이터
그럼 사용자가 원하는 정보(정답)들은 A라고 합시다. 그러나 방대한 정보들 중에서, 사용자가 원하는 정보(정답)만 완벽하게 100% 제공해주는 그런 시스템을 만들기는 굉장히 어렵습니다. 그래서 정답으로 추측되는 모든 정보를 검색시스템에선 사용자에게 보내줍니다.
그럼 사용자가 검색어를 가지고 쿼리를 날렸다고 합시다.
그럼 검색 시스템은 아래와 같은 결과 B를 사용자에게 날려줄 것입니다.
B = 검색시스템에서 제공해준 정보들 (빨강색 영역 +C)
C = 검색 시스템에서 제공해준 정답들 (노랑색 영역, A와 B교집합)
D = 모든 데이터
여기서 C(노랑색)는 검색 시스템으로부터 나온 사용자가 원하는 정보, 즉 정답들입니다. 그리고 빨간색 영역은 오답입니다. 그럼 여기서 각각의 용어를 수식화 할수 있습니다.
accuracy(정확도)는 검색서비스의 품질, 즉 정확성이라고 할수 있습니다.
그럼 recall과 precision의 차이점은 무엇일까요??
recall은 내가 검색 시스템으로 부터 얻은 정보중에 얼마나 정답이 포함되었는가 여부이고,
precision은 검색 시스템으로 부터 얻은 정보가 얼마나 정답일 가능성이 높은가 라고 할수있습니다.
이두가지 용어는 서로 Trade off 관계로 이어져있습니다. 일반적으로 recall이 높다면 precision이 낮아지고, precision이 높다면 recall은 낮아질수밖에 없습니다.
예를들어 어떤 검색 시스템에 검색어를 입력했더니 아래와 같은 결과 B를 사용자에게 전송해줬습니다.
recall은 굉장히 높습니다. A=C 이므로 위의 수식대로라면 (A/A) x 100 = 100, 즉 recall은 100%입니다. 즉 검색시스템으로 부터 받은 정보들 중에 내가원하는 정보(정답)들이 모두 포함되었다는 뜻 입니다.그러나 precision은??? B의 면적중에 C의 면적이니까 굉장히 낮을수 밖에(한30%??) 없겠네요. (그러나 받은 정보들이 정답일 확률은 적다.)
그렇다면 이번엔 precision이 높은 경우를 생각해봅시다. 어떤 검색어를 입력하였더니, 아래와 같이 결과 B를 시스템으로부터 제공받았습니다.
이렇듯 recall과 precision은 서로 상관관계가 존재할수밖에 없습니다.
물론!!! (앞에서말했듯이)정답의 영역과 동일하게 정보 A만을 출력해주는것이 최적화된 답안입니다. 그러나 그것이 거의 불가능하니, A에 맞을 만한 후보 정보 B를 제공해주는것이지요.
* 참고 자료 및 사이트
http://www.slideshare.net/nicbet/computing-accuracy-precision-and-recall-presentation
http://en.wikipedia.org/wiki/Precision_and_recall
http://www.creighton.edu/fileadmin/user/HSL/docs/ref/Searching_-_Recall_Precision.pdf