추천시스템
랭킹 기반 평가
일부 추천 분야에서는 랭킹이 중요하다.
따라서 일반적인 머신러닝에서의 메트릭들과는 달리 실제로 예측 결과의 랭킹에 중점을 둔 메트릭들을 사용한다.
랭킹 그리고 랭킹의 위치가 중요한 몇가지 메트릭을 더 알아보도록 한다.
이러한 메트릭들은 relative한 선호도가 얼마나 반영되어 있는지를 평가한다.
랭킹기반 평가 기법에는 두가지 종류가 있다: Binary relevance와 Utility이다.
Binary Relevance는 아이템이 좋은 추천인지 그렇지 않은지에만 관심이 있다.
앞서 언급된 Recall@K와 같은 경우가 이에 속한다.
Utility는 실제 랭킹의 위치,
즉 추천된 아이템이 얼마나 좋은지 혹은 어떠한 랭킹보다 더 좋은지 나쁜지에 더 중점을 둔다.
Mean Reciprocal Rank
MRR은 사용자가 선호나는 아이템이 리스트 중 어디에 위치해 있는지에 중점을 둔 평가 기법이다.
추천된 리스트가 있고 사용자가 선호하는 아이템이 $k_u$라면, reciprocal rank는 $\frac{1}{k_u}$이다.
10개의 추천 리스트 중 사용자가 선호하는 아이템이 7번째에 있다면 reciprocal rank는 $\frac{1}{7}$이 되는 것이다.
그리고 MRR은 각 사용자 들에게 추천된 아이템 리스트의 RR을 구해 평균값을 낸 것이다. MRR의 수식은 다음과 같다:
$$MRR(O, U) = \frac{1}{|U|} \sum_{u \in U} \frac{1}{k_u}$$
예제)
사용자 1, 2, 3, 4에게 아이템 A, B, C, D가 추천되었다.
(이해를 돕기 위해 모두에게 같은 순서의 리스트가 제공되었다고 가정하였다. 따라서 실제 추천 시나리오에서는 모델에서 각각의 사용자에게 제공되는 리스트가 다를 수도 있다.)
선호도 리스트:
1: [A, B, C, D]
[X, X, O, O]
2: [A, B, C, D]
[O, X, X, O]
3: [A, B, C, D]
[X, O, X, X]
4: [A, B, C, D]
[X, X, X, O]
아이템 선호 RR
1 1/3
2 1
3 1/2
4 1/4
위의 경우 MRR은 $\frac{\frac{1}{3} + 1 + \frac{1}{2} + \frac{1}{4}}{4}$가 된다.
Mean Average Precision
기본적인 Precision의 경우 모든 에러를 똑같은 에러로 본다.
첫번째 아이템이 틀린 것과 10번째 아이템이 틀린 것을 같은 에러율로 평가한다면,
유튜브에서와 같이 상위에 나오는 추천이 더 중요한 시나리오의 경우에는 맞지 않는 평가 방법이 될것이다.
Average Precision은 이 부분을 보완한 평가 방법이다.
추천 리스트를 통과하며 Precision을 계산하는 기법으로,
이를 통해 상위의 아이템이 틀렸을 경우 더 높은 점수가 깎이게 되고
하위의 아이템이 틀렸을 경우 더 낮은 점수가 깎이게 된다.
예제)
아이템 선호 AP
A O 1
B X
C O 2/3
D O 3/4
E X
위의 경우 AP는 $\frac{1 + \frac{2}{3} + \frac{3}{4}}{3}$이 된다.
이를 사용자 별로 집계하여 평균을 내면 MAP가 된다. 수식은 다음과 같다:
$$MAP(O, U) = \frac{1}{|U|} \sum_{u \in U} AP(O(U))$$
Normalized Discounted Cumulative Gain
먼저 DCG는 각 추천 리스트의 아이템의 평점 분에 Discount를 취한 랭킹으로 계산 된다.
Discount를 계산하는 방법은 여러가지가 있지만, 대개는 log_2를 취한다.
(이 경우 log_2(1)은 0이 되기 때문에 1로 치환한다.)
$$DCG(O, u) = \sum_i \frac{r_ui}{disc(i)}$$
$$disc(i) = \begin{cases} 1, & i \leq 2 \\ log_2i, & x > 2 \end{cases}$$
예제)
추천시스템이 다음과 같은 랭킹으로 추천을 하였고,
이에 대해 사용자가 다음과 같은 평점을 매겼다고 가정해 보자:
아이템 선호도 랭킹
A 4 1
B 3 2
C 0 3
D 5 4
위의 경우 DCG는 $\frac{4}{1} + \frac{3}{1} + \frac{0}{log_2(3)} + \frac{5}{log_2(4)}$가 된다. (이는 약 9.5이다.)
이 경우 perfect DCG는 선호도를 높은 순으로 정렬한 순서로 계산된다.
perfect DCG = $\frac{5}{1} + \frac{4}{1} + \frac{3}{log_2(3)} + \frac{0}{log_2(4)}$ (이는 약 10.9이다.)
따라서 nDCG는 $\frac{9.5}{10.9} = 0.87$가 된다.
많은 추천의 경우 명확한 평점이 없고 Like/Dislike로 판단하는 경우가 있다.
이런 경우를 Binary라고 부른다.
만약 위의 상황이 Binary였다면 다음과 같은 결과가 나온다. (3점 이상을 Like 미만을 Dislike로 가정.)
$DCG = \frac{1}{1} + \frac{1}{1} + \frac{0}{log_2(3)} + \frac{1}{log_2(4)}$
$pDCG = \frac{1}{1} + \frac{1}{1} + \frac{1}{log_2(3)} + \frac{0}{log_2(4)}$
$nDCG = 2.5 / 2.63 = 0.95$
'데이터사이언스 > 추천시스템' 카테고리의 다른 글
추천시스템 - (13) 특성 평가 (2) | 2020.08.08 |
---|---|
추천시스템 - (11) 추천시스템 평가 (0) | 2020.08.04 |
추천시스템 - (10) 추천시스템의 학습 (0) | 2020.08.04 |
추천시스템 - (9) 컨텐츠 기반 추천 (0) | 2020.07.19 |
추천시스템 - (8) 연관성 분석 추천 예제 (0) | 2020.07.12 |