Processing math: 100%
본문 바로가기

Study

추천 시스템 성능 평가 지표(Precision@k, Recall@k, Hit@k, MAP, MRR, nDCG)

추천 시스템이란 말 그대로 사용자가 좋아할만한 것들을 추천해주는 시스템이다.

추천 시스템은 단순히 사용자가 선호하는 아이템을 추천해주는 것 보다는 사용자가 가장 선호하는 아이템을 먼저 추천해주는 것이 더 좋은 추천 시스템이라고 볼 수 있다.

이번 글에서는 추천 시스템의 성능을 평가하는데 사용되는 metrics를 소개한다.

Precision@k

k개의 추천 중 선호 아이템이 얼마나 존재하는지를 측정한다.

선호 순서(rank)는 고려되지 않는다.

Precision@k= of recommended items @k that are relevant of recommended items @k



Recall@k

전체 선호 아이템 중 추천된 아이템이 얼마나 존재하는지를 측정한다.

선호 순서(rank)는 고려되지 않는다.

Recall@k= of recommended items @k that are relevanttotal  of relevant items



Hit@k

k개의 추천 중 선호 아이템이 있는지 측정한다.

전체 사용자들의 추천 결과에 대해서 상위 k 안에 선호 아이템이 있는 추천 결과 개수를 전체 사용자의 수로 나누어 평균을 계산한다.

선호 순서(rank)는 고려되지 않는다.



MAP(Mean Average Precision)

MAP를 이해하기 위해서 AP에 대한 이해가 필요하다.

AP(Average Precision)

Precision@1부터 Precision@k까지의 평균을 구한다.

결과적으로 순위가 높은 아이템이 큰 가중치를 가지게 된다.

아래 수식에서 rel(k)는 k번째 아이템이 선호 아이템인지(1) 아닌지(0)를 나타내는 값이다.

AP@k=1mki=1Precision@irel(k)


AP가 한 사람에게 추천한 결과를 평가한 것이라면, MAP는 모든 사용자들(U)에게 취한 결과들을 평가하는 것이다.

MAP@k=1|U||U|u=1(AP@k)u



MRR(Mean Reciprocal Rank)

처음으로 등장하는 선호 아이템이 몇 번째에 위치하는지를 나타낸다.

하지만 몇 번째인지를 그대로 사용하게 되면 뒤에 위치할수록 높은 값을 가지게 되므로 역수를 취해서 계산한다.

MRR=1|U||U|u=11ku



nDCG(normalized Discounted Cumulative Gain)

nDCG를 설명하기 전에 CG, DCG, IDCG에 대한 이해가 필요하다.

CG(Cumulative Gain)

상위 k개의 결과들의 relevance score를 모두 더한다.

relevance score는 아래 수식에서 reli에 해당하며, 선호 여부에 따라 0 또는 1을 가지거나 문제에 따라 세분화된 값을 가질 수 있다.

선호 순서(rank)는 고려되지 않는다.

CGk=ki=1reli

DCG(Discounted Cumulative Gain)

CG에서 선호 순서에 따라 점점 비중을 줄여 계산한다.

선호 순서(rank)가 반영되며 하위권 결과에 패널티를 줄 수 있다.

(1) DCGk=ki=1relilog2(i+1)
(2) DCGk=ki=12reli1log2(i+1)

(1)은 standard 방식이고, (2)는 relevance score에 더 비중을 주고싶은 경우에 사용하는 방식이다.

만약 relevance score가 0 또는 1 값을 가지면 (1)과 (2)는 동일하다.

IDCG(Ideal Discounted Cumulative Gain)

상위 k개의 결과를 relevance score가 높은 순으로 정렬하여 DCG를 계산한다.

상위 k개의 결과로 가질 수 있는 가장 큰 DCG 값을 구할 수 있다.

아래 수식에서 relopti가 상위 k개의 결과를 relevance score가 높은 순으로 정렬한 것이다.

IDCG=pi=1reloptilog2(i+1)


nDCG는 k개의 결과에 대한 DCG 값을 k개의 결과로 가질 수 있는 가장 큰 DCG(=IDCG) 값으로 나누는 것이다.

따라서 DCG 값과 IDCG 값이 같으면 nDCG는 1을 갖게 되고, DCG와 IDCG의 차이가 커질수록 nDCG는 0에 가까워진다.

이렇게 nDCG는 0~1 사이의 값으로 nomalize가 된 값으로 표현된다.

nDCG=DCGIDCG





Reference