반응형

 

Precision@k, Recall@k, MAP는 랭킹 성능평가에서 많이 쓰입니다. Precision@k, P@k, Prec@k, Precision-at-k 등 다양하게 사용됩니다. 간단히 말하면 @k의 의미는 k 번째까지의 예측을 가지고 지표를 산정하는 것을 말합니다. 물론  MRR(Mean Reciprocal, Rank), nDCG(Normalized Discounted Cumulative Gain), DCG 등 다른 Ranking 지표도 있습니다. 이번에는 Precision@k, Recall@k, MAP에 대해서 알아보도록 하겠습니다.

Presion@3라면 3개까지의 예측/제안 결과 중에서 몇 개의 TP(특징 발견이 있다고-관련문서라고 맞춘 경우의 수)와 FP(특징이 발견되었다고-관련문서라고 예측했지만 실제로는 없는 경우의 수)를 가지고 계산할 수 있습니다.  Precision = TP / (TP+FP) 이니까요.

검색 엔진을 예로 들어 보겠습니다. 검색창에 '베이징 올림픽 대한민국'(질의1) 이라고 입력했을 때와 '대한민국 베이징 올림픽'(질의2)이라고 입력했을 때(2가지 질의에 대해서) 관련된 검색 결과를 잘 보여주는지 아닌지 평가한다고 가정해보겠습니다. 예를 드는 것이니 관련된 문서가 5개만 있다고 가정하겠습니다.

다시 말하면 질의에 적합한 문서들과 모델에서 순서대로 제안한 문서들을 가지고 계산할 수 있습니다. 정밀도(Precision)는 가져온 것 중에 얼마나 정확한 것이 많은가 를 측정하는 것이고 재현률(Recall)은 가져와야 할 문서 중에 얼마나 많이 가져왔는가를 측정하는 것입니다.

관련된 문서의 id = 1, 2, 3, 4, 5

질의1이 가져온 문서 id = 9, 2, 1

질의2가 가져온 문서 id = 1, 7, 8

 

@1에 대해서(즉, 가져온 1개까지에 대해서) 정말도와 재현율을 구해보겠습니다.

질의 1이 가져온 문서 id = 9

Precision@1 = 가져온 문서중 관련된 문서 수 / 가져온 문서수 = 0 / 1 = 0 = 0%

Recall@1 = 가져온 문서중 관련된 문서 수 / 전체 관련된 문서수 = 0 / 5 = 0 = 0%

그럼 질의2에 대해서 계산해 보겠습니다.

질의 2가 가져온 문서 id = 1

Precision@1 = 가져온 문서중 관련된 문서 수 / 가져온 문서수 = 1 / 1 = 1 = 100%

Recall@1 = 가져온 문서중 관련된 문서 수 / 전체 관련된 문서수 = 1 / 5 = 0.2 = 20%

 

@2에 대해서(즉, 가져온 2개까지에 대해서) 정말도와 재현율을 구해보겠습니다.

질의 1이 가져온 문서 id = 9, 2

Precision@1 = 가져온 문서중 관련된 문서 수 / 가져온 문서수 = 1 / 2 = 0.5

Recall@1 = 가져온 문서중 관련된 문서 수 / 전체 관련된 문서수 = 1 / 5 = 0.2

그럼 질의2에 대해서 계산해 보겠습니다.

질의 2가 가져온 문서 id = 1, 7

Precision@1 = 가져온 문서중 관련된 문서 수 / 가져온 문서수 = 1 / 2 = 0.5

Recall@1 = 가져온 문서중 관련된 문서 수 / 전체 관련된 문서수 = 1 / 5 = 0.2

 

마지막으로 @3에 대해서(즉, 가져온 3개까지에 대해서) 정말도와 재현율을 구해보겠습니다.

질의 1이 가져온 문서 id = 9, 2, 1

Precision@3 = 가져온 문서중 관련된 문서 수 / 가져온 문서수 = 2(2하고 1) / 3 = 0.6

Recall@3 = 가져온 문서중 관련된 문서 수 / 전체 관련된 문서수 = 2 / 5 = 0.4 

그럼 질의2에 대해서 계산해 보겠습니다.

질의 2가 가져온 문서 id = 1, 7, 8

Precision@3 = 가져온 문서중 관련된 문서 수 / 가져온 문서수 = 1(1번 문서) / 3 = 0.3 

Recall@3 = 가져온 문서중 관련된 문서 수 / 전체 관련된 문서수 = 1 / 5 = 0.2 = 20%

 

@k의 숫자에 따라, 즉, @1, @2, @3에 따라 Precision과 Recall 값이 바뀌는 것을 볼 수 있습니다. 3개 중에서 관련된 문서를 몇 개 가져왔는지 계산하는 것과 10개 중에서 관련된 문서를 몇 개 가져왔는지를 계산하는 것은 당연히 달라져야겠습니다. 이 문서 개수는 기본적으로 검색 결과 첫 화면에 몇 건이 보일 것이냐에 따라 기준이 달라질 것 같습니다.

설명의 편의를 위해서 관련 문서가 동일한 경우로 가정했지만 실제로는 질의별로 관련 문서가 다를 수 있으니 변경해서 산출하면 됩니다.

 

 

Average Precision

위 내용을 이용해서 각 질의에 대한 Average Precision을 구해보면 아래와 같습니다.

Average Precision = (정확한 문서를 가져왔을 경우 Precision 값)의 모든 합 / 정확한 문서를 가져온 횟수

질의 1의 Average Precision => ( 0 + 0.5 + 0.6 ) / 맞은 개수 = 1.1 / 2 = 0.55

질의 2의 Average Precision => (1 + 0.5 + 0.3 ) / 맞은 개수 = 1 / 1 = 1

 

Mean Average Precision(MAP)

mAP는 모델에 대한 성능을 나타냅니다. 즉 모든 테스트 질의 별 Average Precision을 가지고 계산합니다.

질의 별 Average Precision의 총합 / 질의 건수 = (0.55 + 1) / 2 = 0.775

 

같은 방법으로 다른 모델의 테스트 결과를 계산함으로써 다른 모델과 성능을 비교할 수 있습니다.

 

반응형

+ Recent posts