Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

검색은 망망대해에 투망을 던져서 원하는 고기를 잡는 행위에 비유되곤 한다. 이때 우리는 투망범위를 조절함으로써, 잡을 수 있는 물고기의 종류와 양을 어느정도 결정할 수 있을 것이다. 투망범위를 넓게하면 많은 물고기를 건져올릴 수 있겠지만 많은 물고기를 건져올린다는게 항상 좋은건 아니다. 원하지 않는 쓸데없는 물고기들도 잔뜩 올라와서 골라내는 작업에 많은 시간을 소비할 수 있기 때문이다.

투망범위를 작게 하면, 원하는 물고기만 잡을 수 있겠지만 걸려든 물고기의 양이 너무적은 문제가 발생할 수 있다. -혹은 아예 걸려들지 않을 수도 있을 것이다- 그러므로 그물의 눈을 적당히 조절할 필요가 있다.

문서의 바다에서 원하는 검색어를 포함하는 문서를 찾아야 한다는 점에서 검색(:12)도 투망과 비슷하다고 볼 수 있다. 검색어와 관련된 문서를 많이 찾아내면, 문서의 양이 많아서 좋을 수도 있지만 필요없는 문서가 다수 포함될 수 있다. 반면 보수적인 알고리즘(:12)을 적용해서 적은양의 문서를 찾아내면, 문서의 양이 너무 적어져서 원하는 문서가 검색되지 않는 문제가 발생할 수 있다.

검색에서는 이를 recallprecision으로 나타낸다.

precision

가져온 문서중 실제관련있는 문서의 비율이다. - 그물에 걸린 물고기들 중 실제 잡기 원하는 물고기의 비율 -

https://lh4.googleusercontent.com/-fKMv0sjES7s/UAeZuO6oD6I/AAAAAAAACPE/YSs_77equso/s800/information3.png

파란점 : 관련있는 문서 빨간점 : 검색은 되었지만 관련은 없는 문서

다음과 같은 공식으로 나타낼 수 있다.

https://lh3.googleusercontent.com/-7V2d4KfBMoM/UAeZuG4zYwI/AAAAAAAACPM/YyHvsjxVEXI/s800/information1.png

Recall

전체 문서셋에 있는 관련있는 문서셋 중에서 건져올린 문서의 비율이다. - 그물을 던진 범위 -

https://lh3.googleusercontent.com/-xGd6_uTBf3s/UAeZuB-vnZI/AAAAAAAACPA/4_4F-PvuGYY/s800/information2.png

파란점 : 관련있는 문서 빨간색원 : 실제 찾아낸 문서

https://lh3.googleusercontent.com/-usAAETx0qj0/UAeZuYye_DI/AAAAAAAACPQ/GW-tny5Jp6g/s800/information4.png

100개의 문서셋이 있고, 이중 리눅스(:12)와 관련있는 문서가 30개 였다고 가정해보자. 사용자가 쿼리어를 주었을 때, 검색엔진(:12)이 15개의 결과를 되돌려주고, 첫 페이지에 표시되는 상위 10개의 문서중 실제 리눅스와 관련된 문서가 8개였다면 precision과 recall은 아래와 같이 계산될 수 있다.
상위 10개에서의 precision = 8/10 = 0.8
recall = 15/30 = 0.5 

precision 과 Recall 의 관계

일반적으로 이들은 서로 반비례관계에 있다. - 반비례라고 보기엔 애매모호한 면이있다. 어디까지나 일반적인 경우를 예로 한다 -
  1. Recall을 높일 경우 : Recall을 높이면 많은 문서를 가져오게 된다. 여기에는 관련있는 문서도 포함되겠지만 그렇지 않은 문서도 포함이 된다. 결국 precision이 낮아지게 될 것이다.
  2. Recall이 낮을 경우 : 문서의 범위를 한정할 수 있으므로, precision이 높아지게 될 것이다. 그러나 범위가 한정되는 만큼, 많은 관련있는 문서를 놓치게 될 것이다.
검색서비스에 있어서 이들의 균형을 맞추는 것은 매우 중요하다. 또한 검색서비스의 종류에 따라 어느쪽을 중요시 할건지도 달라진다.

웹문서

검색의 대상을 웹문서로 하는 경우를 생각해보자. 웹에는 대량의 문서가 존재하며, 이 중 거의 대부분은 주어진 쿼리에 대해서 연관성이 없거나 아주 약한 연관성을 가지고 있다. 전체 문서셋중 아주 일부만이 봐줄만한 연관성을 가지고 있을 뿐이다. 그러므로 Recall을 낮추어서 precision을 높여줄 필요가 있다. 안그러면 엄청나게 많은 별로 유사하지 않는 문서들의 소용돌이에서 헤엄치게 될 것이다.

Recall을 낮췄음으로 놓치는 문서들이 생기게 될 것이다. 하지만 문서의 양이 워낙 많고, 많은 연관성 있는 문서들이 비슷비슷한 내용들을 가지고 있을 것이라고 판단할 수 있으므로, 어느정도 놓치는 것은 무시한다.

논문

논문은 문서의 양이 그렇게 많지 않다. 또한 연관성이 적어보이는 논문이라도 이용자에 따라서 매우 중요한 논문일 수 있다. 그러므로 Recall을 높이고 precision을 낮추는 방향으로 튜닝을 해야 할 것이다.

참고문헌

  • http://www.emh.co.kr/xhtml/google_search_engine.html
  • http://en.wikipedia.org/wiki/Information_retrieval