추천 성능(평가 지표)에 대한 고찰

이번에는 추천 시스템의 성능인 추천 평가 지표에 대해 알아보겠습니다. 추천 시스템의 지표는 크게 두 가지로 나눌 수 있습니다.

  1. 추천 알고리즘 모델(CF, MF, DeepFM, …)의 성능 지표

  2. A/B test를 통해 실제 서비스되는 추천의 성능 지표

여기서 첫번째 지표는 오프라인 테스트에 대한 지표, 두번째 지표는 온라인 테스트에 대한 지표라고도 부릅니다. 첫번째 지표는 알고리즘의 성능 자체를 평가하는 지표로 생각하시면 되고, 두번째 지표는 추천 모델이 반환한 추천 결과와 실제 고객이 선택한 리스트를 비교한 지표입니다. 온라인 지표에는 판매 금액 등 사업적 지표도 내포하고 있습니다.

이렇게 지표를 나누는 까닭은 추천 엔진을 통한 결과는 실제 추천 결과와 상이하기 때문인데요. 단편적으로 생각해서 추천 모델은 이전의 데이터로 만들어졌기 때문에 현재 기준의 사용자에게 모델과 동일한 추천 정확도가 나올 수 없다라고 생각하시면 이해가 쉬울 것 같습니다. 일반적으로는 1번의 오프라인 테스트를 통해 현재 데이터셋 내에서 최상의 결과를 내는 알고리즘을 개발한 후, 실제 해당 모델로 반환된 추천리스트를 사용자에게 제공 후 A/B test를 통해 2번 온라인 테스트 지표를 추출하여 최종적인 추천의 성능을 도출합니다. (사실 A/B test의 결과가 서비스 관점에서의 추천 정확도입니다.)

이제 추천에 주로 사용되는 각각의 지표에 대해 알아보겠습니다.

  • 추천 알고리즘의 성능 지표 (오프라인 테스트)
    • RMSE (Root Mean Square Error) : 에러 값에 대한 지표로 일반적으로 rating error에 대한 값으로 사용합니다.
    • MAP @K (Mean Average Precision at K) : Precision 값에 대한 지표로 @k는 예측한 추천 리스트 중 상위 K개에 해당하는 값으로 precision 계산 시 분모로 두고 계산하면 됩니다.
    • nDCG (Normalized Discounted Cumulative Gain) : 순위를 고려한 평가 방법으로 상위의 랭크에 대해 지표 값의 차이가 큰 것이 특징입니다.
    • MRR (Mean Reciprocal Rank) : 순위를 고려한 평가 방법으로 사용자가 선호하는 아이템이 추천리스트 중 몇번째에 속하는지에 대한 지표입니다.
  • 추천 서비스의 성능 지표 (온라인 테스트)
    • CTR (Click Through Rate) : 총 노출 비율 대비 실제 클릭 비율입니다.
    • 사업적 지표 : 구매 금액, 구매 건 수, 재방문률

추천을 잘했다라고 하기 위해선 모델에 대한 지표와 A/B test를 통한 지표 모두가 중요합니다.

또한, 한가지 지표를 통해 검증하기 보다 여러 지표를 종합적으로 비교하는 것이 좋습니다. 예를 들어, MAP가 높다고 nDCG가 반드시 높다고 할 수 없습니다. 따라서 하나의 지표를 관리하기 보다는 여러개의 모델 지표를 사용하는 것을 추천드립니다.

☝ Reference

  1. https://medium.com/@junhoher/%EC%B6%94%EC%B2%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%8F%89%EA%B0%80-%EC%A7%80%ED%91%9C-%EB%91%90-%EA%B0%80%EC%A7%80-recall-k-%EB%B0%8F-precision-k-6b2032e2e360
  2. https://yeomko.tistory.com/32

Leave a comment