평가함수는 도메인에 맞게 적절하게 쓰여야 한다.
예를 들어서, 내가 추천해준 영화를 고객이 봤나?
내가 추천해준 영화를 고객이 좋은 평점을 줬나?
1. Accuracy
내가 추천해준 영화를 고객이 봤나요?
내가 추천해준 영화를 기준으로 정확도를 계산한다.
문제점이 추천을 1개만 하는 게 아니고 n개를 추천해주기때문에 추천에는 순위가 존재하는데 이를 반영해주지 못한다.
2. Map
precision의 average를 계산한다.
ap: precision의 average
map: 사람의 ap를 average
추천에 순서를 보완하였다.
0,1,1 과 1,1,0의 차이를 보면 0.38과 0.89로 차이가 있다.
3. Ndcg
검색 엔진에서 자주 사용되는 평가함수다.
사용자마다 추천해주는 상품의 갯수가 다를 수 있는데 이도 보완이 된다.
- cg
cumulative gain = relevance의 합 (순서 맞은 걸 더해준다)
- dcg
위치에 따라서 분모를 크게 만들어서 값을 순서가 뒤로 갈수록 score을 작게 만들어준다.
- ndcg
dcg가 추천의 수에 따라서 결과가 달라서 normalize를 해서 ndcg를 구해준다.
dcg / idcg를 구해준다.
ndcg의 자세한 설명은 아래 링크를 참고하자
ride-or-die.info/normalized-discounted-cumulative-gain/
Normalized Discounted Cumulative Gain (nDCG) 예제와 코드 - ride-or-die's blog
검색엔진과 같은 랭킹 추천 시스템의 평가지표로 많이 쓰이는 nDCG (normalized discounted cumulative gain) 에 대해서 예제와 함께 알아보고, 파이썬 Python 코드로 간단히 구현해보겠습니다.
ride-or-die.info
*이 글은 토크on세미나 유튜브를 통해 공부한 내용입니다.
'이제는 사용하지 않는 공부방 > Artificial intelligence' 카테고리의 다른 글
[밑바닥부터 시작하는 딥러닝] 6장 학습관련 기술들 (0) | 2021.05.07 |
---|---|
[tensorflow] tutorial 1. mnist (0) | 2021.05.01 |
[추천시스템] 협업 필터링 (KNN, SGD, ALS..) (0) | 2021.04.30 |
[밑바닥부터 시작하는 딥러닝] 5강 오차역전파법 핵심정리 (0) | 2021.04.30 |
[추천시스템] 컨텐츠 기반 모델 word2vec ( cbow, skip-gram ) (0) | 2021.04.26 |