IR 연구를 하다 보면 매일 데이터를 접하고, 이를 통계적으로 해석하여 결론을 내리게 됩니다. 검색이 다루는 대상(문서, 질의어 등)이 불확정적인 대상이며, 검색의 목표 역시 결국에는 통계적으로 최대 다수의 사용자를 만족시키는 결과를 제공하는 것을 목표로 하기 때문입니다.

하지만 저는 불행히도 통계를 정식으로 배운 적이 없기에 이런 상황에서 항상 마음 한구석에 불편함을 느꼈습니다. 하지만, 이론적 틀이 없다는 약점은 스스로 자유롭게 사고할 수 있다는 기회를 제공하나 봅니다. 배우고 연구하면서 생긴 의문을 해결하기 위해 고민하고, 주변의 자문을 구하는 동안 통계라는 것이 단순히 학문이라기보다는 세상을 바라보는 방식이라는 느낌이 들었습니다.

통계적으로 세상을 바라본다는 것은 어떤 뜻일까요? 대부분의 통계 기법은 불확정적인 현상을 주어진 모델(주로 확률 분포) 중 하나에 대입하는 데에서 출발합니다. 모든 현상이 몇 안되는 분포에 들어맞으리라는 보장은 없지만, 중심극한정리로 설명되는 자연의 규칙성으로 말미암아 실제로 대부분의 현상은 정규분포로 대표되는 통계학적 모델에 부합합니다. (모델 선정이 적절한지는 그 자체로 통계학의 주요 관심사로 이를 모델비평(model criticism)이라고 합니다.)

일단 현상이 모델화되면 그 다음부터는 다양한 방법으로 데이터에 대한 결론을 유도할 수 있습니다. 모델과 관찰값을 비교하여 관찰값이 모델에서 나왔을 확률을 구할수도 있고, 서로 다른 관찰값으로부터 생성된 두 모델을 비교하여 서로 유의미한 차이가 있는지를 알아볼 수도 있습니다. 물론 모델에 의존하지 않는 통계 기법도 존재합니다만, 이들은 좀더 폭넓은 응용법위를 갖는 반면에 데이터에 대한 가정이 적은 만큼 정확성에 있어 제약을 받습니다.

이제 관심을 IR로 돌려봅시다. IR에서 내려야 하는 중요한 문제는 ‘새로운 알고리즘의 성능이 기존 알고리즘에 비해 훌륭한가?’입니다. 이는 위에서 언급한 두 모델을 비교하는 문제의 일종인데, 우선 기존 알고리즘과 새 알고리즘의 쿼리별 성능을 두 벡터의 형태로 얻고, 이 두 벡터가 하나의 분포에서 나왔다는 가설을 세우는 겁니다. 이때 세우는 가설은 우리가 증명하고자 하는 사실(새로운 알고리즘이 기존 알고리즘과 다른 분포에서 나왔다는 것)의 반대를 가정하기에 귀무가설(null hypothesis)라고 합니다.

이 과정은 두 사건(기존 알고리즘과 새 알고리즘의 성능)의 차이가 통계적으로 유의미한가(statistically significant)를 가리는 과정이기에 유의성 테스트(significance test)라고 하며, IR시스템의 평가를 다룬 최근 논문에서는 알려진 방법 중에 t-test를 사용하는 것을 권장하고 있으며, 적어도 50개의 토픽(질의어)를 대상으로 유의성 테스트와 상대적인 평가 지표(MAP)에서 10% 이상의 향상이 있는 경우에만 의미있는 성능 향상이라는 결론을 내고 있습니다.

통계 분석을 위해서는 주로 R이라는 패키지를 사용하는데, 이는 S라는 상용 통계 패키지의 공개 구현(implementation)으로 벡터와 행렬을 기본 데이터형으로 사용하는 등 Matlab과 유사한 형태를 띠나 좀더 통계 분석에 특화된 것으로 보입니다. R 참고문서로는 다음 자료를 추천합니다. 약간 생소한 언어학(linguistics) 데이터를 사용하고는 있지만, 기본 문법부터 고급 데이터 분석까지 충실히 설명하고 있습니다.

Reference