추천시스템은 결국 사용자들이 우리들이 추천해준 아이템을 선택하게 하는 것이 목표이다.
따라서 우리가 만든 추천시스템 모델의 성능을 평가하는데에는 비즈니스 성격이 포함될 수 밖에 없다.
추천시스템 성능 평가는 2가지로 크게 분류할 수 있다.
비즈니스/서비스 관점
품질 관점
그렇다면 어떻게 평가를 수행할까?
우선 Offline Test가 있다.
새로운 추천 모델을 검증하기 위해 가장 우선적으로 수행되는 단계로,
유저로부터 수집한 데이터를 train/valid/test로 나누어 모델 성능을 객관적인 지표로 평가한다.
이 평가지표를 토대로 online serving에 투입되지만 실제 서비스에서는 다른 결과가 나타날 수 있다. (Serving bias)
그 이유는 online serving시 고객의 feedback이 다시 학습 데이터에 포함되어 모델이 model1, model2로 계속 발전하기 때문이다.
성능 지표로는 아래와 같다.
위 성능 지표를 자세히 살펴보면,
✅ 랭킹 문제
Precsion@K : 추천한 K개 아이템 중 사용자가 선택한 아이템 비율
Recall@K : 사용자가 선택한 전체 아이템 중 추천한 아이템 비율
MAP@K (Mean Average Precision) : 모든 사용자의 Average Precision 값 평균
→ Average Precision (AP@K)는 Precision@1 ~ Precision@K까지의 평균
(❗ 중요) NDCG@K (Normalized Discounted Cumulative Gain) : 추천시스템에서 가장 많이 쓰이는 평가 지표
→ Top K 리스트를 만들고 유저가 선호하는 아이템을 비교하여 값을 구함
→ 추천 순서에 Weight를 주어 성능 평가하고 1에 가까울수록 성능이 좋다고 판단
→ Binary 값이 아닌 수치로 표현되어 사용자에게 더 관련 있는 아이템을 상위로 노출하는지 알 수 있음
→ Formula를 살펴보자면,
- Cumulative Gain : Top K개 아이템 관련도 합
- Discounted Cumulative Gain : 순서에 따라 Cumulative Gain을 Discount
- Ideal DCG : 이상적인 추천이 일어났을 때 DCG 값 (가능한 DCG 값 중 가장 큼)
- Normalized DCG : DCG를 IDCG로 나눈 값
두번째로 Online A/B Test가 있다.
Offline Test에서 검증된 가설이나 모델을 이용해 실제 추천 결과를 서빙하는 단계이다.
대조군 (A)와 실험군 (B)의 성능을 평가한다. 이 결과를 통해 최종 의사결정이 이뤄지며, 실제 현업에서도 의사결정하기 위한 최종 지표로 모델 성능이 아닌 매출, CTR 등 비스지스/서비스 지표로 이루어진다.