두 값을 결합하는 방법

by SL

데이터를 분석할 때는 대상의 다양한 요소를 고려하지만 마지막에 가서는 여러 대안 중에 성능이 가장 좋은 하나를 골라야 되기도 한다. 성능을 결정짓는 요소는 종종 트레이드오프 관계에 있다. 정보검색 평가에 쓰는 정확도(Precision)와 재현률(Recall)을 예로 들면, 정확도는 검색엔진이 찾아온 문서 중에 적합한 문서의 비율이고, 재현율은 찾아야 할 문서 중에 검색엔진이 실제로 찾은 문서의 비율이다. 정말 확실하게 적합한 문서만 찾아서 정확도를 높이면, 재현율은 떨어질 수밖에 없다. 반대로 모든 문서를 다 적합하다고 하면 재현율은 100%까지 올라가지만 정확도가 처참하게 떨어진다. 그래서 랭킹 알고리즘은 둘 사이의 적당한 균형점을 찾아야 한다.

평가 관점에서 랭킹A가 좋은지 랭킹B가 좋은지 비교하려면 정확도와 재현율을 결합해서 하나의 정수값으로 만드는 게 편하다. 문제는 어떻게 합치느냐인데, 보통 많이 쓰는 것은 (산술)평균이다. 즉, (Precision+Recall)/2. 다르게 쓰면 a*Precision + (1-a)*Recall (a=0.5)이다. 만약에 Precision을 더 중시한다면 alpha값을 키우면 된다. 산술평균은 선형결합의 특수한 형태이다. 이런 선형 모델의 단점은 “굼뜨다”는 것이다. 무슨 소리냐고? 무식하게 모든 문서를 다 가져오는 랭킹 알고리즘의 재현율은 100%이다. 그럼 그 랭킹의 정확도가 설사 10%밖에 안 된다 하더라도 산술평균은 55%나 나오는 것이다.

평균을 계산하는 방법은 하나가 아니다. 오래전 교과서에서 배웠던 기하평균(Geometric Mean)과 조화평균(Harmonic Mean)이라는 게 있다.

$$Geometric Mean(a, b) = \sqrt{a b}$$
$$Harmonic Mean(a, b) = \frac{2 a b}{a + b}$$

위의 식에 보이는 것처럼 이들 평균에는 두 값을 곱하는 부분이 들어있다. 더하기에 비해 곱셈은 피연산자 각각의 값에 민감하다. 하나라도 값이 작으면 평균값이 크게 영향을 받는다. 실제로 그런지 확인해보자. a값을 0.5로 고정하고, b값이 0.0, 0.1, 0.2, … , 1.0으로 증가시켰을 때 산술평균, 기하평균, 조화평균이 어떻게 달라지는지 보자.

a05

b가 0이 되면, 산술평균은 0.25인데, 기하평균과 조화평균은 0으로 떨어진다. 아래 그림은 각각 a가 0.1일 때와 0.9일 때의 그래프이다. a가 0.1이면 b가 아무리 커져도 곱셈 기반의 평균은 산술평균에 비해 커지는 데 한계가 있음을 알 수 있다.

a01

a09

두 값을 결합하는 데 있어 절대적으로 더 좋은 방식이 있을 리는 없고, 그냥 문제의 성격에 따라서 더 적절한 방법이 있을 따름이다. 선형 결합이 가지는 장점이 분명 있지만, 의도에 따라서는 곱셈으로 결합하는 것도 괜찮지 않나 싶다.

참, 랭킹 알고리즘 평가 얘기로 돌아가면 F-measure라는 척도가 있다. 정확도와 재현율의 가중 조화평균(Weighted Harmonic Mean)이고 식은 아래와 같다.

F measure

여기서 $\alpha$가 0.5이면 정확하게 조화평균이 된다.

PS. 펀드의 성과를 평가하는 경우에도 다른 듯 비슷한 고민이 있는데, 거기에는 나누기가 이용된다. 펀드 평가 방법: 위험조정 수익률 지수

참고자료

  • Introduction to Information Retrieval, Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze, 2008