|
|
분명 위의 2가지는 다릅니다. 1번의 경우 단순히 보기만 하면 추천에 성공했다고 하지만, 실제 고객의 만족도는 낮을 수 있습니다. 반대로 2의 경우는 고객의 만족도까지 고려해서 평가를 한 것입니다. 이러한 성질은 추천을 진행할 때에도 차이가 생깁니다.
🔹 Accuracy (정확도)
- 예측이 얼마나 맞았는지를 측정하는 지표. 전체 예측 중 맞은 것(정답)의 비율을 계산한다. 이진 분류에서 일반적으로 사용되며, 추천에서는 클릭/비클릭 등 이진 반응에 한정해 사용된다.
- Accuracy = (TP + TN) / (TP + TN + FP + FN)
- 내가 추천해준 영화를 고객이 봤나? Vs 보지 않았나?
- 내가 추천해주는 영화를 많이 볼수록 추천하지 않은 영화를 보지 않을수록 정확도는 상승
- 하지만, 추천하지 않은 영화의 수는 추천한 영화의 수에 비해 굉장히 많고 편향된 결과를 얻을 수 있음
- 그래서, 추천해준 영화 중 본 영화로만 평가를 매겨줘야 합니다. 근데, 이렇게 해도 문제가 하나 있습니다. 그러면 모든 상품을 추천해주면 정확도는 무조건 1이 나옵니다. 상위 n개의 상품만 추천한다고 했을 때 어느 정도의 정확도를 얻는지 판단하는 게 제일 정확한 값을 얻을 수 있습니다.
🔹 F1-Score (F1 점수)
- Precision(정밀도)과 Recall(재현율)의 조화 평균. 불균형 클래스 상황에서 효과적이다. 추천이 얼마나 정확하고 포괄적인지를 균형 있게 측정한다.
- F1 = 2 * (Precision * Recall) / (Precision + Recall)
- F1은 Precision과 Recall의 역수를 더한 값을 분모로 2를 분자로 가지는 평가 함수입니다.
- Recall은 실제 본 영화의 수 대비 추천했는데 본 영화의 수를 의미합니다.
- Precision은 실제 추천한 영화의 수 대비 추천했는데 본 영화의 수를 의미합니다.
- 위 2가지 함수를 함께 봄으로서 추천을 통해 맞춘 영화의 비율과 추천을 안 해서 안 볼 영화를 맞춘 비율을 적절하게 조절하는 평가 함수입니다.
🔹 RMSE (Root Mean Squared Error)
- 예측 평점과 실제 평점 간 오차의 제곱 평균의 제곱근. 오차가 클수록 패널티가 커지므로 큰 오차에 민감하다. 평점 예측 기반 추천에서 자주 사용된다.
- RMSE = sqrt(mean((예측값 - 실제값)^2))
- Accuracy : 내가 추천해준 영화를 고객이 봤나? Vs 보지 않았나?
- RMSE : 추천한 평점이 얼마나 다를지? (영화 추천의 경우 사용자가 5를 평가하는 경우를 얼마나 잘 맞출지)
- 위의 경우에서 Accuracy와 RMSE의 평가는 굉장히 다릅니다. Accuracy의 경우 단순 볼까? 안볼까에 대한 평가만 진행하고, 사용자의 반응에 대해서는 크게 궁금해하지 않습니다.
- 예를 들어, 영화를 구매하고 보자마자 재미없어서 나간 것도 추천에 성공한 것으로 반영됩니다.
🔹 MAP (Mean Average Precision)
- 여러 사용자에 대해 계산한 Average Precision(AP)의 평균. 추천 리스트 내에서 관련 항목이 얼마나 앞쪽에 위치하는지를 평가한다. 순서가 중요한 경우에 사용된다.
- 추천 순위에서 관련 아이템을 상위에 많이 배치할수록 높은 점수
- Recommendations : 추천을 했는데 맞은 경우 1, 틀리면 0
- AP : Precision @k’s를 평균 낸 값 (추천한 K개의 영화의 Precision을 평균)
- MAP@4 : 4명의 사용자의 AP를 평균낸 값 (Precision을 평균낸 AP를 4명의 사용자에 대해 평균)
- MAP의 경우 추천의 순서에 따라서 값이 차이가 납니다. 또한, 상위 k개의 추천에 대해서만 평가하기에 k를 바꿔가면서 상위 몇 개를 추천하는 게 좋을지도 결정할 수 있습니다.
🔹 CG (Cumulative Gain, 누적 이득)
- 추천 리스트에서 얻은 관련 아이템의 누적 점수. 단순히 관련성 점수들의 합으로 계산되며, 아이템의 순서를 고려하지 않는다.
- CG@K = 관련성 점수의 누적합 (상위 K개)
🔹 DCG (Discounted Cumulative Gain)
- 추천된 아이템의 순위를 고려하여 관련성 점수에 로그 기반 감쇠를 적용한 누적 이득. 앞쪽에 나온 관련 아이템에 더 높은 가치를 부여한다.
- DCG@K = rel₁ + rel₂ / log₂(2) + rel₃ / log₂(3) + ...
🔹 NDCG (Normalized DCG)
- DCG를 이상적인 DCG(완벽하게 정렬된 경우)로 나눈 정규화 값. 0~1 사이의 값을 가지며, 추천 리스트가 이상적인 정렬과 얼마나 유사한지를 나타낸다.
- NDCG@K = DCG@K / IDCG@K
- 1에 가까울수록 이상적인 추천과 유사함