추천시스템 평가 지표 (metric) 정리

JUNHYUNG AHN·2022년 5월 14일
1

이번 포스팅에서는 추천시스템에서 많이 사용되는 평가지표들을 정리하려고 한다. 아래 지표 모두 추천된 아이템의 순위를 반영한 지표다.

1. mAP@K (mean Average precision@K)

첫번째로, mAP은 mean Average precision의 약자다. 처음 이 용어를 봤을 때, mean과 average 모두 평균이라는 뜻을 갖고 있으니 precision의 평균의 평균(?)인가라고 생각했다. 맞다. mAP를 계산하는 공식은 아래와 같다.

여기서, K는 추천시스템이 추천한 아이템의 개수를 뜻하며, K가 달라짐에 따라 mAP@K이 달라진다. 위의 공식을 보면 알겠지만, mAP를 계산하기 위해서는 Average precision을 먼저 계산해야하며, 그러기 위해서는 precision@i 와 rel(i)가 무얼 뜻하는지 알아야한다.

(1) Precision@iPrecision@i

그럼, 먼저 precision@iprecision@i이 무엇인지부터 살펴보자. 아래 시나리오를 예시로 들어보겠다. 총 6개의 광고가 있고 유저 1은 광고 1,6을 선호하고, 유저 2는 광고 2,6을 선호한다. 추천시스템이 유저 1에게는 광고 1,2,3을 순서대로 추천하고, 유저 2에게는 광고 4,5,6을 순서대로 추천하는 상황을 가정하자.

Precision@iPrecision@i은 추천된 상위 아이템 ii 개 중에 실제 유저가 관심있는 아이템 비율을 뜻한다. 위의 예시에서 유저 1을 보면, 추천시스템이 상위 광고 1개 (광고 1)을 유저 1에게 추천했고 유저 1도 실제로 선호하기 때문에

Precision@1=11Precision@1 = \frac{1}{1}

이다. Precision@2Precision@2은 추천시스템이 추천한 상위 광고 2개 (광고 1,2) 중 유저 1은 1개 (광고 1)만 선호하기 때문에

Precision@2=12Precision@2 = \frac{1}{2}

이다. 마찬가지로하면, Precision@3=1/3Precision@3 = 1/3이다.


(2) rel(i)rel(i)

그 다음 rel(i)rel(i)ii 번째 아이템의 relevance 점수로 유저가 ii 번째 아이템 실제로 선호하는지의 여부를 뜻한다. 예를 들어, 유저 1은 광고 1과 6을 선호하기 때문에

rel(i)={0 for i{1,6},1 for i{2,3,4,5}.rel(i) = \begin{cases} 0 \:\text{ for }\: i\in\{1,6\}, \\ 1 \:\text{ for }\: i\in\{2,3,4,5\}. \end{cases}

(3) AP@K (Average precision@K)

AP@K을 구하는 공식은 다음과 같으며, K=3일 때 유저 1의 Average precision은 아래와 같다.


(4) mAP@K (Average precision@K)

이제 mAP을 구하는 여정의 90%까지 왔다. mAP는 단순히 유저들의 AP를 평균내면 된다. 위의 과정을 반복하면 유저 2의 AP는 0.16이며 mAP는 0.5와 0.16의 평균인 0.33이 된다.

mAP의 장,단점은 다음과 같다.

장점
1. 아이템의 추천순위를 고려한 평가지표다.

  1. 하위에 있는 오류(관련없는 아이템 추천)보다 상위에 있는 오류를 더 중요하게 생각하여 관련 아이템이 더 상위에 오를 수 있도록 도움을 준다.

단점
1. 1~5점으로 평가하는 평점같이 관련 여부를 판단하기 어려운 경우는 mAP를 사용하기 어렵다.


2. NDCG@K (Normalized Dicounted Cumulative Gain@K)

NDCG 역시 추천시스템에서 랭킹 추천 분야에 많이 쓰이는 평가지표로, 카카오 아레나 멜론 음악 추천 대회에서 음악 추천 성능 지표로 사용했다.

이 지표 역시 추천 순위에 가중치를 두어, 상위의 랭킹 리스트가 하위 랭킹 리스트보다 확연하게 중요한 도메인에서는 유용한 평가 기준이다. 그렇다면, 앞서 설명한 mAP와는 어떤 차이가 있을까?

관련 여부에 대해 이분법적으로 구분하는 것이 아니라, 다양한 관련도(1~5)를 고려하며 더 관련있는 컨텐츠는 무엇인가?에 대해 집중하여 해당 컨텐츠를 상위에 노출시키는지에 대해 평가한다.

NDCG를 구하는 공식은 다음과 같다. 한 마디로, 이상적인 시스템 대비 추천 성능으로 해석할 수 있다.

(1) DCG@K (Dicsounted Cumulative Gain)

DCG는 Dicsounted Cumulative Gain의 약자로, mAP와 마찬가지로 추천된 아이템의 순위와 relevance 점수를 고려한다. 한 가지 큰 차이점은, relevance 점수가 binary(0,1)가 아니라 다양한 범위의 값을 가진다.

K=3이라 할 때, DCG를 구하는 공식은 다음과 같다.

DCGK=i=1Krelevanceilog2(i+1)=3log2(1+1)+2log2(2+1)+0log2(3+1)=4.26DCG_K = \sum_{i=1}^{K} \frac{relevance_i}{\log_2 (i+1)} = \frac{3}{\log_2 (1+1)} + \frac{2}{\log_2 (2+1)} + \frac{0}{\log_2 (3+1)} = 4.26

(2) IDCG@K (Ideal Dicsounted Cumulative Gain)

IDCG는 Ideal Dicsounted Cumulative Gain의 약자로 DCG 구하는 공식과 매우 유사하다.

IDCG를 구하는 공식은 다음과 같다.

IDCGK=i=1Krelevanceioptlog2(i+1)=4log2(1+1)+3log2(2+1)+2log2(3+1)=6.89IDCG_K = \sum_{i=1}^{K} \frac{relevance_i^{opt}}{\log_2 (i+1)} = \frac{4}{\log_2 (1+1)} + \frac{3}{\log_2 (2+1)} + \frac{2}{\log_2 (3+1)} = 6.89

이상적인 추천시스템은 relevance 점수가 높은 순서대로 추천하는 것이 이상적일 것이다.


(3) NDCG@K (Normalized Dicsounted Cumulative Gain)

NDCG는 DCG를 IDCG로 나누면 된다.

NDCG=DCGIDCG=4.266.89=0.62NDCG = \frac{DCG}{IDCG} = \frac{4.26}{6.89} = 0.62

이는 우리가 현재 갖고 있는 추천시스템의 성능은 이상적인 시스템 대비 62% 성능을 보인다라고 해석할 수 있다.

NDCG의 장,단점은 다음과 같다.

장점
1. 기존 방법과는 다르게 다양한 관련도에 대한 평가가 가능하다.

  1. log 함수를 이용하여 순위에 따라 가중치 부여하기 때문에, 하위 컨텐츠에 대한 영향을 줄여 좋은 성능을 보인다.

단점

  1. 아이템과 사용자와의 관련성을 파악하기 어려운 상황 (relevance 점수를 어떻게 부여할 지)에서는 NDCG를 계산하기 어렵다.

profile
ML Engineer, Recommender system

0개의 댓글