SOGM'S Data

NDCG - Normalized Discounted Cumulative Gain(평가지표) 본문

About Data/Recommender System

NDCG - Normalized Discounted Cumulative Gain(평가지표)

왈왈가부 2020. 12. 3. 01:55

 

NDCG란? (Normalized Discounted Cumulative Gain)

 

 

- 추천시스템에서 랭킹 추천 분야에 많이 쓰이는 평가지표

- 기존 정보검색에서 많이 쓰였으며 , 특히 상위의 랭킹 리스트가 하위 랭킹 리스트 보다 확연하게 중요한 도메인에서는 유용한 평가 기준

Ex) TV나 영화 프로그램 K개를 랭킹순으로 추천해주는 도메인 

 

 

우선 CG라는 개념을 알아야 합니다. Cumulative Gain(CG)란 관련성 점수를 합한 값입니다. 이때 관련성 점수는(Relavance Score) 는 사용자가 추천된 각 아이템을 얼마나 선호하는지를 나타내는 점수입니다. 보통의 경우 raw_data의 rating 값이 많이 사용됩니다.   

 

 

이때 사용자 u가 item j에 대한 관련성 점수를 rel_uj라 할 때 이것의 지수함수 형태인 g_uj 는 일반적으로 아래와 같은 형태를 갖습니다. 

*참고로 g_uj가 아닌 rel_uj로 그냥 NDCG식에 넣을 수도 있습니다. 하지만 아래 모델은 높은 관련성점수를 가진 아이템이 낮게 랭크 되었을때 더욱 페널티를 주는 모델입니다. 도메인에 적절한 수식을 사용하면 됩니다. 

 

 

그리고 Discount가 도입된 DCG의 수식은 아래와 같다. v_j는  I_u(test set)에서 item  j에 대한 랭킹(Ranking)입니다. 식을 보면 랭킹이 뒤로 갈수록 분모의 log2(v_j+1)이 커지므로 랭킹이 낮은 아이템은 평가지표에 미치는 영향이 줄어들게 됩니다. 즉, 1위와 2위의 아이템을 잘 추천해주는 것이 10위,11위등의 아이템을 잘 추천해주는 것보다 평가에 중요한 요소가 됩니다.   

 

 

이때 DCG는 모든 아이템에 적용되기 보다는 특정 Size=L개의 추천리스트에서 계산됩니다. 즉 바뀐 식은 아래와 같습니다. 

 

 

마지막으로 IDCG - Ideal Discounted Cumulative gain 으로 나눠주면 Normalized 된 NDCG 평가지표를 얻게 됩니다. IDCG는 L개의 결과를 rel이 큰 순서대로 정렬한 rel+opt에 대해서 DCG해준 값이 됩니다. 

 

 모든 테스트 셋 유저들에 대한 추천의 평균 NDCG를 구하여 모델의 성능을 평가할 수 있습니다.

 

정리)

1. NDCG는 0~1사이의 값을 갖게되는데 1과 가까울수록 우수한 추천시스템입니다. 

2. 랭킹에 민감한 추천서비스의 경우 유용한 평가지표입니다.

3. 위에서 언급한 rating같이 연속형 변수도 가능하지만, Binary 변수 데이터에도 계산 가능합니다 

 

출처 : 1) 1aggarwal_c_c_recommender_systems_the_textbook  

        2) towardsdatascience.com/evaluate-your-recommendation-engine-using-ndcg-759a851452d1

  

Comments