추천시스템 평가지표 Precision / Recall@K, Map, NDCG

하는·2024년 3월 12일
0

추천시스템

목록 보기
1/4

들어가며

추천알고리즘에서는 각 item의 순위가 매우 중요하다.
하지만 일반적으로 사용되는 평가지표인 precision, recall, f1-score는 각 아이템들의 순위가 고려되지 않는다.
본문에서는 추천 시스템의 성능을 평가할 때 사용할 수 있는 ranking 기반 평가 지표들에 대해 알아보고자 한다.

Precision@K, Recall@K

먼저 precision과 recall에 대해 다시 알아보자

  • Precision(정확도): 모델이 추천한 것 중, 실제로 좋아하는 item의 비율.
  • Recall(재현율): 좋아하는 것 중 모델이 추천한 item의 비율.

K: 추천아이템 수

  • Precision@k: 모델이 추천한 item k개 중에 실제로 관심있는 item의 비율
  • Recall@k: 유저가 관심있는 item k개 중에 모델이 추천한 item의 비율

업무 적용

가정: 유저 ctr이 평가지표로 사용하는 사이트

  • pc 화면: 한 페이지에 10개씩 노출
  • mobile 화면: 한 페이지에 6개씩 노출
    -> flatform이 pc화면 ctr의 precision@10, mobile화면의 precision@6의 두 플랫폼의 이용비율을 반영하여 평균을 구함.

참고 블로그:
추천화 시스템 04. 추천 시스템의 평가 지표

mAP(Mean Average Precision)

주로 object detection의 평가지표로 소개된다.
영어를 풀이하자면 MAP는 AP(Average Precision)의 평균이다.
유저별로 AP를 계산하고 모든 유저별 AP의 평균을 계산하여 mAP를 구한다.

object detection에서 활용되는 mAP에 관한 글: https://velog.io/@kwjinwoo/mAP

수식

MAP@ N=1Uu=1U(AP@ N)u=1Uu=1U1mk=1NPu(k)relu(k)\mathrm{MAP} @ \mathrm{~N}=\frac{1}{|U|} \sum_{u=1}^{\mid} U\left|(\mathrm{AP} @ \mathrm{~N})_u=\frac{1}{|U|} \sum_{u=1}^{\mid} U\right| \frac{1}{m} \sum_{k=1}^N P_u(k) \cdot \operatorname{rel}_u(k)

  • MAP@ N\mathrm{MAP} @ \mathrm{~N}: 상위 N개의 결과를 고려한 MAP 값
  • UU: 검색 또는 추천을 수행하는 유저(User) 집합. U|U|는 유저 집합의 크기를 나타낸다.
  • (AP@ N)u(\mathrm{AP} @ \mathrm{~N})_u: 각 유저 u에 대한 상위 N개의 결과를 고려한 평균 정밀도(Average Precision).
  • mm: 유저 u가 검색 또는 추천한 항목의 총 개수.
  • Pu(k)P_u(k) \cdot: 유저 u의 상위 N개 결과 중에서 k번째 항목이 관련 있는지 여부를 나타내는 이진 변수. 즉, 이 항목이 관련 있으면 1, 관련 없으면 0.
  • relu(k)\operatorname{rel}_u(k): 유저 u의 상위 N개 결과 중에서 k번째 항목의 관련성을 나타내는 등급(관심도).

계산 과정

  1. 각 유저 u에 대해 상위 N개의 결과를 고려한 평균 정밀도(AP@ N)u(\mathrm{AP} @ \mathrm{~N})_u 를 계산한다.
    • (AP@ N)u(\mathrm{AP} @ \mathrm{~N})_u: 해당 유저가 추천한 항목들 중에서 관련 있는 항목이 상위 N개에 얼마나 포함되어 있는지에 관한 것.
  2. 모든 유저의(AP@ N)u(\mathrm{AP} @ \mathrm{~N})_u값을 합산하여 유저 집합의 크기로 나눈다. 이렇게 하면 상위 N개의 결과를 고려한 평균 정밀도의 평균인 MAP@ N\mathrm{MAP} @ \mathrm{~N}을 얻을 수 있다.

NDCG(Normalized Discounted Cumulative Gain)

모델이 예측한 순위를 반영한 측정 지표.

NDCG 계산 과정

1. 알고리즘별 ctr 순위 할당

2. DCG 계산

  • DCG: 등급을 사용하여 추천된 항목의 상대적인 품질을 측정한다.
  • 각 추천 결과의 순위를 기반으로 DCG를 계산한다.
  • DCG=rel1+i=2nrelilog2(i+1)DCG=rel_1+\sum_{i=2}^n \frac{r e l_i}{\log _2(i+1)}
    • rellirell_i: i번째 추천 결과의 등급(관심도)
    • nn: 추천 결과의 총 개수
    • log2(i+1)log_2(i+1): i+1i+1의 이진 로그 값

3. IDCG(Ideal Discounted Cumulative Gain) 계산

  • IDCG란?
    • 최적의 순위로 정렬된 추천 결과의 DCG.
    • 실제 등급을 기반으로 계산된다.
      • ex) 가장 높은 등급을 가진 항목이 가장 높은 순위에 있고, 그 다음으로 높은 등급을 가진 항목이 두 번째로 등장하는 식.

4. NDCG 계산

  • DCG를 IDCG로 정규화한 값.
  • NDCG=DCGIDCGNDCG = \frac{DCG}{IDCG}
  • 높은 NDCG 값은 사용자의 관심에 가장 잘 맞는 추천 결과가 높은 순위에 있다는 의미다.

평가지표 활용

  • 높은 NDCG의 알고리즘은 더 자주 노출시키도록 수정.
  • 사실 업무에는 적용하지 않았만 이런 지표들도 있다~ 정도로 알아두면 좋을 것 같다. 나중에 꼭 사용해보고 싶다.

참고하면 좋을 블로그:
https://ysg2997.tistory.com/39

profile
천천히 꾸준히 취미처럼 냐미😋

0개의 댓글