검색 품질은 어떻게 평가할까? 정밀도, 재현율부터 nDCG, CTR까지

지난 글에서는 검색이 어떻게 동작하는지 살펴봤습니다. 그렇다면 검색이 "잘" 동작하고 있는지는 어떻게 알 수 있을까요? 사전에 동의어를 하나 추가했을 때 검색이 정말 좋아졌는지, 오히려 나빠졌는지 판단하려면 기준이 필요합니다.

검색 품질 평가는 크게 두 가지로 나뉩니다.

구분방법장점단점
오프라인 평가사람이 검색 결과의 관련성을 직접 판정정확하고 이유를 알 수 있음사람이 판정해야 해서 규모가 작음
온라인 평가실제 사용자의 행동 로그로 측정규모가 크고 실제 반응을 반영왜 그런 결과가 나왔는지 알기 어려움

이번 글에서는 두 가지를 차례로 정리해 보겠습니다.

1. 오프라인 평가의 출발점: 정답 데이터

오프라인 지표를 계산하려면 먼저 "이 검색어에 이 결과가 맞는가?"에 대한 정답이 있어야 합니다. 보통 사람이 검색 결과를 하나씩 보고 관련성을 판정해서 만듭니다.

판정은 두 가지 방식이 있습니다.

  • 이진 판정: 관련 있음(1) / 없음(0)
  • 등급 판정: 정확(2) / 부분 일치(1) / 무관(0)처럼 단계를 나눔

여기서 중요한 건 판정 기준을 미리 정해두는 것입니다. 예를 들어 "울 니트" 검색에서 울 혼방 니트는 정확인지 부분 일치인지, 소재 정보가 없는 니트는 어떻게 볼지를 먼저 정해두지 않으면, 사람마다 또는 날마다 판정이 달라져 지표 자체를 믿을 수 없게 됩니다. 판단할 근거가 부족한 경우는 억지로 분류하지 않고 따로 표시해 두는 것도 좋은 방법입니다.

2. 정밀도와 재현율: 정확하게 찾았나, 빠짐없이 찾았나

가장 기본이 되는 두 지표입니다.

  • 정밀도 (Precision): 보여준 결과 중 맞는 것의 비율

    → "나온 것 중에 쓸모 있는 게 얼마나 되나?"

  • 재현율 (Recall): 찾아야 할 정답 중 실제로 찾아낸 비율

    → "찾아야 할 걸 얼마나 빠짐없이 찾았나?"

정밀도 = 결과 중 맞는 개수 ÷ 보여준 결과 개수
재현율 = 결과 중 맞는 개수 ÷ 전체 정답 개수

예시

"울 니트"에 해당하는 상품이 전체 6개 있다고 해보겠습니다. 검색 결과 상위 5개 중 3개가 정답이었다면,

  • 정밀도 = 3 ÷ 5 = 0.6
  • 재현율 = 3 ÷ 6 = 0.5

두 지표는 분모가 다르다는 것이 핵심입니다. 정밀도는 "보여준 것"이 기준이고, 재현율은 "찾아야 할 것"이 기준입니다.

둘은 보통 반대로 움직입니다

동의어 사전으로 예를 들어보겠습니다.

  • "아우터 = 코트 = 패딩 = 점퍼"처럼 넓게 묶으면, 더 많은 상품이 걸리니 재현율은 오르지만, "코트"를 찾는 사람에게 패딩이 섞여 정밀도는 떨어집니다.
  • 반대로 좁게 묶으면 엉뚱한 결과는 줄지만 놓치는 상품이 생깁니다.

그래서 둘 중 하나만 보면 안 되고, 함께 확인해야 합니다. 둘을 하나의 숫자로 합친 지표가 F1 점수입니다.

F1 = 2 × 정밀도 × 재현율 ÷ (정밀도 + 재현율)
   = 2 × 0.6 × 0.5 ÷ 1.1 ≈ 0.55

검색에서는 @K를 붙여 씁니다

사용자는 결과를 끝까지 보지 않기 때문에, 검색에서는 상위 K개만 보고 계산하는 경우가 많습니다.

  • Precision@10: 상위 10개 중 정답 비율
  • Recall@10: 전체 정답 중 상위 10개 안에 들어온 비율

3. MRR: 첫 번째 정답이 얼마나 위에 있나

MRR (Mean Reciprocal Rank)은 처음으로 정답이 나온 순위에 주목합니다. 정답이 1위면 1점, 2위면 1/2점, 3위면 1/3점을 주고, 여러 검색어의 평균을 냅니다.

검색어첫 정답 순위점수
울 니트1위1
트렌치코트3위1/3 ≈ 0.33
와이드 슬랙스2위1/2 = 0.5
MRR = (1 + 0.33 + 0.5) ÷ 3 ≈ 0.61

특정 상품 하나를 찾는 검색(예: 상품명이나 브랜드 검색)처럼 정답 하나만 빨리 찾으면 되는 상황에 잘 맞는 지표입니다.

4. nDCG: 순서와 정도까지 반영하기

정밀도는 순서를 고려하지 않습니다. 상위 5개 중 정답 3개가 1~3위에 있든 3~5위에 있든 똑같이 0.6입니다. 하지만 사용자 입장에서는 정답이 위에 있을수록 훨씬 좋겠죠.

nDCG (normalized Discounted Cumulative Gain)는 이 두 가지를 반영합니다.

  • 등급 판정을 쓸 수 있습니다 (정확 2, 부분 1, 무관 0)
  • 아래로 갈수록 점수를 할인합니다

계산 방법

  1. DCG: 각 결과의 관련성 점수를 순위에 따라 할인해서 더합니다.
DCG = Σ 관련성 점수 ÷ log₂(순위 + 1)
  1. IDCG: 같은 결과를 가장 이상적인 순서로 정렬했을 때의 DCG입니다.
  2. nDCG = DCG ÷ IDCG (0~1 사이 값, 1에 가까울수록 좋음)

예시

상위 5개 결과의 판정이 [정확, 무관, 부분, 무관, 정확]이었다고 해보겠습니다.

순위판정점수할인 (log₂(순위+1))기여
1정확212.00
2무관01.5850
3부분120.50
4무관02.3220
5정확22.5850.77
DCG3.27

이상적인 순서는 점수가 큰 것부터 [정확, 정확, 부분, 무관, 무관]입니다.

IDCG = 2/1 + 2/1.585 + 1/2 = 2 + 1.26 + 0.5 = 3.76
nDCG = 3.27 ÷ 3.76 ≈ 0.87

순서가 왜 중요한지 비교해 보기

같은 결과를 순서만 바꿔 [무관, 무관, 부분, 정확, 정확]으로 보여줬다면 어떨까요?

DCG = 0 + 0 + 1/2 + 2/2.322 + 2/2.585 = 0.5 + 0.86 + 0.77 = 2.13
nDCG = 2.13 ÷ 3.76 ≈ 0.57
결과 순서Precision@5nDCG@5
정확, 무관, 부분, 무관, 정확0.60.87
무관, 무관, 부분, 정확, 정확0.60.57

정밀도는 똑같이 0.6인데 nDCG는 크게 차이가 납니다. 좋은 결과를 위에 보여줬는지를 평가하려면 nDCG가 더 적합하다는 걸 알 수 있습니다. 그래서 랭킹을 평가할 때 가장 널리 쓰이는 지표 중 하나입니다.

5. 오프라인 지표 한눈에 보기

지표보는 것언제 쓰나
Precision@K상위 K개가 얼마나 정확한가엉뚱한 결과가 섞이는지 볼 때
Recall@K정답을 얼마나 빠짐없이 찾았나사전 누락으로 놓치는 상품을 볼 때
F1정밀도와 재현율의 균형둘을 한 숫자로 비교할 때
MRR첫 정답이 얼마나 위에 있나특정 상품 하나를 찾는 검색
nDCG@K좋은 결과가 위에 있는가 (등급 반영)랭킹 순서를 평가할 때

6. 온라인 평가: 사용자의 행동으로 측정하기

사람이 판정하는 오프라인 평가는 정확하지만, 수많은 검색어를 모두 판정할 수는 없습니다. 그래서 실제 서비스에서는 사용자 행동 로그로 만든 지표를 함께 봅니다.

지표계산알 수 있는 것
무결과율결과가 0건인 검색 ÷ 전체 검색사전 누락, 오타, 신조어
CTR (클릭률)클릭 수 ÷ 노출 수결과가 관심을 끌었나
CVR (전환율)구매 수 ÷ 클릭 수 (또는 검색 수)원하는 걸 실제로 찾았나
재검색률검색 직후 다른 검색어로 다시 검색한 비율첫 결과가 실패했다는 신호
평균 클릭 순위클릭한 상품의 평균 순위원하는 상품이 아래에 묻혀 있나

온라인 지표의 함정

온라인 지표는 해석에 주의가 필요합니다.

  • CTR이 높다고 정확한 것은 아닙니다. 썸네일이 예쁘거나 가격이 싸서 클릭했을 수도 있습니다.
  • 체류시간이 길다고 좋은 것은 아닙니다. 원하는 걸 못 찾아서 계속 스크롤했을 수도 있습니다.
  • 위에 있는 결과는 위에 있다는 이유만으로 더 클릭됩니다. 이를 위치 편향이라고 합니다.

그래서 지표 하나만 보지 않고 여러 지표를 함께 봐야 합니다. 예를 들어 체류시간이 늘었다면, 전환율이 같이 올랐는지 재검색률이 같이 올랐는지를 확인해야 좋아진 건지 나빠진 건지 판단할 수 있습니다.

7. A/B 테스트: 정말 좋아졌는지 확인하기

사전을 바꾸거나 랭킹을 수정한 뒤 지표가 좋아졌다고 해도, 그게 정말 변경 때문인지는 알 수 없습니다. 시즌이 바뀌었거나 할인 행사가 있었을 수도 있으니까요.

그래서 사용자를 무작위로 두 그룹으로 나눠 기존 방식(A)과 새 방식(B)을 동시에 보여주고 지표를 비교하는 A/B 테스트를 사용합니다. 같은 기간, 같은 조건에서 비교하기 때문에 외부 요인의 영향을 줄일 수 있습니다.

8. 오프라인과 온라인을 함께 쓰는 이유

오프라인 (nDCG 등)온라인 (CTR, CVR 등)
정확도높음 (사람이 판단)
규모작음
이유 파악가능
속도판정 시간이 필요
온라인 지표로 문제가 있는 검색어를 넓게 찾고
   ↓
오프라인 판정으로 원인을 정확하게 확인하고
   ↓
개선한 뒤
   ↓
A/B 테스트로 실제 효과를 검증합니다

마치며

정리하면 검색 품질 평가는 다음 질문들에 답하는 과정입니다.

  • 정밀도: 보여준 것 중에 맞는 게 얼마나 되나?
  • 재현율: 찾아야 할 걸 얼마나 빠짐없이 찾았나?
  • nDCG: 좋은 결과를 위에 보여줬나?
  • CTR, CVR, 재검색률: 실제 사용자는 만족했나?

어떤 지표도 혼자서는 완벽하지 않기 때문에, 각 지표가 무엇을 보여주고 무엇을 놓치는지 이해한 상태에서 함께 보는 것이 중요합니다. 그리고 그 모든 지표의 출발점은 결국 일관된 기준으로 만든 정확한 데이터라고 생각합니다.