devmoon

추천시스템의 평가 지표와 Offline/Online Test 방법 본문

AI/추천 시스템

추천시스템의 평가 지표와 Offline/Online Test 방법

Orca0917 2022. 10. 20. 15:59

추천 시스템 모델을 만들었다면 실제로 적용했을 때 얼마나 좋게 작용하는지 평가할 수 있어야 한다. 간단하게 회사의 비즈니스 입장에서는 새로운 추천 모델을 통해 매출이 얼마나 증가했고, 조회가 얼마나 증가했는지 확인해볼 수 있다. 또한 추천 시스템에서 중요한 평가지표인 CTR(Click Through Rate, 클릭률)을 통해 노출대비 클릭이 얼마나 많이 이루어졌는지 알아볼 수 있다.

 

 

 

 

반대로 비즈니스 관점이 아닌 사용자에게 얼마나 품질 좋은 추천이 이루어졌는지 생각해볼 수 도 있다. 사용자가 느낄만한 관점은 아래와 같이 크게 4가지로 분류하여 평가한다.

 

 

 

  • 연관성 : 추천된 상품이 유저와 관련된 상품인가?
  • 다양성 : 추천된 K 개의 상품에 다양한 상품이 포함되어 있는가? 하나의 카테고리 상품만 추천되고 있지는 않은가?
  • 새로움 : 새로고침을 했을 때도 새로운 상품들이 추천되고 있는가?
  • 참신함 : 유저가 생각하지 못한 관심있는 상품을 추천하는가?

 

 

 

 

 

 Offline Test 

 

Offline Test는 머신러닝에서 모델을 테스트할 때 평가하는 것과 같은 방식을 말한다. 고정된 데이터셋을 사용하여 학습 데이터, 검증 데이터, 평가 데이터로 나누어서 모델을 학습하고 평가하는 것이다. 추천 시스템도 Offline Test를 진행하게 되며 여기서 좋은 성능을 내는 모델이 실제 Online 에도 적용된다.

 

 

 

 

하지만 Online 에서의 결과는 Offline Test와 차이가 존재할 수 있다. 그 대표적인 이유로는 Serving Bias를 들 수 있다. Online Test에서는 추천 시스템을 통해 추천된 결과를 유저에게 전달하고, 다시 유저에게 피드백을 받아서 모델을 재학습 시키게 된다. 일방적으로 학습을 통해 만들어진 하나의 모델을 사용하는 것이 아닌, 유저로부터 다시 돌아오는 새로운 피드백 데이터를 통해 모델을 학습시켜나가는 것이며 이를 Serving Bias라고 한다.

 

 

 

 

추천이 된 상품을 평가하는 성능 지표로는 이전게시글에서 살펴보았듯이 아래와 같은 것들이 있으며 이제부터 랭킹 문제의 평가지표로 사용되는 4가지 대표 평가 지표들을 하나씩 살펴보고자 한다.

 

  • 랭킹 문제 : Precision@K, Recall@K, MAP@K, NDCG@K, Hit Rate
  • 예측 문제 : RMSE, MAE

 

 

 

 

 

 Precision@K 

 

Precision과 Recall 성능지표는 원래 분류문제에서 사용되던 성능지표이다. 추천에 적용되는 경우 K개로 확장되어 @K 가 따라붙게 된다. 이는 상위 K개를 추천한 결과에 대한 성능을 평가하겠다는 의미이다. 결국 Precision@K가 의미하는 것은 추천모델을 통해서 추천한 K 개의 아이템 중 실제로 유저가 관심을 보인 아이템의 비율을 의미한다.

 

  • 추천한 아이템의 수 : 5
  • 실제로 유저가 관심을 보인 아이템의 수 : 2
  • Precision@5 = 2 / 5

 

 

 

 

 Recall@K 

 

Recall 성능지표도 Precision 지표와 유사하다. 차이점이 있다면 계산하는 비율의 분모로 추천한 아이템의 수가 아닌, 유저가 관심을 가지고 있던 아이템의 수가 된다. 즉, Recall@K는 유저가 관심있어하는 전체 아이템 중 추천 모델을 통해서 추천한 아이템의 비율을 의미한다.

 

  • 추천한 아이템의 수 : 5
  • 실제로 유저가 관심을 보인 아이템의 수 : 2
  • 유저가 관심있어하는 아이템의 전체 수 : 3
  • Recall@5 = 2 / 3

 

 

 

 

 MAP@K 

 

MAP는 Mean Average Precision으로 그 개념을 이해하기 전 AP@K(Average Precision) 먼저 이해하고 있어야 한다. Average Precision은 말 그대로 Precision@K의 평균이라고 생각하면 된다. AP@K는 Precision@1부터 Precision@K까지의 합을 실제로 유저가 관심을 보인 아이템의 수($m$)으로 나누어 준 것이다.

 

 

 

$$ \text{AP}@K = \frac{1}{m} \sum_{i=1}^{k} \text{Precision}@i \times rel(i) $$

 

  • $rel(i)$ : $i$ 번째 상품이 실제 유저가 관심을 보인 아이템인지 여부 (0 또는 1)
  • $m$ : $rel(i)$ 값이 1인 것의 개수 (= 실제로 유저가 관심을 보인 아이템의 수)

 

 

 

여기서 하나 중요한 점은 AP@K가 유저에게 추천이되는 아이템의 순서도 같이 고려하여 평가를 한다는 것이다. 좋아할 만한 것을 상위에 두고 추천을 진행한 경우에 더 높은 점수를 받는 것이 가능하다. (갈수록 분모의 값이 더 커지기 때문)

 

 

 

 

다시 본론인 MAP@K에 대해서 알아보면, AP@K가 1명의 유저에 대한 Precision 평균이라고 본다면 MAP@K는 모든 유저에 대한 AP값의 평균이다. 아래에서 $\vert U \vert$ 가 의미하는 것은 전체 유저의 수이다.

 

 

 

$$ \text{MAP}@K = \frac{1}{\vert U \vert} \sum_{u=1}^{\vert U \vert} (\text{AP}@K)_u $$

 

 

 

 

 

 NDCG@K 

 

NDCG는 Normalized Discounted Cumulative Gain의 앞글자를 따서 만든 평가지표로 MAP@K와 마찬가지로 여러개의 지표들이 결합되어서 만들어진 평가지표이다. NDCG를 알기 위해 NDCG 이외의 3개의 값에 대해서 알아봐야 한다.

 

 

 

 

 CG (Cumulative Gain) 

 

Cumulative Gain은 상위 K개의 아이템에 대한 $rel(i)$ 관련도 값을 합친 것으로 추천 순서에 따른 점수의 변화가 있지는 않다. 이때 앞서 소개한 $rel(i)$ 값과는 다르게 0과 1이 아닌 실수 형태의 값을 띄므로 각 아이템에 대한 관심도를 더 많이 반영할 수 있다.

 

 

 

$$ \text{CG}@K = \sum_{i = 1}^{K} rel(i) $$

 

 

 

 

 DCG (Discounted Cumulativ Gain) 

 

위에서 CG@K는 추천 순서에 따른 점수의 변화가 존재하지 않았다면, DCG는 추천 순서에 따라 점수의 차이를 둔 것을 말한다. 더 늦게 추천이 될수록 분모의 값을 키워서 더해지는 값이 작아지도록 만들었다.

 

 

 

$$ \text{DCG}@K = \sum_{i=1}^{K} \frac{rel(i)}{\log_2(i+1)} $$

 

 

 

 

 IDCG (Ideal Discounted Cumulative Gain) 

 

IDCG@K는 DCG@K의 가장 이상적인 추천이 이루어졌을 때의 값으로 가능한 DCG@K의 값 중에서 가장 큰 값이라고 생각할 수 있다. 가장 이상적인 추천이 이루어졌기 때문에, 유저가 관심 있어 하는 아이템들을 상위에 배치되어 있게 된다.

 

 

 

$$ \text{IDCG}@K = \sum_{i=1}^{K} \frac{rel^{opt}(i)}{\log_2(i+1)} $$

 

 

 

 

 NDCG (Normalized Discounted Cumulative Gain) 

 

위에서 3가지 준비물들을 모두 준비했으니 NDCG 값을 구해볼 수 있다. NDCG는 추천시스템에서 가장 많이 사용되는 지표 중에 하나로 원래는 추천 시스템이 아닌 검색에서 최초로 등장한 지표이다. DCG에서 추천 순서에 따라 점수에 차이를 주었기 때문에 MAP@K와 마찬가지로 추천의 순서에 가중치를 두어 성능을 평가하게 된다. 이때 값은 1에 가까울수록 추천이 잘 이루어졌음을 말한다(DCG가 IDCG에 가까워지는 것을 말함). 

 

 

 

$$ \text{NDCG} = \frac{\text{DCG}}{\text{IDCG}} $$

 

 

 

추가로 CG를 구할 때, $rel(i)$ 값이 실수로 사용되었기 때문에 유저에게 얼마나 더 관련 있는 아이템을 상위로 노출시켰는지도 구하는 것이 가능하다.

 

 

 

 

 

 

 

 Online A/B Test 

 

출처:Naver Boostcamp AI Tech (Recommender System 강의)

 

Offline Test 에서 검증된 추천 모델을 이제 Online에 적용을 하는데 바로 기존의 모델을 대체하여 그 성능을 비교하는 것이 아닌 Online에서 2개의 추천 모델을 동시에 사용하여 성능을 비교한다. 그 이유로는 바로 추천 모델이 교체되면 사용되는 데이터셋이 시점마다 모두 다르기 때문에 정확한 비교가 불가능하기 때문이다.

 

 

 

 

따라서, Online Test에서는 100%의 트래픽이 요청된다면, 50% 씩 각 모델에 전달하여 평가를 진행하게 된다. 이때 각각 두 모델을 실험군과 대조군이라고 부르며 실험환경은 최대한 동일하게 유지를 해주어야 한다. Offline Test에서는 MAE, NDCG@K와 같은 평가지표들을 많이 사용하였지만, 실제 현업에서는 매출이 더 중요한 지표로 작용하기 때문에 금전적인 매출이나 CTR 등의 비즈니스 지표를 더 많이 사용하고 있다.

 

 

Comments