어쩌다데싸
추천시스템 평가지표 - Diversity는 어떻게 확인할까? 본문

추천시스템은 보통 하나의 지표만으로 평가되지 않습니다.
광고 추천이든 아이템 추천이든 CTR(클릭률)이나 CVR(전환율)을 주요 지표로 사용하는 경우가 많습니다. 하지만 이 지표들에만 집중했을 때는 필연적으로 마주하게 되는 문제가 있어요.
CTR과 CVR은 빠르게 관측할 수 있는 지표인 만큼, 추천시스템이 단기적인 성과에 집중하도록 만들기 쉽다는 점입니다.
추천시스템을 포함한 많은 제품 실험은 A/B 테스트를 통해 성과를 비교하는데, A/B 테스트는 보통 의사결정을 위해 제한된 기간 동안 진행됩니다. 특히 CTR이나 CVR처럼 빠르게 관측되는 지표는 1~2주 안에도 비교가 가능하지만, 리텐션이나 사용자 피로도처럼 장기적으로 나타나는 지표는 짧은 실험만으로 판단하기 어렵습니다.
A/B 테스트는 두 가지 선택지를 실제 사용자에게 나눠 보여주고, 어떤 쪽이 더 좋은 결과를 내는지 비교하는 실험입니다. 모델뿐만 아니라 로직, UI, 정책 변경 등 실제 사용자 반응 데이터를 통해 어떤 변경이 효과적인지 검증할 때 사용됩니다.
테스트 기간이 길어지면 더 많은 데이터를 얻을 수는 있지만, 그만큼 리스크도 커집니다. 실험 모델이 실제로 좋지 않은 방향이라면 더 많은 사용자에게 더 오랜 기간 나쁜 경험을 제공하게 될 수 있기 때문입니다.
저 역시 회사에서 진행했던 A/B 테스트는 대부분 2주 정도로 운영했고, 기존 모델 A와 실험 모델 B의 성과를 비교해 롤아웃할지, 추가로 개선할지 결정하곤 했습니다.
이때 가장 기본적인 비교 기준은 “2주 동안 CTR과 CVR 중 어느 쪽이 더 높았는가”입니다. 문제는 이렇게 되면 단기간에 빠르게 관측되는 지표만으로 추천 모델을 판단하게 된다는 점입니다.
예를 들어 인기도 편향 문제를 생각해볼 수 있습니다. A 모델은 가장 인기 있는 아이템을 주로 노출하고, B 모델은 상대적으로 다양한 아이템을 노출한다고 가정해보겠습니다. 단기간에는 인기 아이템을 노출하는 A 모델의 CTR이 더 높을 가능성이 큽니다. 이미 많은 사용자가 관심을 보인 아이템이기 때문입니다.
하지만 장기적으로는 사용자가 비슷한 아이템에 반복적으로 노출되면서 추천 피로도가 쌓이고, 새로운 아이템을 발견할 기회가 줄어들 수 있습니다. 반대로 B 모델은 다양한 아이템을 노출하면서 사용자가 새로운 취향을 발견할 기회를 제공하고, 장기적으로는 재방문율이나 콘텐츠 소비 범위 같은 지표에 긍정적인 영향을 줄 수 있습니다.
이처럼 짧은 기간의 A/B 테스트 결과만으로 추천 모델을 결정하면, 추천시스템이 CTR이나 전환율처럼 빠르게 관측되는 단기 지표에 과도하게 최적화될 수 있습니다. 그 결과 다양성, 신규 콘텐츠 발견, 사용자 피로도, 장기 리텐션과 같은 지표가 악화되어 장기적으로는 서비스 전체 성과가 낮아질 수 있습니다.
그래서 추천시스템을 평가할 때는 하나의 지표에만 집중하기보다 여러 지표를 함께 보는 것이 중요합니다. 이 글에서는 추천시스템을 평가할 때 사용하는 다양한 지표 중에서도 추천 결과가 얼마나 다양하게 구성되어 있는지를 나타내는 Diversity 지표를 중심으로 구체적인 계산 방법까지 정리해보려 합니다.
Diversity(다양성) 개념 정리
Diversity는 "사용자에게 얼마나 폭넓고 겹치지 않는 아이템을 추천하는가"를 의미합니다. Accuracy(정확도)와 종종 트레이드오프 관계에 있어요.
Diversity는 일반적으로 두 가지 수준에서 설명할 수 있습니다.
- Individual Diversity (사용자 기준 다양성) :
한 사용자에게 주어지는 추천 리스트 안에서 아이템이 서로 얼마나 다른가를 나타냅니다. 예를 들어 한 사용자가 운동화 한 켤레를 구매했다고 가정해보면, 추천 엔진은 "이 사용자는 운동화에 관심 있다"는 신호를 강하게 받게 됩니다. 그리고 메인 추천 10개를 모두 운동화로 채우죠. 이렇게 되면 사용자 기준 다양성이 떨어지게 됩니다. 반대로 Diversity를 고려한 추천은 운동화와 함께 운동복, 양말, 헬스 보충제 등 관련은 있지만 완전 유사하진 않은 아이템을 추천하는 겁니다. 이걸 측정하는 대표적 지표가 ILD(Intra-List Diversity)인데, 리스트 내 아이템 쌍들 간 평균 비유사도(dissimilarity)로 계산해요. - Aggregate/system-level diversity (시스템 기준 다양성) :
전체 사용자에게 추천되는 아이템들이 카탈로그 전체를 얼마나 커버하는가를 나타냅니다. 인기 아이템 몇 개만 모든 사용자에게 반복 추천되면 이 지표가 낮아져요. 이러한 문제를 인기도 편향(popularity bias)라고 합니다. 넷플릭스에서 마블 시리즈가 인기가 많다고 마블 시리즈만 추천하면 다른 콘텐츠들은 추천이 되지 않는 것과 같은 맥락입니다. Catalog Coverage(전체 아이템 중 실제로 추천된 비율)가 대표 지표고, Category Entropy로 카테고리 분포의 균일성을 보기도 해요.
중요한 점은 Individual diversity가 높아진다고 해서 Aggregate diversity가 무조건 높아지는 것은 아니며, 반대의 경우도 마찬가지입니다. 두 지표가 측정하는 단위 자체가 다르기 때문입니다.
Individual diversity는 한 사용자의 추천 리스트 내부를 들여다보는 반면, Aggregate diversity는 전체 사용자에게 노출된 아이템들을 합산해 카탈로그 전체 커버리지를 봅니다. 따라서 개인 단위에서 카테고리를 잘 섞어주더라도, 모든 사용자에게 비슷한 조합이 반복된다면 시스템 전체로는 일부 카탈로그에만 노출이 쏠리는 결과가 나올 수 있습니다.
Diversity를 왜 평가해야 하는가?
서론에도 언급했던 것처럼, 추천 시스템을 운영하다 보면 자연스럽게 "지금 가장 잘 클릭되는 아이템"을 더 많이, 더 자주 노출시키는 방향으로 최적화가 일어납니다. 단기적으로는 합리적인 선택이죠. 클릭 확률이 높은 아이템을 보여주는 게 당연히 CTR을 끌어올리니까요.
문제는 이 최적화가 누적되면서 생깁니다. 먼저 같은 아이템이나 카테고리에 반복 노출된 사용자는 시간이 지날수록 흥미를 잃습니다.
처음 봤을 때는 클릭했던 아이템이라도 세번째, 네 번째 노출되면 클릭률이 덜어지는 현상이 나타나는데 이걸 fatigue(피로도)라고 해요.
또한 인기 아이템 위주로만 추천이 반복되면 사용자는 서비스 안에 다른 선택지가 존재한다는 사실 자체를 알 기회가 없어지고, 신규 아이템이나 롱테일 아이템은 클릭 데이터가 샇이지 않아 영영 추천되지 못하는 악순환에 빠집니다.
그런데 이 문제들의 공통점은 모두 누적된 이후에야 드러난다는 거예요. 2주짜리 A/B테스트에서 CTR과 CVR은 즉시 관측 가능하지만 fatigue로 인한 CTR 하락이나 카탈로그 편중으로 인한 신규 콘텐츠 발견율 저하는 단기간에 파악하기 어렵습니다. 그래서 Diversity 없이 CTR/CVR만 보고 선택하면 몇 달 뒤 전체 CTR이나 리텐션이 서서히 하락하는 형태로 뒤늦게 문제가 드러나는 경우가 많아요.
이 시점에서 다시 데이터 분포를 정상화하려면 많은 시간과 자원을 들여야 하기 때문에 추천시스템 설계 초기부터 해당 부분을 지표로 정의해서 시스템에 녹여내는 것이 중요합니다.
정리하자면 Diversity는 '이 추천 시스템이 장기적으로 건강하게 작동하고 있는가'를 보는 지표입니다. Accuracy가 단기 성과를 보여준다면, Diversity는 사용자 경험의 지속 가능성과 카탈로그 전체의 활용도를 보여주는 셈이죠.
A/B 테스트 단계에서부터 ILD나 Catalog Coverage 같은 지표를 CTR/CVR과 함께 트래킹해야, 단기 지표만으로는 놓치는 리스크를 미리 포악할 수 있습니다.
그렇다면 Diversity가 Main 지표가 되어야 하는가, 하면 그건 아닙니다. Diversity를 끌어올리는 것도 결국은 비즈니스적 성과(CVR 등)를 달성하기 위한 거니까요. 사용자가 운동화를 클릭하려고 들어왔는데 다양성을 높이느라 전혀 관심 없는 아이템들로 리스트를 채운다면 사용자 경험은 오히려 나빠지고 CTR은 급격히 떨어집니다. 결국 비즈니스가 추천시스템에 기대하는 핵심 가치는 여전히 "사용자가 원하는 것을 잘 찾아주는 것"이고, Diversity는 그 가치를 장기적으로 지속 가능하게 만들어주는 보조 장치에 가깝습니다.
그래서 실무에서는 보통 Diversity를 Main 지표가 아니라 가드레일(guardrail) 지표로 운영합니다.
즉 "Accuracy를 최우선으로 보되, Diversity가 일정 수준 이하로 떨어지지 않는 선에서"라는 제약 조건으로 함께 보는 거예요. 예를 들어 A/B 테스트에서 실험 모델이 CTR은 비슷하거나 소폭 낮아지더라도 ILD나 Catalog Coverage가 유의미하게 개선된다면, 단기 CTR 손실을 감수할 가치가 있는 트레이드오프로 판단할 수 있습니다. 반대로 Diversity는 높아졌지만 CTR이 감당할 수 없는 수준으로 떨어진다면, 그 변경은 롤아웃하지 않는 게 맞고요.
Diversity는 어떻게 측정할 수 있는가?
Individual Diversity 측정:
1. ILD (Intra-List Diversity)

- N : 추천 리스트 길이 (아이템 개수)
- dissimilarity(i, j) : 아이템 i, j 간 비유사도 (0~1, 클수록 서로 다름)
- 값이 1에 가까울수록 리스트 내 아이템들이 서로 이질적임을 의미
사용자 수준 다양성을 측정할 때는 ILD라는 지표를 주로 사용합니다. ILD는 추천 리스트 안의 모든 아이템 쌍을 뽑아 서로 얼마나 다른지(dissimilarity)를 계산하고 평균을 내는 방식으로 계산됩니다.
dissimilarity는 카테고리가 다르면 1, 같으면 0으로 단순하게 정의할 수도 있고, 아이템 임베딩 간 코사인 거리(1 - cosine similarity)로 더 정교하게 계산할 수도 있습니다.
Aggregate Diversity 측정:
1. Catalog Coverage

- I_rec : 일정 기간 동안 적어도 한 번 이상 추천 결과에 노출된 고유 아이템 집합
- I_total : 시스템이 보유한 전체 아이템 카탈로그
- 값의 범위는 0~1이며, 1에 가까울수록 카탈로그 전체가 골고루 노출되고 있다는 뜻이고, 0에 가까울수록 일부 인기 아이템에만 추천이 쏠려 있다는 뜻
Catalog Coverage는 "전체 아이템 중 실제로 한 번이라도 추천된 비율"로, 단순하지만 가장 직관적인 지표입니다. 가장 단순하면서도 직관적인 aggregate diversity 지표라 실무에서 가장 먼저 보는 경우가 많아요.
해석할 때 주의할 점이 하나 있는데, Catalog Coverage가 높다고 해서 노출이 균등하게 분포했다는 보장은 없어요. 예를 들어 9,999개 아이템이 1번씩, 1개 아이템이 100만 번 추천돼도 분자 계산상 coverage는 거의 100%가 나올 수 있거든요. 그래서 얼마나 분포가 고른가까지 보려면 다음에 설명드릴 Category Entropy나 Gini coefficient 같은 지표를 함께 봐야 합니다.
2. Catalog Entropy

- p(c) : 전체 추천 노출 중 카테고리 c가 차지하는 비율 (예: 전체 추천 1,000건 중 "쿠폰" 카테고리가 600건이면 p(쿠폰) = 0.6)
- 카테고리 수가 k개일 때, 모든 카테고리가 똑같은 비율로 노출되면 H는 최댓값 log₂(k)를 가지고, 한 카테고리에만 100% 쏠리면 H = 0이 됩니다.
추천된 아이템들이 카테고리별로 얼마나 고르게 분포했는지를 측정하는 지표로, 정보이론의 Shannon entropy 공식을 그대로 가져와 계산합니다. 값을 해석하기 쉽게 하려면 보통 정규화(normalize)해서 0~1 사이로 변환해요.

이렇게 하면 H_norm = 1일 때 카테고리가 완전히 균등하게 분포한 상태, H_norm = 0에 가까울수록 특정 카테고리(예: 인기 쿠폰 카테고리)에 노출이 쏠린 상태로 직관적으로 읽을 수 있어요.
Aggregate Diversity를 측정하기 위해서는 Catalog Coverage를 통해 "얼마나 많은 종류의 아이템이 노출되는가(폭)"를 보고, Category Entropy로 "노출이 얼마나 고르게 분산되는가(균형)"를 함께 평가해주는 게 필요합니다.
이번 글에서는 추천 시스템에서 Diversity가 왜 필요한지 어떻게 평가할 수 있는지에 대해 정리해보았습니다.
다음 편에서는 Diversity를 추천 시스템에 반영하는 방법과 실제 기업들에서 사용하는 사례를 정리해보겠습니다.
'Recommedation System' 카테고리의 다른 글
| 탐색과 활용 그 사이 - 탐슨 샘플링(Thompson Sampling) (0) | 2026.07.22 |
|---|---|
| 추천 시스템 최신 트렌드와 개인화 전략 (13) | 2025.08.14 |
| 효과적인 선호도 예측 : DeepFM (feat. Factorization Machine) (5) | 2024.11.02 |
| 추천 알고리즘 : 콘텐츠 기반 필터링(CBF)과 협업 필터링(CF) (4) | 2024.10.26 |
| AI 추천시스템(Recommender Systems) 시작하기 (1) | 2024.06.19 |
