공공연히 개발하기 🧑💻/Machine Learning
[추천시스템] 추천시스템 성능 평가 - 평가 지표 (mAP@K, nDCG 총정리)
공공연히
2024. 9. 2. 23:54
추천시스템, 추천 모델의 다양한 성능 평가 방법 중 mAP와 nDCG 평가 지표에 대해 알아보자.
1. MAP@K
- Precision, Recall
- Cutoff (@K)
- Average Precision (AP@K)
- Mean Average Precision (MAP@K)
2. nDCG
- Relevance score, 관련성 점수
- CG (Cumulative Gain)
- DCG (Discounted Cumulative Gain)
- IDCG (Ideal DCG)
- nDCG (Normalized DCG)
1. MAP (Mean Average Precision)@K
Precision, Recall (정밀도와 재현율)
- Precision 정밀도→ 추천한 아이템 중 실제로 사용자가 관심을 보인 아이템의 비율
- Precision@K: Top K개의 결과로 Precision을 계산한 것. Precision at K
예시) 추천 결과 중 사용자가 관심을 보인 것을 O, 보이지 않은 것을 X로 표기하여 O,X,O,O,O,X 의 결과가 나왔을 경우
Precision@3 = O,X,O = 2/3 = 0.6667
Precision@4 = O,X,O,O = 3/4 = 0.75 Precision@5 = O,X,O,O,O,X = 4/5 = 0.8
- 실제 관심아이템 / 총 추천아이템
- 모델이 참이라고 분류한 값 중에서 실제값이 참인 비율
TP/TP+FP
- Recall 재현도(재현율)→ 실제로 사용자가 관심을 보인 아이템 중 추천한 아이템의 비율
- 실제값이 참인 값 중에서 모델이 참이라고 분류한 비율
TP/TP+FN
정밀도와 재현율은 서로 반비례관계에 있다.
정밀도와 재현율은 모두 TP를 높이는 데에 초점을 맞추지만, 재현율은 FN을 낮추는 데에,
정밀도는 FP를 낮추는 데에 집중한다.
이러한 특성 때문에 정밀도와 재현율은는 서로 보완적인 지표로 분류의 성능을 평가하는데 사용된다.
가장 좋은 결과는 정밀도와 재현율이 모두 높은 수치를 갖는 경우이다.
하지만 둘 중 하나라도 매우 낮은 결과를 나타낸다면 바람직하지 않다고 할 수 있다.
Cutoff (@K)
- cutoff는 잘라낸다는 뜻 = 상위 K개만 고려하고 그 아래로는 쳐내기
- cutoff를 가질 경우 @K를 붙여서 표기 Precision@K
- ex) Precision@10 : 10개의 추천 항목의 정밀도
Average Precision (AP@K)
- 순서 개념 도입
- Precision@K의 평균을 구하는 과정
- AP는 각각의 사용자(또는 쿼리)에 대하여 계산한 것, 각 사용자에 따라 AP값이 산출된다.
Precision@1
부터Precision@K
까지의평균값
을 의미Precision@K
와 다르게 연관성 있는 아이템을 더 높은 순위에 추천할 경우 점수가 상승
Mean Average Precision (MAP@K)
- Mean Average Precision(MAP)은 모든 유저에 대한 AP값들의 평균을 구한 것
- 각 사용자들의 AP를 구하고 각 AP값들의 평균을 구한다.
2. nDCG (Normalized DCG)
Relevance score, 관련성 점수
- 사용자가 특정 아이템과 얼마나 관련이 있는지를 나타내는 값
- Relevance값은 정해진 것이 아니고 추천의 상황에 맞게 정해야 함
- 클릭의 여부, 얼마나 클릭을 했는 지 등 다양한 방법으로 선정할 수 있음
- 관련성 점수 예시:
- 클릭, 좋아요, 장바구니, 주문 등으로 관련성 점수 부여
- 4개의 class로 나누어 점수 부여하는 방식
- 관심도 단계 (좋아요<장바구니<주문) 로 가중치 부여 등
CG (Cumulative Gain)
- 관련성 점수를 합한 값
- 관련성 점수는(Relavance Score)는 사용자가 추천된 각 아이템을 얼마나 선호하는지를 나타내는 점수
- 랭킹 순서에 상관없이 관련도를 합한 것
DCG (Discounted Cumulative Gain)
- 랭킹 순서에 따라 점점 비중을 줄여 rel 결과 계산
- 하위권 결과에 패널티 주는 방식
- 추천 아이템의 순서가 뒤에 있을수록 분모가 커짐으로써 전체 DCG에 영향을 적게 주도록 함
- 로그함수를 분모로
- 사용자별로 추천 아이템의 수가 다른 경우 정확한 성능 평가가 어렵다.
- 정확한 평가를 위해서는 Scale을 통일해야 할 필요성이 있다.
IDCG (Ideal DCG)
- IDCG는 최선의 추천을 했을 때 받는 DCG값
- IDCG는 모든 추천 아이템 조합 중에 최대 DCG값과 동일 = DCG의 최대값
nDCG (Normalized DCG)
- DCG를 IDCG로 나눈 값
Precision@K
,MAP@K
와 마찬가지로 Top K 추천 리스트를 만들고 유저가 선호하는 아이템을 비교하여 값을 구한다.MAP
는 관련 여부를 binary(0/1)로 평가하지만,NDCG
는 관련도 값을 사용할 수 있기 때문에, 유저에게 더 관련 있는 아이템을 상위로 노출시키는지 알 수 있다. (binary 변수도 계산 가능)- NDCG는 0~1사이의 값을 갖게되는데 1과 가까울수록 우수한 추천시스템
- 랭킹에 민감한 추천서비스의 경우 유용한 평가지표
- 기존의 DCG는 랭킹 결과의 길이 p에 따라 값이 많이 변함. p가 커질수록 누적합인 DCG는 커짐
- p에 상관없이 일정 스케일의 값을 가지도록 normalize가 필요함
- DCG는 p값에 어느 정도 독립적이며, 작은 스케일을 갖게 됨