본문 바로가기

RecSys (추천시스템)

추천시스템, 평가지표 선정하기

본 포스팅은 Naver BoostCamp AI Tech를 기반으로 작성합니다.

 

이번 포스팅에서는 추천시스템의 성능을 평가하는 평가 지표에 대해서 이야기해봅시다. 

1. 추천시스템의 평가지표 

우리 회사에서 새로이 추천시스템을 도입하려고 합니다. 그러면 이 모델의 성능은 어떻게 평가해야 할까요? 이를 비즈니스 및 서비스적 관점과 품질의 관점에서 생각해보겠습니다. 

 

추천시스템을 비즈니스 관점에서 보면, 이 시스템을 도입하면서, 얼마나 돈을 많이 벌었느냐가 핵심입니다. 즉, 추천시스템을 적용하면서 매출과 Page View가 증가했다면, 그리고 추천 아이템으로 인해서 유저의 클릭률(CTR)이 상승했다면, 소기의 성공을 얻었다고 말할 수 있죠. 

그리고 품질의 관점에서 생각해보면, 가장 먼저 우리가 추천한 아이템이 유저에게 관련이 있어야 합니다.(Relavance) 그리고 유저에게 추천된 Top-K개의 아이템이 다양하면 다양할 수록 좋겠죠.(Diversity) 그리고 새로운 아이템을 추천받거나(Novelty), 유저가 기대못한 뜻밖의 아이템이 추천받는다면(Serendipity) 아주 좋은 모델이라고 할 수 있습니다!

2. Offline & Online Test

먼저 OffLine Test입니다. 이는 새로운 추천 모델을 검증하기 위해서 가장 우선적으로 수행되는 단계입니다. 소비자에게 모델이 서빙되기 전에 유저로부터 수집한 데이터를 통해 모델의 성능을 객관적인 지표로 평가하는 것이죠. 이는 여타 다른 딥러닝 기법과 동일하게 Train/Test/Validation으로 나누어서 학습됩니다. 보통에는 Offline Test에서 좋은 성능을 보여야, Online 서빙에 투입되는 경우가 많지만, 실제 서비스 상황에서는 다양한 양상을 보입니다(Serving Bias). 모델을 이용해 Top-K의 아이템을 선정하게 되고, 이를 통해 모델의 성능을 평가하는 방식입니다. 여기에서의 평가지표는 아래와 같습니다. 

 

  1. Precision@K  = 실제 유저가 관심이 있는 아이템 / 추천된 K개의 아이템
  2. Recall@K = 추천된 아이템 중 유저가 관심이 있는 아이템 / 유저가 관심있는 전체 아이템

예시를 들어서 이해해봅시다. 우리가 5개의 아이템을 추천했습니다. 그리고 유저는 3개의 아이템에 관심이 있죠. 3개의 아이템 중 우리가 추천한 아이템은 2개가 있네요.

  1. Precision@K = 2 / 5 = 추천한 아이템 중 유저가 관심이 있는 아이템 / 우리가 추천한 아이템
  2. Recall@K = 2 / 3 = 추천한 아이템 중 유저가 관심이 있는 아이템 / 유저가 관심이 있는 전체 아이템

여기에서 아이템의 추천 순위는 상관이 없고, 그냥 그 갯수에만 관심을 두기로 합니다. 그리고 위 수치를 이용해 MAP@K, AP@K 등도 구하게 됩니다. 

AP@K = Precision@1 ~ Precision@K까지의 평균값

i개의 아이템을 추천했다고 할 때, i = 1인 Precision@1 부터 i = k인, Precision@K까지의 값들을 평균낸 것입니다. Precision@K와 달리, 관련 아이템을 더 높은 순위에 추천할 수록 점수가 상승합니다. 왜냐하면 높은 순위에 추천될 수록, i가 작은 경우에도 포함이 되어 평균이 계산될 테니까요. 

MAP@K = 모든 유저의 AP@K의 평균값

이 것은 모든 유저에 대한 AP@K의 평균으로 이루어집니다. AP@K의 값은 한 명의 유저에 대해서만 반영됩니다. 

NDCG(Normalized Discounted Cumulative Gain)

이 것은 추천시스템에 가장 많이 사용되는 지표로, 검색에서 등장한 지표입니다. 이전 Precision@K, MAP@K와 마찬가지로, TopK 리스트를 만들고, 유저가 선호하는 아이템을 비교하여 값을 구하는 방법입니다. MAP@K와 마찬가지로, 추천의 순서에 더 많은 가중치를 두어 성능을 평가합니다. 그리고, 0과 1 사이의 값 중 1에 가까워질 수록 좋은 수치라고 할 수 있습니다. 

 

1. Cumalative Gain 

상위 K개의 아이템에 대해서 관련도를 합한 것입니다. 추천 순위에 대해서 Discount가 이루어지지는 않습니다. 

 

2. Ideal DCG

이상적인 추천이 일어났을 때의 DCG값입니다. 가능한 DCG 값 중 가장 큰 값입니다. 

 

3. Discounted Cumalative Gain

추천 순위에 따라서 Cumalative Gain을 Discount한 결과입니다. 이 값들을 이용해 최종 Normalized DCG를 구하게 됩니다.

예시를 들어서 이해해봅시다. 만일 이상적인 Order가 [C(3), A(3), B(2), E(2), D(1)] 순으로 이루어진다고 해봅시다. 괄호 안의 숫자는 Relavance를 의미하고, 보통은 이 수치의 내림차순으로 정렬해 추천하는 것이 이상적입니다. 그리고 실제 추천 순서는 [E, A, C, D, B]로 이루어졌다고 합시다. 그러면 DCG와 IDCG는 아래와 같이 구해집니다. 

결론적으로 NDCG는 DCG / IDCG의 값인 6.64 / 7.14 = 0.93으로 측정되는 것입니다. 

 

그리고 Offline Test로 검증된 가설, 모델은 고객에게 서빙됩니다. 그리고 Online Test가 진행되죠. 실제 추천결과를 고객에게 받고, 이를 통해 성능을 평가합니다. 여기서는 A/B Test를 활용합니다. 추천 시스템을 도입, 변경하기 전과 후의 성능을 비교하는 것은 아니고, 동시에 대조군(A)와 실험군(B)의 성능을 평가하는 방식으로 이루어집니다. 실재로 서비스를 통해 얻어지는 결과를 이용해 최종적인 의사결정을 내리는 것입니다. 여기에서는 모델의 성능보다는 비즈니스/서비스 지표들을 활용해 성능을 평가하는 경우가 많습니다. 

 

 

 

'RecSys (추천시스템)' 카테고리의 다른 글

추천시스템, 그 세계에 대하여  (1) 2023.12.06