평가함수를 다양하게 알아야 하는 이유
- 평가함수는 추천시스템의 모델을 생성한 뒤, 해당 모델이 얼마나 추천을 잘 진행하고 있는지에 대해서 평가를 도와주는 함수
- 목적에 따라 적합한 평가함수를 사용하는 것이 중요
- 예를 들어 영화 평점에 추천에서 다음의 두 가지 형태는 분명히 다름
- 추천해준 영화를 고객이 보았는가?
- 추천한 영화를 고객이 높은 점수로 평점을 주었는가?
첫 번째 평가의 경우 단순히 고객이 영화를 본 경우 추천 성공이라고 보지만, 실제 만족도는 낮을 수 있다. 반대로 두 번째의 경우는 고객의 만족도까지 고려하여 평가를 진행했다. 일반적으로 두 번째 평가 방법의 사용이 더 좋아보이지만, 실제 그 이후의 데이터를 얻을 수 있는지 등 주어진 상황에 알맞은 평가함수를 선택하는 것이 중요하다.
평가 함수
- Accuracy
- 추천한 Item을 고객이 구매했는가 구매하지 않았는가를 평가
- 추천해준 Item을 고객이 많이 구매할수록, 혹은 추천하지 않은 Item을 구매하지 않을수록 정확도는 상승
- 하지만 추천하지 않은 Item의 수는 추천한 Item의 수에 비해 매우 많으므로 편향된 결과를 얻을 수 있음(모두 추천하지 않으면 1)
- 따라서, 추천해준 Item 중 실제 고객이 구매한 Item으로만 평가를 해야한다. 하지만, 만약 모델이 모든 Item을 추천한다면 정확도는 1이 되는 문제가 여전히 존재한다. 따라서, 상위 n개의 상품만 추천한다고 했을 때, 어느정도의 정확도를 얻는지 판단하는 것이 가장 정확한 값을 얻을 수 있다.
- MAP(Mean Average Precision)
- Precision과 Recall은 순서를 고려하지 않음
- Precision: 모델이 True라고 예측한 것 중 실제 True의 비율 -
- Recall: 실제 True 중에서 모델이 True라고 예측한 비율 -
- 추천시스템에서는 평가에서 순서가 매우 중요하고, 정확도의 단점을 개선한 MAP를 사용
- AP: Average Precision으로, 추천한 K개 Item의 평균 Precision을 의미
- : 해당 Index까지의 Precision 값
- : 추천이 맞은 경우 1, 틀리면 0
- 예시
rel Precision @K AP@3 [0, 0, 1] [0, 0, 1/3] (1/3)(1/3)=0.11 [0, 1, 1] [0, 1/2, 2/3] (1/3)(1/2+1/3)=0.38 [1, 1, 0] [1/1, 2/2, 2/3] (1/3)(1/1+1/2+2/3)=0.89 [1, 1, 1] [1/1, 2/2, 3/3] (1/3)(1/1+2/2+3/3)=1 - 2행과 3행을 보면, 3개의 추천 중 사용자가 2개의 Item에 반응을 보인 것은 동일하지만, 추천 순서에 따라서 값의 차이가 나는 것을 확인할 수 있음.
- 또한, 상위 K개 추천에 대해서만 평가하기 때문에 K의 값을 바꿔가며 상위 몇 개를 추천하는 게 좋을지 결정 가능
- MAP@K: 모든 사용자의 AP@K를 평균한 값 (평균 Precision인 AP를 모든 사용자에 대해 또다시 평균)
- 위 예시에서 모든 사용자 4명의 AP를 평균낸 것이 MAP
-
- 즉,
- 위 예시에서 모든 사용자 4명의 AP를 평균낸 것이 MAP
- AP: Average Precision으로, 추천한 K개 Item의 평균 Precision을 의미
- Precision과 Recall은 순서를 고려하지 않음
- nDCG (normalized Discounted Cumulative Gain)
- 검색 알고리즘에서 성과를 측정하는 평가 메트릭 중 하나
- 추천엔진은 user와 연관있는 documents의 집합을 추천해주기 때문에, 단순히 문서 검색 작업을 수행한다고 생각한다면 NDCG를 이용하여 추천엔진을 평가 가능
- NDCG를 이해하기 위한 정의
- CG(Cumulative Gain)
- relevance scores: 추천 결과에 따른 User의 Feedback
- CG는 단순히 상위 p개의 추천 결과에 대한 관련성을 합한 누적값
- CG는 상위 p개의 결과를 동일한 비중으로 계산하므로 순서를 고려하지 않음
- DCG(Discounted Cumulative Gain)
- 기존의 CG에서 순서에 따라 점점 비중을 줄여가는 discount를 도입
- 순서에 대한 로그함수를 분모에 두어, 하위권으로 갈수록 작은 값을 가지게 됨
⇒ 예를 들어, A 방법과 B 방법의 두 가지 추천 결과가 있을 때 CG와 DCG는 각각 다음과 같음
(i) ,
(ii)
(iii)
⇒ 즉, 초반에 추천된 것이 맞을수록 높은 점수를 획득
- nDCG
- DCG는 추천결과의 위치를 고려했을 때 좋은 평가함수로 보이지만, 추천 결과의 개수()에 따라 결과가 달라진다는 단점이 존재
- 따라서, 추천 결과 평가 개수 에 상관없이 일정 scale을 가지도록 정규화를 수행한 것이 nDCG
- DCG를 해당 추천 결과 개수에서 이상적인 상황 (Ideal DCG - 선택된 개 결과로 가질 수 있는 가장 큰 DCG 값)으로 나눠준 것
→ 해당 개수의 추천에서 이상적인 상황 대비 해당 추천의 평가 결과
- 예시
- 추천 결과 = [2, 3, 3, 1, 2]
- Ideal Order = [3, 3, 2, 2, 1]
→
- CG(Cumulative Gain)