tfrs.metrics.FactorizedTopK
란 무엇인가?FactorizedTopK
는 TFRS 라이브러리에서 추천 시스템의 검색(retrieval) 작업을 평가하기 위해 설계된 메트릭입니다. 추천 시스템에서는 사용자가 좋아하는 아이템(예: 영화, 상품 등)을 대규모 카탈로그에서 찾아 상위 K개의 추천 목록으로 제시하는 것이 중요합니다. 이 메트릭은 모델이 상위 K개의 추천 항목 중 얼마나 많은 항목이 실제로 사용자에게 적합한지 평가합니다.
이미지의 상단 설명 부분에는 FactorizedTopK
메트릭의 핵심 내용을 리스트로 정리해 놓았습니다. 하나씩 자세히 살펴보겠습니다:
Retrieval Task에 특화된 메트릭
Retrieval Task는 Positive밖에 넣지 않음
Candidates를 정의 가능
Accuracy @ K를 계산
FactorizedTopK
는 상위 K개의 추천 항목 중 얼마나 많은 항목이 사용자에게 적합한지(즉, 테스트 데이터에서 실제로 사용자가 상호작용한 항목인지)를 측정합니다.ScANN (ANN 라이브러리)를 이용한 Evaluation도 가능
이미지에는 아래와 같은 Python 코드가 포함되어 있습니다:
metrics = tfrs.metrics.FactorizedTopK(
candidates=movies.batch(128).map(movie_model1)
)
이 코드를 단계별로 풀어서 설명하겠습니다:
tfrs.metrics.FactorizedTopK
:
candidates=movies.batch(128).map(movie_model1)
:
movies
: 영화 데이터셋으로, 추천 시스템에서 추천할 수 있는 모든 영화 항목을 나타냅니다..batch(128)
: 데이터를 128개씩 묶어서 처리합니다. 이는 메모리 효율성을 높이고 대규모 데이터를 다룰 때 유용합니다..map(movie_model1)
: movie_model1
이라는 모델을 각 영화에 적용합니다. 이 모델은 일반적으로 영화의 특징을 추출하거나 임베딩(embedding, 저차원 벡터 표현)을 생성하는 역할을 합니다.candidates
는 모델로 처리된 영화 데이터의 임베딩 집합이 됩니다. 이 임베딩은 추천 시스템에서 각 영화의 유사성을 비교하거나 순위를 매길 때 사용됩니다.코드의 의미:
FactorizedTopK
메트릭을 초기화하며, 추천 후보로 사용할 영화 데이터(movies
)를 movie_model1
을 통해 변환한 결과를 지정합니다. 이후 이 메트릭은 모델이 예측한 상위 K개의 추천과 실제 사용자 데이터(테스트셋)를 비교해 성능을 평가합니다.이 메트릭이 실제로 어떻게 작동하는지 간단한 예제를 통해 알아보겠습니다.
["영화 C", "영화 A", "영화 D", "영화 E", "영화 B"]
K=5일 때:
K=3일 때:
FactorizedTopK
는 모델이 예측한 상위 K개 추천 목록과 테스트셋의 긍정적 사례를 비교해 얼마나 잘 맞는지 계산합니다.대규모 데이터셋(예: 수백만 개 영화)에서 모든 후보 항목에 대해 정확한 상위 K를 계산하면 시간이 오래 걸릴 수 있습니다. 이때 ScANN을 사용하면:
추천 시스템에서의 검색과 순위:
FactorizedTopK
는 검색 단계의 성능을 평가하는 데 특화되어 있습니다. 즉, 후보 집합에 사용자가 좋아할 만한 아이템이 얼마나 포함되었는지를 측정합니다.왜 중요할까?
FactorizedTopK
는 이를 효율적으로 계산하며, TFRS에서 추천 모델의 성능을 평가하는 데 핵심적인 도구입니다.FactorizedTopK
는 TFRS에서 추천 시스템의 검색 작업을 평가하기 위한 메트릭으로:
candidates
)을 모델로 처리한 데이터를 기반으로 작동합니다.위 코드와 설명을 통해, 예를 들어 영화 추천 시스템에서 모델이 얼마나 잘 작동하는지 확인할 수 있습니다. 사용자는 이 메트릭을 사용해 모델을 튜닝하거나 성능을 비교하며 더 나은 추천을 제공할 수 있습니다.