본문 바로가기
Archive/추천시스템

[추천] 추천 시스템의 평가

by 다람이도토리 2021. 9. 15.
참고
[1] https://techblog-history-younghunjo1.tistory.com/133
[2] https://zzaebok.github.io/recommender_system/metrics/rec_metrics/
[3] https://jyoondev.tistory.com/131

복습 : 추천 시스템이 풀려는 문제

추천시스템은 크게 분류 문제 / 회귀 문제 관점 두 가지로 해석이 가능하다.

- 분류 문제 : 유저가 좋아할만한 아이템을 k개 찾아 준다. 
- 회귀 문제 : 유저가 특정 아이템에 매길 평점을 예측한다.

이에 따라, 분류 문제와 회귀 무제에서 기존에 사용된 평가 지표를 활용 가능할 것이다?

기존 Metric의 문제점

하지만, 단순히 기존의 분류와 회귀에서 사용한 Metric을 그대로 사용하기에는 몇가지 문제점이 존재한다.

- 추천이 '유의미하지 않을 정도로' 너무 많은 item이 추천된다면, 추천에 의미가 없을 것이다.
- 즉, 상위 k개의 추천안에 실제로 유의미한 아이템을 추천해야 한다.
- 또한, k개의 순서를 고려하는 것도 좋을 것이다.

Rank를 고려하지 않은 Metric

[1] Precision@k : k개의 추천 중 실제로 사용자가 선호하는 아이템이 몇 개인가?
[2] Recall@k : 유저가 선호하는 아이템 중 k개의 추천 안에 몇개가 들어가 있는가?

이는 분류 문제에서의 metric과 유사하다. 위 지표의 문제점은 상대적인 선호도가 반영되어 있지 않다는 점이다.

Rank를 고려한 Metric

Mean Reciprocal Rank(MRR)

MRR은 사용자가 선호하는 아이템이 몇 번째에 있는지에 중점을 둔 평가이다.

Reciprocal Rank라는 말 답게 역수를 적용한다. 예를 들어, 10개의 추천 리스트 중에서 사용자가 선호하는 아이템이 3번째에 있을 경우, Reciprocal Rank는 1/3이 된다. 그리고 추천된 아이템의 모든 RR 값을 계산하여 평균을 낸다. 이 값이 높을 수록 좋은 성능일 것이다. 더 높은 순위에 선호하는 아이템이 있다는 의미이다.

Mean Average Precision(MAP)

MRR의 아쉬운 부분은, 추천 1순위 아이템을 틀리는 것과 2순위, 3순위... 즉 다른 순위의 아이템의 추천을 틀리는 것에 가치를 동일하게 매기고 있다는 부분이다. 이를 보완하기 위한 방법이 Average Precision이다.

MAP의 경우는 1순위부터 K순위까지 순서대로 누적된 precision을 계산하여, 이를 평균내는 방법이다.

기타 지표

Personalizaion

개인화 지표로, 추천된 제품 리스트들 간에, 다른 유저들과 얼마나 다르게 추천되는지를 평가하는 지표이다.
이는 코사인 유사도를 바탕으로 측정할 수 있을 것이다. 추천 여부에 따른 0-1 matrix의 생성을 통해 계산할 수 있다.
유저간 코사인 유사도의 평균을 1에서 뺀 값을 지표로 잡으며, 이 값이 클 수록 개인별로 다른 아이템이 추천되었다고 볼 수 있다.

Intra-list Similarity

위와 유사하게 각 개인에게는 얼마나 유사한 성격의 아이템이 추천되었는지를 평가할 수 있다.
아이템의 특성에 따라 역시 코사인 유사도를 측정한다. 코사인 유사도가 높을 수록 유사한 아이템이 추천된 것이기 때문에 추천의 성능이 더 좋다고 할 수 있다.