250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- subdag
- API Gateway
- GenericGBQException
- Counterfactual Explanations
- chatGPT
- Retry
- session 유지
- Airflow
- requests
- 공분산
- BigQuery
- API
- 유튜브 API
- gather_nd
- TensorFlow
- integrated gradient
- correlation
- login crawling
- tensorflow text
- spark udf
- UDF
- flask
- XAI
- top_k
- grad-cam
- hadoop
- GCP
- airflow subdag
- youtube data
- 상관관계
Archives
- Today
- Total
데이터과학 삼학년
추천 시스템 평가(precision@k, recall@k) 본문
반응형
Precision@K
- Precision@K는 추천시스템이 얼마나 정확하게 추천을 했는지를 평가
- 여기서 K는 추천된 아이템의 상위 몇 개를 고려할 것인지를
- 예를 들어, precision@5는 상위 5개의 추천 아이템 중에서 사용자가 선호하는 아이템이 얼마나 있는지를 측정
Recall@K
- Recall@K는 추천시스템이 사용자가 선호하는 아이템을 얼마나 많이 찾아냈는지를 평가
- 여기서도 K는 추천된 아이템의 상위 몇 개를 고려
- 예를 들어, recall@5는 상위 5개의 추천 아이템 중에서 사용자가 실제로 좋아하는 모든 아이템 중 몇 개를 포함하고 있는지를 측정
계산 예시
클릭한적 있는 item: [2, 4, 6, 8]
모델 예측 결과 item: [3, 1, 2, 5, 6, 7, 8] -> 클릭할 확률이 높은 순으로 배열
precision@3
[3, 1, 2, 5, 6, 7, 8]
[3, 1, 2] intersect [2, 4, 6, 8] / 3 = 0.33
recall@3
[3, 1, 2, 5, 6, 7, 8]
[1, 2, 3] intersect [2, 4, 6, 8] / 4 = 0.25
코드
def precision_at_k(recommended_items, relevant_items, k):
"""
Calculate precision@k.
Parameters:
recommended_items (list): List of recommended items
relevant_items (list): List of relevant (liked) items
k (int): Number of top recommendations to consider
Returns:
float: precision@k value
"""
# Take the top k recommended items
top_k_recommended = recommended_items[:k]
# Count the number of relevant items in the top k recommended items
relevant_in_top_k = len(set(top_k_recommended) & set(relevant_items))
# Calculate precision@k
precision_k = relevant_in_top_k / k
return precision_k
def recall_at_k(recommended_items, relevant_items, k):
"""
Calculate recall@k.
Parameters:
recommended_items (list): List of recommended items
relevant_items (list): List of relevant (liked) items
k (int): Number of top recommendations to consider
Returns:
float: recall@k value
"""
# Take the top k recommended items
top_k_recommended = recommended_items[:k]
# Count the number of relevant items in the top k recommended items
relevant_in_top_k = len(set(top_k_recommended) & set(relevant_items))
# Calculate recall@k
recall_k = relevant_in_top_k / len(relevant_items)
return recall_k
# 예시 데이터
recommended_items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 추천된 아이템 리스트
relevant_items = [3, 5, 7, 9, 11] # 사용자가 선호하는 아이템 리스트
k = 5 # 상위 k개의 추천 아이템을 고려
# precision@k 계산
precision = precision_at_k(recommended_items, relevant_items, k)
print(f'Precision@{k}: {precision:.2f}')
# recall@k 계산
recall = recall_at_k(recommended_items, relevant_items, k)
print(f'Recall@{k}: {recall:.2f}')
728x90
반응형
LIST
'Recommendation System' 카테고리의 다른 글
추천 Ranking 알고리즘 관련 metric :: NDCG (0) | 2024.08.23 |
---|---|
LightGBM Ranker (0) | 2024.08.04 |
RECSIM: A Configurable Simulation Platform for Recommender System 기초 개념 (0) | 2021.05.03 |
Recommendation Systems (0) | 2020.08.10 |
[Association rule (연관규칙)] Support, Confidence, Lift, Interest-Support, Cross-Support (0) | 2020.06.18 |
Comments