BookmarkSubscribeRSS Feed

평가지표 - MAP

Started ‎12-07-2024 by
Modified ‎12-07-2024 by
Views 442

MAP는 Mean Average Precision 은 Binary Relevance Metrics로 추천시스템에 자주 사용하는 평가지표로 이진적으로 판단해 좋은 추천인지 나쁜 추천인지를 가려내는 지표입니다.

리스트 내에서 유관 상품이 등장할 때마다 정확도를 구하고, 이를 평균치를 구합니다.

결과로 생성된 여러 리스트끼리의 평균을 내서 평가합니다.

 

image.png

https://docs.auto-rag.com/evaluate_metrics/retrieval.html

 

 

user1은 사용자와 유관한 상품이 첫번째에 나와 첫번째 Precision 은 1/1, 세번째와 네번째에 유관한 상품이 나와 2/3과 3/4 Precision을 갖습니다.

Average Precision은 Precision의 평균으로 (1/1 + 2/3 + 3/4)/3 = 0.8 이 나옵니다.

user2sms 유관한 상품이 네번째와 다섯번째에 나와 각각 1/4 와 2/5가 Precision 입니다. 그래서 average precision 은 (1/4 + 2/5) /2 = 0.325 입니다.

Mean Average Precision 은 user1과 user2의 precision 의 평균으로 (0.8 + 0.325)/2 = 0.56이 됩니다.

즉, MAP란 유관한 상품이 나온 곳 까지 Precision 을 구하고 다시 유관한 상품이 나온 곳 까지 Precision을 구해서 평균을 구하는 것입니다.

MAP는 binary 한 상황에서만 적용할 수 있는 지표이고, bianry 이외에는 사용하지 않는다라는 단점이 있습니다.

하지만 랭킹이 높은 아이템에 더 높은 가중치를 부여하기 때문에 대부분의 추천시스템에서는 적절한 평가지표입니다.

 

# SAS Code

 

data recommendations;
    input user_id item_id relevant;
    datalines;
    1 101 1
    1 102 1
    1 103 0
    2 201 1
    2 202 0
    2 203 1
    3 301 0
    3 302 1
    3 303 0
    ;
run;

 

 

위 데이터는 가상의 데이터로 user_id (사용자 ID), item_id (추천된 아이템 ID), relevant (사용자와 관련이 있으면 1 , 관련이 없으면 0) 라는 칼럼으로 구성되어 있습니다.

 

 

data precision_at_k;
    set recommendations;
    by user_id;
    retain cum_relevant count_at_k precision_at_k;

    if first.user_id then do;
        cum_relevant = 0; 
        count_at_k = 0;   
    end;

    count_at_k + 1;       
    cum_relevant + relevant; 

    precision_at_k = cum_relevant / count_at_k; 

    if last.user_id then output; 
run;

 

사용자별로 Precision (precision_at_k)을 계산합니다.

 

 

proc sql;
    select mean(precision_at_k) as MAP
    from precision_at_k;
quit;

 

MAP 는 모든 사용자의 Precision 평균값을 계산합니다.

MAP는 값이 1에 가까울 수록 추천 시스템의 성능이 우수하다라고 할 수 있습니다.

Version history
Last update:
‎12-07-2024 09:20 AM
Updated by:
Contributors

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

Article Labels
Article Tags