[추천시스템] 평가 지표

Ethan·2023년 3월 6일
0

딥러닝 이론

목록 보기
3/7

<평가지표 모음>

1. 추천시스템

추천시스템에서 사용되는 지표들을 정리한 글이며, 지속적으로 업데이트 중입니다.
last update - 2023.03.06


Cumulative Gain (CG)

이름부터 '무언가를 누적(cumulative)한 값'입니다.

CG=inreliCG=\sum_i^n\mathrm{rel}_i

CG를 수식으로 나타내면 위와 같습니다. rel은 사용자가 아이템을 얼마나 선호할 것인가를 의미합니다. 즉, CG는 relevance score(value)를 전부 합한 값입니다. 아이템에 대한 사용자의 총 선호도 수치... 정도로 요약할 수 있겠네요.

대표적인 예시로 Alternating Least Square (ALS)에서 ruir_{ui}값이 있으며, relevance가 의미하는 바는 맥락에 따라 바뀔 수 있습니다.

하지만 CG만으로 모델을 평가하기에는 문제가 있습니다.

A={2,4,3,1,5},B={5,1,3,2,4}A = \{2, 4, 3, 1, 5\},\quad B=\{5,1,3,2,4\}

위와 같이 A와 B 두 모델이 각각 예측한 결과가 있다고 해봅시다. 두 모델의 CG 값은 15로 같습니다. 그렇다면 어느 모델이 더 좋은 걸까요? 첫 번째 추천만 사용할 경우 B 모델의 성능이 더 좋다고 볼 수 있지만, 두 번째 추천까지 사용한다면 A와 B 모두 1승 1패로 성능이 같다고 볼 수도 있습니다.

이처럼 CG는 순서를 구분하지 않기 때문에 선호도 랭킹을 제대로 반영하지 못합니다.

Discounted Cumulative Gain (DCG)

그래서 할인(Discounted) 개념을 도입한 DCG가 등장합니다. 더 선호하는 아이템을 먼저 추천하도록 추천한 순서에 따라 가중치를 매기는 것입니다. 경제학에서 말하는 감가상각과 비슷하죠. 수식으로 쓰면 다음과 같습니다.

DCG=inrelilog2(i+1)DCG=\sum_i^n{\mathrm{rel}_i \over \log_2(i+1)}

A와 B의 DCG값을 비교해 볼까요?

DCGA=2log22+4log23+3log24+1log25+5log2612.10DCGB=5log22+1log23+3log24+2log25+4log2613.76DCG_A={2\over \log_2 2}+{4\over \log_2 3}+{3\over \log_2 4}+{1 \over \log_2 5}+{5\over\log_2 6}\simeq 12.10\\ \quad\\ DCG_B={5\over \log_2 2}+{1\over \log_2 3}+{3\over \log_2 4}+{2\over \log_2 5}+{4\over\log_2 6}\simeq 13.76

DCGBDCG_B 값이 조금 더 높으므로, 두 모델 다 잘 예측했지만 순서까지 따지면 B가 더 낫다고 할 수 있습니다. 하지만 DCG에도 한 가지 치명적인 단점이 있습니다. 예를 들어,

C={5,1,1,2,1,2,3,2,1}C=\{5, 1, 1, 2, 1, 2, 3, 2, 1\}

새로운 모델 C가 들어왔습니다. 모델 C의 DCG값은 얼마일까요?

DCGC=5log22+1log23+1log24+2log25+1log26+2log27+3log28+2log29+1log21014.46DCG_C={5\over \log_2 2}+{1\over \log_2 3}+{1\over \log_2 4}+{2\over \log_2 5}+{1\over\log_2 6}+{2\over \log_2 7}+{3\over \log_2 8}+{2\over \log_2 9}+{1\over \log_2 10}\simeq 14.46

DCG 값만 보면 C가 B보다 더 좋은 모델입니다. 하지만 Top 3개의 아이템만 잘라서 비교하면 B 모델이 더 낫습니다. 이처럼 DCG는 추천하는 아이템의 개수에 따라 분별력이 변동한다는 문제가 있습니다.

Normalized Discounted Cumulative Gain (NDCG)

길이가 문제라면 길이를 정규화해주면 되겠죠? 이게 바로 NDCG입니다. 구체적인 식은 다음과 같습니다.

NDCG=DCGIDCGNDCG= {DCG\over IDCG}

IDCG는 Ideal DCG입니다. 이상적인 순서로 랭킹을 구했을 때의 DCG값이죠. 여기서 말하는 '이상적인 순서'란 가장 선호도가 높은 아이템부터 내림차순으로 정렬한 것을 말합니다. Ground truth ranking을 알 수는 없으므로 실제로는 모델의 예측을 정렬하여 계산합니다.

즉, NDCG는 주어진 모델이 최적화된 랭킹을 얼마나 재현했는가를 평가하는 지표입니다.

IDCGB=5log22+4log23+3log24+2log25+1log2614.82IDCGC=5log22+3log23+2log24+2log25+2log26+1log27+1log28+1log29+1log21015.63NDCGB=13.7614.820.9285NDCGC=14.4615.630.9251IDCG_B={5\over \log_2 2}+{4\over \log_2 3}+{3\over \log_2 4}+{2\over \log_2 5}+{1\over\log_2 6}\simeq 14.82\\ \quad\\ IDCG_C={5\over \log_2 2}+{3\over \log_2 3}+{2\over \log_2 4}+{2\over \log_2 5}+{2\over\log_2 6}+{1\over \log_2 7}+{1\over \log_2 8}+{1\over \log_2 9}+{1\over \log_2 10}\simeq 15.63\\ \quad\\ NDCG_B={13.76\over14.82}\simeq0.9285\\ \quad\\ NDCG_C={14.46\over15.63}\simeq0.9251

즉, 이 경우 B가 C보다 더 좋은 모델이라고 할 수 있습니다.

Cumulative Gain 계열의 metric을 이용할 때는 항상 rel 값이 맥락에 따라 바뀔 수 있다는 점에 주의해야 합니다. 즉, 동일한 데이터를 가지고 평가를 하더라도 모델에 따라 B모델보다 C모델의 성능이 좋다는 결과가 나올 수 있습니다.

profile
재미있게 살고 싶은 대학원생

0개의 댓글