brunch

You can make anything
by writing

C.S.Lewis

by 디이프 Mar 29. 2022

[데이터과학] 추천 시스템 성능평가 방법 - mAP

mean Average Precision(mAP)

EDITOR'S NOTE

요즘 넷플릭스나 쿠팡 안 쓰시는 분들은 없으시죠? (협찬아님주의) 저는 사실 그렇게 유행을 따르는 편은 아니지만, 저 두 가지 앱을 자주 쓰게 되는데요.


코로나19와 함께 집에 있는 시간도 많아지면서 어디서든지 간편하게 콘텐츠를 즐기고 필요한 상품을 주문할 수 있는 플랫폼들의 인기가 식을 줄을 모르고 있습니다! 


넷플릭스 드라마를 시청하다 보면 ‘oo’님이 시청 중인 콘텐츠와 비슷한 콘텐츠라며 다른 드라마를 추천해주기도 하고요. 쿠팡에서 쇼핑하다 보면 ‘이런 상품은 어때요?’ 또는 ‘다른 고객이 함께 본 상품’이라며 연관된 상품이나 비슷한 카테고리의 상품들을 고도의 알고리즘을 통해 추천해주기도 합니다. 


물론 디이프는 더 정밀화된 개인의 라이프로그 데이터와 함께 유전자에 맞는 음식을 추천해주기 때문에 개인의 취향과 유행과는 다른 부분이 있습니다. 


오늘은 이런 추천 성능을 평가하는 지표인 mAP(mean Average Precision)에 대해서 디이프의 이상민 책임님께서 설명해드리도록 할게요~!



I. Prologue

최근 개인화 서비스가 대세를 이루면서 영화, 음악, 책, 뉴스 등 다양한 서비스 분야에 개인화된 검색과 추천 기술들이 적용되고 있습니다. 이러한 검색과 추천 서비스가 지속성을 가지기 위해서는 추천 시스템을 개발하는 것도 중요하지만 객관적으로 추천 시스템에 대해 평가하여 개선해 나가는 것이 매우 중요합니다.


일반적으로 추천 시스템은 Ranking 기반 검색과 추천 방식과 예측 기반 검색과 추천 방식으로 분류할 수 있는데, 추천 방식에 따라 평가 지표들도 달라집니다. 


이번 포스팅에서는 다양한 평가 방법들이 있지만 Ranking 기반 추천 시스템의 성능평가 방법 중 mean Average Precision(mAP)에 대해 소개하고자 합니다.



II. 검색과 추천 시스템에서 Precision & Recall의 정의에 대해 알아볼까요?

Precision(정밀도)과 Recall(재현율)이라는 용어는 기계학습을 접해보신 분들이라면 익히 들어온 용어일 겁니다. Precision과 Recall은 binary classification 성능 평가를 위해 많이 활용되는 지표입니다. 검색과 추천 시스템에서는 Precision과 Recall을 다음과 같이 정의할 수 있습니다.    


# of our recommendations that are relevant : 추천 시스템이 정확히 예상한 아이템 수

# of items we recommended : 추천한 전체 아이템 수

# of all the possible relevant items : 실제로 구매나 관심을 보인 아이템 수



Ranking 기반한 추천 시스템에서는 아이템의 순서나 순위가 중요한데 여기서는 고려되지 않습니다. AP 성능지표는 아이템의 순서나 순위를 고려하여 Precision 값을 구할 수 있습니다.



III. Average Precision@k (AP@k)는 어떻게 측정할 수 있을까요?

Average Precision의 용어 자체에서도 알 수 있듯이 Precision의 평균값을 의미하는데 이는 한번 추천했을 때 추천되는 아이템들에 Precision의 평균을 구하여 측정할 수 있습니다.

AP@k을 구하는 수식은 다음과 같습니다.    


k : 추천 성능을 몇 번째 순위까지 평가할 것인지 결정하는 index

P(k) : 해당 index까지의 Precision 값

rel(k) : 해당 index에서 relevant 한 아이템이 추천되었는지 여부



예를 들어, 10개의 아이템을 추천해주는 시스템이 있다고 가정해봅시다. 관련성 있는 아이템이 총 6개이고 추천된 10개의 아이템 중 1순위, 3순위, 4순위, 5순위, 6순위, 10순위에 관련성 있는 아이템이 배치되었을 때, 1-10순위까지 아이템을 차례대로 추천되었을 때의 Precision 값을 구할 수 있습니다. 


1순위 아이템만 추천되었을 때 총 1개가 추천되었고 1개가 관련성 있는 아이템이므로 Precision은 1이 됩니다. 3순위까지 아이템이 추천되었을 때는 총 3개가 추천되었고 2개가 관련성 있는 아이템이므로 Precision은 0.67이 됩니다. 이렇게 구해진 precision 중 관련성 있는 아이템의 precision 값을 평균하면 AP를 구할 수 있습니다.


그림  1. AP 측정 방법 예시 (이미지 출처 : https://www.programmerall.com/article/75781721336/)



IV. mean Average Precision@k (mAP@k)를 이용해 추천에 대한 성능을 측정합니다!

mAP는 Ranking 기반의 검색/추천 시스템의 성능을 평가할 때 주로 많이 사용되는 평가 지표입니다.

AP가 추천 한 번에 대한 성능지표라 하면 mAP는 전체 추천에 대한 precision 값이라고 할 수 있습니다. mAP@k 수식은 아래와 같습니다.



아래 그림에서는 검색 시스템의 예를 들어 설명하고 있는데, 추천 시스템이라고 했을 때 query 1을 추천 한 번의 AP값이라 생각하시면 이해하시기 좋을 것 같습니다. 각각의 AP값을 평균하여 전체 추천에 대한 성능을 측정할 수 있습니다.


그림  2 . mAP 측정 방법 예시 (이미지 출처 : https://www.programmerall.com/article/75781721336/)



V. 마치며

mAP를 통한 검색과 추천 시스템 성능평가 방법에 대해 알아보았습니다. 서비스마다 검색과 추천 방식은 다르므로 추구하시는 성능 목표에 맞게 방법들을 설정하는 게 필요합니다. 만약 추천된 아이템의 순위를 고려하여 추천 성능을 평가하고자 한다면 mAP를 통해 평가해보는 것도 좋을 것 같습니다.





Reference    

https://sdsawtelle.github.io/blog/output/mean-average-precision-MAP-for-recommender-systems.html

https://techblog-history-younghunjo1.tistory.com/133

https://www.programmerall.com/article/75781721336/


작가의 이전글 뱅쇼(Vin Chaud)를 마셔볼까요~?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari