옛날과 다르게 유저가 상호작용할 수 있는 아이템의 수가 기하급수적으로 늘어나면서, 극소수의 인기있는 아이템에 소비가 집중되는 Long-tail Phenomenon이 발생하고 있다.
이러한 소비 추세에서 Long-tail에 해당되는 아이템에 대해 사용자가 원하는 아이템을 추천해줌으로써 아이템 소비를 분산시키고, 사용자에게는 개인화된 추천을 제공하기 위해 추천 시스템이 사용되고 있다.
추천 시스템을 구현하기 위해 사용되는 데이터는 크게 세가지이다.
- 사용자 메타 데이터
- 아이템 메타 데이터
- 사용자-아이템 상호작용 데이터
추천 시스템의 추천 목표는 크게 두가지로, 사용자가 선호할 만한 아이템에 대해 랭킹을 매기거나 혹은 사용자의 선호 확률을 예측하는 것이다.
어느 쪽이든 추천 시스템을 구현한 뒤에 추천 시스템을 평가하는 과정이 필요하다.
최종적으로 추천 시스템 모델을 평가하는 것은 CTR, 매출 등과 같은 비즈니스/서비스적 관점에서의 기준이지만 개발 과정에서 모델 자체의 성능을 평가하는 것도 필요하다.
개발 과정에서 모델의 성능을 평가하는 것은 크게 오프라인 테스트와 온라인 테스트로 나뉘는데, 오프라인 테스트는 특정 지표의 스코어를 통해 모델의 성능을 정량화하는 것이고, 온라인 테스트는 실제 배포 환경에서 Traffic을 나누어 대조군 A와 실험군 B를 동시에 진행하여 테스트하는 것으로 A/B 테스트라고도 한다.
여기서는 오프라인 테스트 시에 사용되는 정량화된 지표들에 대해 자세히 알아보고자 한다.
랭킹 부분에서 추천 시스템의 성능을 평가하기 위해 사용되는 지표로는 Precision@K, Recall@K, MAP@K, NDCG@K 등이 있다.
예측 부분에서는 회귀 문제에서와 같이 RMSE, MAE 등의 지표를 사용한다.

Precision은 으로 추천 시스템이 추천해준 아이템 중에 실제로 사용자가 관심을 보인 아이템의 비율을 의미한다.

Recall은 으로 사용자가 관심을 보인 아이템 중에 추천 시스템이 추천해 준 아이템이 얼마나 포함되는지의 비율을 의미한다.
MAP(Mean Average Precision)은 성능 평가에 순서 개념을 도입한 것이다. 즉, Precision과 Recall처럼 단순히 개수가 아닌 얼마나 선호하는지에 대한 순서 또한 평가 지표에 반영한 것이다.
Precision@i는 총 K개의 인덱스 중 i까지의 인덱스만 반영하여 계산했을 때의 스코어를 의미한다. AP@K는 Precision@1부터 Precision@K까지의 평균값을 뜻한다. 순서가 반영되기 때문에, 관련 아이템을 상위 순위로 추천할 수록 점수가 상승한다.
MAP@K는 이렇게 구한 AP@K의 모든 유저에 대한 평균값을 의미한다.
마찬가지로 순서를 반영한 평가 지표로, 추천 시스템에서 가장 많이 사용되는 지표 중에 하나이다.
- Cumulative Gain : 순서에 따른 차등없이, 추천된 상위 K개의 아이템의 관련도를 합한 것
- Discounted Cumulative Gain : 순서를 반영하여 순서에 따라 CG를 Discount하여 계산
- 관련도를 로 나누어 순서에 따른 차등 부여- Ideal DCG : 이상적인 추천이 일어났을 때의 DCG 값으로 사용자가 선호하는 순서에 따라 계산된 값을 의미
- Normalized DCG : , 추천 결과에 따라 구해진 DCG 값을 IDCG로 나눈 것으로 최대값은 1