추천시스템

추천 품질 평가 지표 정리 (Offline 중심)

metamong-data 2025. 4. 23. 18:27
728x90
반응형

1. Diversity (다양성)

  • 정의: 추천 리스트 내 아이템 간의 유사도가 낮을수록 다양성이 높음

  • 평가 방식: 오프라인, 아이템 임베딩 간 코사인 유사도 등으로 계산

  • 예시 코드:

from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

# 추천 리스트 내 아이템 임베딩 벡터 (예: 5개 아이템)
item_vectors = np.random.rand(5, 100)  # 100차원 임베딩

# 유사도 행렬
sim_matrix = cosine_similarity(item_vectors)

# diversity = 1 - 평균 유사도 (자기 자신 제외)
avg_sim = (np.sum(sim_matrix) - len(sim_matrix)) / (len(sim_matrix) * (len(sim_matrix)-1))
diversity = 1 - avg_sim
print("Diversity:", diversity)

2. Novelty (참신성)

  • 정의: 추천된 아이템이 얼마나 일반적으로 덜 소비되는가

  • 평가 방식: 오프라인, 아이템의 전체 소비량(인기도)을 기준

  • 예시 코드:

# 아이템 소비 수 (인기도, 낮을수록 참신함)
item_popularity = {'item1': 5000, 'item2': 300, 'item3': 100, 'item4': 8000, 'item5': 50}
recommended_items = ['item1', 'item3', 'item5']

# 참신성 = 평균 log 역인기도
import numpy as np
novelty = np.mean([1 / np.log2(item_popularity[i] + 1) for i in recommended_items])
print("Novelty:", novelty)

3. Serendipity (뜻밖의 발견)

  • 정의: 예상 밖이면서도 사용자에게 유익했던 추천

  • 평가 방식: 주로 오프라인 + 유저 만족 예측 필요 (예: 이전 모델에서 추천하지 않았던데 유저가 좋아한 것)

  • 예시 코드:

# 예상 가능한 추천 (기존 협업 필터링 모델 등)
expected_items = {'item1', 'item2'}

# 실제 추천 + 사용자 긍정 반응 (클릭, 좋아요 등)
recommended_items = {'item3', 'item4'}
user_liked_items = {'item4'}

# 뜻밖의 발견 = 예상 밖 + 사용자 반응
serendipitous = recommended_items - expected_items
serendipity = len(serendipitous & user_liked_items) / len(recommended_items)
print("Serendipity:", serendipity)

4. Coverage (커버리지)

  • 정의: 전체 아이템 중 추천 시스템이 활용한 아이템의 비율

  • 평가 방식: 오프라인, 추천된 아이템 종류의 수

  • 예시 코드:

# 전체 아이템 수
total_items = 10000

# 추천 시스템이 전체 유저에게 추천한 아이템 집합
recommended_items_all_users = {'item1', 'item2', 'item3', ..., 'item2000'}

coverage = len(recommended_items_all_users) / total_items
print("Coverage:", coverage)

✅ 요약표

지표 정의 평가 위치 핵심 수식 또는 아이디어
Diversity 추천 내 아이템 간 유사도 낮음 오프라인 1 - avg(cosine_similarity)
Novelty 인기도 낮은 아이템 추천 오프라인 avg(1 / log(popularity))
Serendipity 예상 외지만 유익한 추천 오프라인(일부 온라인) (뜻밖 추천 ∩ 유저 반응) / 추천 수
Coverage 전체 아이템 중 실제 추천된 비율 오프라인 len(추천 아이템) / 전체 아이템 수

728x90

'추천시스템' 카테고리의 다른 글

Online Evaluation  (1) 2025.04.23
추천시스템 성능 지표  (0) 2025.04.23
고전적인 추천 알고리즘  (0) 2025.03.15
추천시스템 소개 및 특성  (0) 2025.03.14