///
Search
Duplicate
🏅

5강 - 평가함수 (Accuracy, MAP, NDCG)

평가함수

해당 모델이 얼마나 잘 추천하고 있는지에 대해 평가를 도와주는 함수입니다.

Accuracy

accuracy(y,y^)=1nsamplesi=0nsamples11(y^i=yi)accuracy(y,\hat y) = {1 \over{n_{samples}}}\sum_{i=0}^{n_{samples}-1}1(\hat y_i = y_i)
accuracy는 내가 추천해준 것을 봤냐 보지 않냐로 정확도를 판단 방법입니다. 따라서 계산 법은 전체 샘플 개수중에 나의 추천을 본 경우의 수로 구합니다.
하지만 추천에도 순서가 존재하는데 accuracy는 그 순서를 반영하지 못한다는 단점이 있습니다.

MAP

그러한 단점을 보완하기위해 map가 등장했습니다.
MAP에서는 precision을 사용해서 값을 구하고 precision은 전체 경우의 수 중에서 정답인 경우의 비율을 의미합니다. 위와 같은 방식으로 precision을 구하게 되면 좋은 추천이 앞쪽에 있을수록 높은 값을 얻을 수 있습니다.

NDCG

NDCG는 검색 알고리즘에서 성과를 측정하는 평가 함수입니다. NDCG를 이해하기 위해서는 Cumulative Gain과 Discounted Cumulative Gain의 개념을 이해해야 합니다.

CG

CG=inrelevanceiCG = \sum_i^n relevance_i
CG는 긍정 피드백과 부정 피드백으로부터 얻은 관련성 점수 입니다. 이 값이 클수록 높은 연관성을 가지고 있다고 말할 수 있습니다. 하지만 이 지표는 순서에 대한 고려를 하지 않습니다. 따라서 관련성이 높은 것을 먼저 추천해 주는 것에 가중치를 주기 위해서 DCG라는 함수가 등장하였습니다.

DCG

DCG=i=1nrelevanceilog2(i+1)DCG = \sum^n_{i=1}{relevance_i\over {log_2(i+1)}}
DCG는 CG를 log(i+1)로 나눈 값입니다. 이 값으로 나누어 주면 먼저 소개할 수록 높은 가중치를 줄 수 있고 뒤에 소개할수록 낮은 가중치를 줄 수 있습니다. 따라서 같은 컨텐츠를 추천한다 해도 사용자와 더 연관성있는 상품을 먼저 추천할수록 높은 점수를 매길 수 있습니다.

NDCG

NDCG=DCGiDCGNDCG = {DCG \over iDCG}
NDGC는 이상적인 추천 순서와 평가하고자 하는 추천시스템의 성능을 비교한 값이라고 할 수 있습니다. 예를 들어 연관성이 [2,3,3,1,2] 라는 상품들이 있을때 이상적인 추천 순서는 [3,3,2,2,1]일 겁니다. 따라서 이 두개의 연관성을 가지고 NDGC를 계산하면 추천시스템의 성능을 알 수 있습니다.