UIUC CS410 — 검색 시스템 평가하기(Cranfield evaluation methodology)
이 내용은 지난번에 포스팅한 F1-Measure(F1-Score)보다 이전에 나왔어야 하는 내용이다. Precison과 Recall 자체가 검색 시스템을 평가하기 위한 항목 안에 들어있기 때문이다.
검색 시스템은 여러 측면으로 평가할 수 있겠지만 주로 effectiveness or accuracy, efficiency, 그리고 usability가 주요 평가항목들 중 하나인데, 이 중에서 CS410에서는 effectiveness과 accuracy에 대해만 이야기하고 있다. 그 이유는 efficiency과 usability는 특별히 검색엔진”만”의 내용은 아니기 때문.
검색엔진 effectiveness/accuracy 측정을 위해서는 Cranfield 측정법 (Cranfield Evaluation Methodology)을 사용하는데 이 방법은 검색엔진 뿐만 아니라 이미지 처리와 같이 대부분의 empirically defined problem 들에서 널리 사용된다. 단어가 뭔가 대단하고 있어보이는데, 별 이야기는 아니고 뭔가를 만든 다음에 관찰해보고 혹은 실험해 보고, 그 결과를 통해서 원래의 구현을 고쳐나가고, 또 관찰 및 실험을 하는 모든 형태에 이 측정법이 사용될 수 있다. (공돌이들에게는 아주 익숙한 그 방법들)
그래서 이 Cranfield evaluation methodology로 검색 시스템을 평가할 텐데, 하나만 갖고 평가해서는 어느게 나은지 알 수 있을리가 없다. 그래서 검색시스템 A와 B를 비교한다고 하자.
우선 테스트에 사용할 문서들의 셋을 만든다(혹은 모은다). 각 문서를 D1, D2, D3, … Dn 라고 하자. 그리고 마찬가지로 검색 시스템에 사용할 질의어들의 셋을 만든다. 각 단어들을 Q1, Q2, Q3, …, Qm 라고 하자. 그리고 또 하나 준비해야 할 것이 있는데 바로 “인간 사용자” 가 직접 개입해서 바로 이전에 준비한 질의어들과 문서들간의 연관성을 미리 판단해서 표시를 해 둔 Relevance Judgements가 필요하다. ‘나는 질의어 Q1이 나왔을 때 검색결과로 D3이 나오는게 맞다고 생각해’ 또는 ‘그 결과를 보길 기대해’ 라는 뜻.
테이블로 표시하자면
Q1 D1
Q1 D2
Q1 D3
Q1 D4
Q1 D5
...
Q2 D1
Q2 D2
Q2 D3
...이렇게 질의어와 문서간 하나씩 짝을 만들어 놓고, 실제 사람이 직접 문서를 살펴보면서 문서가 질의어와 연관이 있으면 +로 표시를 하고 관련이 없으면 -로 표시를 한다. 그러면 다음과 같은 테이블을 가질 수 있다. ( + — 표시는 예를 들기 위해서 임의로 함 )
Q1 D1 +
Q1 D2 +
Q1 D3 -
Q1 D4 -
Q1 D5 +
...
Q2 D1 -
Q2 D2 +
Q2 D3 +
...모든 준비가 끝났다. 이제 검색어 Q1 하나를 골라서 검색 시스템 A와 B에 넣고 검색을 해본다. (이를테면 ‘컴퓨터’ 라는 단어를 구글과 네이버에 각각 넣고 검색하는 식) 그러면 결과가 나올텐데 이걸 각각 Ra와 Rb라고 하자.
시스템 A의 검색결과인 Ra를 봤더니 D2, D1, 그리고 D4가 검색되어 나왔다. 우리가 준비했던 Relevance Judgements를 살펴보면 질의단어 Q1에 대해서 사람이 직접 표시한 관련도는 Q1 D2 는 +, Q1 D1은 +, 그리고 Q1 D4는 -였다.
똑같은 식으로 시스템 B의 검색결과인 Rb를 봤더니 D1, D4, D3, D5, D2 가 나왔는데 이걸 relevance judgements와 비교해보면 Q1 D1 은 +, Q1 D4 는 -, Q1 D3는 -, Q1 D5는 +, 그리고 마지막으로 Q1 D2는 +였다.
이 결과를 한번 해석해 보자.
시스템 A는 전체 가능한 문서 D1 … Dm의 m개 중에서 3개의 결과를 리턴했다. 그리고 그 3개의 문서 중 relevance judgements를 통해서 + 로 표시된 문서는 2개가 있다. 시스템 B는 전체 가능한 문서 D1 … Dm의 m개 중에서 5개의 결과를 리턴했다. 그리고 그 5개의 문서 중 relevance judgments를 통해서 + 로 표시된 문서는 3개가 있다.
어느 시스템의 결과가 더 나은 것인가?
A는 3개의 결과 중에 “인간이 직접 판단한 해당 검색어와 관련된 문서” 가 2개가 있어서 precision이 2/3이다. B는 5개의 결과 중에 관련된 문서가 3개가 있어서 precision은 3/5이다. 단순비교를 해보면 (10/15) vs (9/15) 이므로 시스템 A가 뽑아낸 Ra가 더 정확한 것 같다.
하지만 만약에 누군가가 “나는 전체 결과 중에 얼마나 관련된 문서의 %가 많은가가 중요한 게 아니고 최대한 관련 문서의 갯수가 많은 시스템이 더 좋아” 라고 한다면 어떻게 되겠는가? 이를테면 당신이 미국 국토안보부(Department of Homeland Security, DHS)에서 일하는 사람이고, 지금 당신이 해야 하는 일이 트위터 혹은 페이스북의 포스팅중에서 테러리스트와 관련된 내용을 뽑아내서 미리 테러를 막는 일을 한다면?
단순히 검색 결과에서 실제 테러리스트와 관련된 내용의 %가 많은 시스템을 선호할까? 아니면 검색 결과 대비 %는 적더라도( = 정확도가 떨어지더라도 ) 절대적인 테러리스트 관련 건수를 많이 리턴해주는 시스템을 선호할까? 아마도 후자일 것이다. 자 이렇게 실제로 연관되어 있는 문서의 갯수 대비 검색결과가 찾아낸 연관문서의 비율을 따지는 게 Recall이다. 실제 존재하는 테러리스트 100명 중에 검색 시스템이 리턴한 결과에 해당 테러리스트 중 30명을 포함하고 있다면 Recall은 30/100 이다.
같은 내용으로 위의 시스템 A와 B중 어느쪽이 recall기준으로 나은 검색결과를 제공해 주는지를 알아보자. 방금 전의 테러리스트 예에서 봤듯이 이 recall을 계산하려면 입력한 검색어 Q1과 연관된 문서가 얼마나 문서세트 안에 존재하는지를 알아야 한다. 이 값은 relevance judgements 에서 해당 질의어와 짝으려 연결된 문서들 중에 + 로 마킹된 페어의 개수를 세어보면 되는데, 여기서는 편의상 해당 검색어 Q1과 관련된 문서가 전체 문서 세트 중에 10개가 있다고 가정하자.
그러면 검색 시스템 A의 recall은 2 / 10 이 되고, B의 recall은 3/ 10이 된다. Recall의 기준으로 보면 시스템 B가 A보다 우수하다.
그래서 어느쪽이 나은 시스템이냐고? “It depends”.
여기서부터 연결되는 내용은 이전에 포스팅했던 Precision 과 Recall, 그리고 F-Measure와 관련된 내용을 보면 되겠다.
