MostPop ,DecayPop,ItemKNN협업 필터링(Collaborative Filtering) 알고리즘
🎵 1. MostPop – 음악 차트 및 인기곡
"MostPop"은 음악 분야에서 "가장 인기 있는 팝 음악"을 의미할 수 있습니다. 다양한 플랫폼에서 실시간으로 인기곡을 확인할 수 있습니다:
- Apple Music Top 100 USA: 미국에서 가장 많이 재생된 곡 목록
- Shazam Global Top 200: 전 세계에서 가장 많이 검색된 곡 목록
- iHeart Pop Top 40: 미국 라디오에서 가장 많이 방송된 팝송
- Spotify International Top Hits 2025: 글로벌 스트리밍 인기곡
예를 들어, 2025년 5월 기준으로 Morgan Wallen과 Tate McRae의 "What I Want"가 빌보드 핫 100 차트에서 1위를 차지했습니다.Apple Music - Web Player+2위키백과+2Business Insider+2
🌐 2. MostPop – 인스타그램 연동 링크 플랫폼
MostPop은 인스타그램 사용자들이 자신의 게시물에 상품 링크를 삽입하여, 팔로워들이 직접 해당 상품을 구매할 수 있도록 돕는 플랫폼입니다. 이는 소셜 커머스와 마케팅을 결합한 서비스로, 인플루언서나 브랜드에게 유용합니다.
- 기능: 인스타그램 피드와 연동된 쇼핑 링크 생성
- 활용 예시: 패션 인플루언서가 착용한 옷의 구매 링크를 게시물에 추가
"DecayPop"은 2020년 SIGIR 학회에서 발표된 추천 시스템 알고리즘으로, 기존의 인기 기반 추천 방식인 "MostPop"의 한계를 극복하기 위해 개발되었습니다. 싱가포르국립대학교(NUS)의 연구자 Aixin Sun과 그의 팀이 제안한 이 알고리즘은 시간에 따른 아이템의 인기도 감소를 고려하여, 사용자에게 더 신선하고 다양한 추천을 제공하는 것을 목표로 합니다.ResearchGate+2X (formerly Twitter)+2ResearchGate+2X (formerly Twitter)+2ResearchGate+2ResearchGate+2
🧠 DecayPop의 핵심 개념
- 시간 가중치 적용: 아이템의 인기도에 시간 가중치를 부여하여, 시간이 지남에 따라 인기도가 감소하도록 설계되었습니다.
- 다양성 향상: 단순히 인기 있는 아이템만을 추천하는 것이 아니라, 시간에 따른 인기도 변화를 고려하여 다양한 아이템을 추천합니다.
- 성능 개선: 연구 결과에 따르면, DecayPop은 약 50억 개의 상호작용 데이터를 포함한 산업 규모의 데이터셋에서도 우수한 성능을 보였습니다. X (formerly Twitter)
📊 성능 평가
연구에서는 다양한 사용자 그룹을 대상으로 DecayPop의 성능을 평가하였습니다. 그 결과, 대부분의 평가 지표에서 기존의 MostPop 알고리즘보다 우수한 성능을 나타냈습니다. ResearchGate
🔗 관련 자료
- 연구 논문: "A Re-visit of the Popularity Baseline in Recommender Systems"
- 연구자: Aixin Sun, Yitong Ji, Jie Zhang, Chenliang Li
- 발표 학회: SIGIR 2020X (formerly Twitter)+3ResearchGate+3ResearchGate+3X (formerly Twitter)+1ResearchGate+1
DecayPop은 시간에 따른 아이템의 인기도 변화를 고려하여 추천의 다양성과 신선도를 향상시키는 알고리즘으로, 기존의 인기 기반 추천 방식의 한계를 보완하는 데 기여하고 있습니다.


ItemKNN은 추천 시스템(recommender system) 분야에서 널리 사용되는 협업 필터링(Collaborative Filtering) 알고리즘 중 하나입니다. 특히 아이템 기반 협업 필터링(item-based collaborative filtering) 방식으로, 사용자의 행동 데이터를 기반으로 비슷한 아이템 간의 유사도를 계산하여 추천을 제공합니다.
📘 ItemKNN: 핵심 개념 요약
항목 | 설명 |
✅ 정식 명칭 | Item-based K-Nearest Neighbors (ItemKNN) |
💡 방식 | 사용자가 선호한 아이템과 유사한 아이템 K개를 찾아 추천 |
📈 유사도 계산 | 코사인 유사도(Cosine), 피어슨 상관계수(Pearson), 자카드 유사도 등 |
📊 입력 데이터 | 사용자-아이템 평가 행렬 (User-Item Interaction Matrix) |
📦 구현 라이브러리 | Surprise, Implicit, LightFM, RecBole, cornac, Spotlight 등 |
🧠 특징 | 빠르고 직관적이며, sparse 데이터에 적합 |
❌ 단점 | Cold-start 문제에 약함 (새로운 아이템이나 사용자에 대한 추천이 어려움) |
🔧 작동 방식 (예시)
- 사용자 A가 아이템 X를 좋아했다.
- 시스템은 아이템 X와 유사한 아이템 K개를 찾는다. (예: X와 비슷한 Y, Z, W)
- 사용자 A에게 Y, Z, W를 추천한다.
→ 즉, **“이 아이템을 좋아한 사람은 이 비슷한 아이템도 좋아합니다.”**라는 접근입니다.
🧪 유사도 계산 공식 (예: 코사인 유사도)

💻 Python 구현 예시 (Surprise 라이브러리)
from surprise.model_selection import train_test_split
from surprise import accuracy
# Load built-in Movielens-100k dataset
data = Dataset.load_builtin('ml-100k')
trainset, testset = train_test_split(data, test_size=0.25)
# Item-based KNN
sim_options = {
'name': 'cosine',
'user_based': False # Item-based
}
algo = KNNBasic(sim_options=sim_options)
algo.fit(trainset)
# 평가
predictions = algo.test(testset)
print("RMSE:", accuracy.rmse(predictions))
🧭 ItemKNN vs UserKNN 차이
항목 | ItemKNN | UserKNN |
기준 | 아이템 간 유사도 | 사용자 간 유사도 |
추천 방식 | “이 아이템을 본 사람은 저 아이템도 봤다” | “이 사용자가 좋아한 아이템은 비슷한 사용자도 좋아한다” |
성능 | 보통 더 정확함 | 경우에 따라 다양 |
📌 사용 시기
ItemKNN은 다음과 같은 상황에서 적합합니다:
- 추천 설명이 직관적이어야 할 때 ("이것을 산 사람은 이것도 샀다")
- 사용자가 많은 경우 (UserKNN보다 확장성 좋음)
- 빠른 구현이 필요한 PoC/프로토타입 단계
👉 ItemKNN, UserKNN, Matrix Factorization, Neural CF 등 주요 추천 모델 성능 비교표
아래는 대표적인 추천 알고리즘인 **ItemKNN, UserKNN, Matrix Factorization(SVD), Neural Collaborative Filtering(Neural CF)**의 성능과 특징을 다양한 관점에서 비교한 표입니다.
📊 주요 추천 알고리즘 성능 및 특징 비교표
비교 항목 | ItemKNN | UserKNN | Matrix Factorization (SVD) | Neural CF (NCF, NMF) |
✅ 기본 개념 | 유사한 아이템 기반 추천 | 유사한 사용자 기반 추천 | 사용자-아이템 잠재 벡터 분해 | 딥러닝 기반 비선형 추천 |
🧠 학습 방식 | 메모리 기반, 비모델 방식 | 메모리 기반, 비모델 방식 | Latent Factor 모델, SGD 등 | 딥러닝 MLP, GMF, NCF 구조 |
🧩 입력 데이터 유형 | 명시적/암묵적 피드백 모두 가능 | 명시적/암묵적 피드백 모두 가능 | 주로 명시적 평점 | 암묵적 피드백 + 부가 정보 가능 (user/item features) |
⚙️ 구현 난이도 | 매우 낮음 | 매우 낮음 | 중간 (행렬 분해, 튜닝 필요) | 높음 (모델 설계, 학습 파라미터 많음) |
🧪 Cold Start 대응 | ❌ (신규 아이템/사용자 시 추천 불가) | ❌ | ❌ (부족한 경우 sparse 문제) | ✅ (부가 정보 활용 시 가능) |
⏱ 학습 속도 | 빠름 (no training) | 빠름 (no training) | 중간 | 느림 (epoch 많고 GPU 필요) |
📈 추천 정확도 | 중간 ~ 높음 (최근 접속 기반 추천에 유리) | 중간 | 높음 | 매우 높음 (비선형 구조, 상호작용 학습 우수) |
📉 데이터 sparsity 대응 | 약함 | 약함 | 중간 | 높음 (Embedding 구조 활용) |
🧭 설명 가능성 | ✅ (ex. “이 상품을 본 사람은 이걸 샀다”) | ✅ | ❌ | ❌ (블랙박스 모델) |
🧬 대표 라이브러리 | Surprise, Implicit, LightFM | Surprise, Implicit, LightFM | Surprise (SVD, SVD++) | LightFM, NeuralCF (RecBole, DLRM, DeepRecSys) |
🎯 추천 시나리오 예 | “A 상품을 본 고객에게 유사한 B 상품 추천” | “나와 유사한 고객이 본 상품 추천” | “이 사용자가 평점 5점 줄 상품 예측” | “이 사용자가 좋아할 만한 상품 딥러닝 기반 추론” |
🏁 요약 정리
목적 | 추천 알고리즘 추천 |
빠르게 프로토타입 만들기 | ItemKNN / UserKNN |
정확한 평점 예측 | Matrix Factorization (SVD) |
고도화된 딥러닝 추천 모델 개발 | Neural CF (GMF + MLP) |
cold-start 사용자/아이템 대응 | Neural CF + side info |
추천 이유가 설명 가능해야 할 때 | ItemKNN / UserKNN |
IALS(Implicit Alternating Least Squares)는 암묵적 피드백(implicit feedback) 기반 추천 시스템에서 가장 널리 사용되는 행렬 분해 알고리즘 중 하나입니다. 특히 사용자 행동 로그(예: 조회, 클릭, 구매) 데이터를 활용하여 사용자-아이템 잠재 벡터를 학습하는 데 효과적입니다.
🧠 IALS: 핵심 요약
항목 | 설명 |
🏷️ 이름 | Implicit Alternating Least Squares |
📚 분류 | 행렬 분해(Matrix Factorization) 방식 |
📥 입력 데이터 | 사용자 행동 로그 (예: 클릭, 구매, 조회, 좋아요 등) |
💡 핵심 특징 | **명시적 평점이 없는 상황(Implicit Data)**에서 추천 성능이 우수 |
📐 수학 방식 | Alternating Least Squares (ALS)를 기반으로 가중치와 신뢰도(weight & confidence) 반영 |
⚙️ 구현 도구 | implicit 라이브러리, Spark ALS, LightFM 등 |
🚫 약점 | 데이터가 너무 sparse할 경우 cold-start 문제 있음 |
🔎 IALS 작동 개념
IALS는 다음과 같은 가정과 수식을 기반으로 작동합니다:

💻 Python 구현 예시 (implicit 라이브러리 사용)
from scipy.sparse import coo_matrix
# 예시: 사용자-아이템 상호작용 sparse matrix
data = coo_matrix([
[1, 0, 3],
[0, 2, 0],
[4, 0, 0]
])
# 모델 초기화 및 학습
model = AlternatingLeastSquares(factors=50, regularization=0.01, iterations=20)
model.fit(data)
# 추천
user_id = 0
recommended = model.recommend(user_id, data[user_id], N=5)
✅ IALS의 장점
항목 | 설명 |
✔ 암묵적 데이터에 최적화 | 평점 없이도 추천 가능 (조회/구매만으로도 학습) |
✔ 확장성 | 대규모 사용자/아이템에도 잘 작동 |
✔ 성숙된 구현체 존재 | Spark ALS, implicit 등 다양한 구현이 안정적 |
🆚 IALS vs 다른 알고리즘 비교
알고리즘 | 특징 | 암묵적 피드백 | 정형 평점 필요 |
IALS | 빠르고 신뢰도 반영 가능 | ✅ 지원 | ❌ |
MF (SVD) | 명시적 평점 기반 | ❌ 미지원 | ✅ 필요 |
NMF | 비음수 제약 행렬 분해 | ❌ 미지원 | ✅ |
LightFM | Hybrid (feature 지원) | ✅ 지원 | ✅ 지원 |
Neural CF | DNN 기반 비선형 추천 | ✅ 가능 | ✅ |
👉 IALS의 하이퍼파라미터 튜닝 가이드, 또는 👉 ALS vs BPR vs LightFM 성능 비교표
IALS(Implicit ALS)는 암묵적 피드백 기반 행렬 분해 추천 시스템 중 하나로, 주로 implicit 라이브러리에서 사용됩니다. 여기서는 **IALS (Implicit Alternating Least Squares)**의 핵심 하이퍼파라미터와 튜닝 가이드를 정리해드리겠습니다.
🎛️ IALS 주요 하이퍼파라미터 목록 및 튜닝 가이드
하이퍼파라미터 | 설명 | 추천 범위 | 튜닝 가이드 |
factors | 잠재 요인(latent factor)의 수 | 32 ~ 200 | 너무 작으면 추천 정확도 낮고, 너무 크면 과적합 위험. 일반적으로 64, 128 추천 |
regularization | 정규화 계수 | 0.001 ~ 0.1 | 과적합 방지를 위한 정규화. 기본값 0.01, 높은 정확도 원할 땐 0.05 이상 실험 |
iterations | ALS 반복 횟수 | 10 ~ 50 | 수렴할 때까지 반복, 일반적으로 15~30 사이면 충분 |
alpha | confidence scaling factor | 5 ~ 100 | 암묵적 데이터 신뢰도 조정, 높을수록 클릭/구매를 더 강하게 반영 |
use_gpu | GPU 사용 여부 | True/False | cuMF 연동시 가능, 데이터 클 경우 GPU 권장 |
dtype | 데이터 정밀도 (float32/64) | float32 | 큰 데이터셋에서 float32로 설정해 메모리 최적화 |
📌 튜닝 전략 요약
1. factors: 추천 성능의 핵심
- 너무 작으면 추천 다양성 부족
- 너무 크면 과적합 및 계산 비용 증가
- factors = 64 or 128부터 시작해 실험
2. alpha: 암묵적 피드백에 대한 신뢰도 조정
- 클릭 1회 = 구매 1회가 아님
- 일반적으로 alpha=40 정도 사용
- 클릭만 있는 데이터면 alpha ↑, 구매 이력이 명확하면 alpha ↓
3. regularization: 과적합 방지
- 기본은 0.01, 성능이 불안정하거나 test set에서 과적합 느낌이 나면 0.05 등으로 증가
4. iterations: 수렴 여부 확인
- 추천 정확도 로그를 확인하며 수렴 여부를 체크
- 15~25에서 수렴하는 경우가 많음
📊 튜닝을 위한 평가 지표
지표 | 설명 |
Precision@K | 추천된 아이템 중 실제 좋아한 비율 |
Recall@K | 전체 좋아한 아이템 중 추천된 비율 |
NDCG@K | 순위까지 반영한 정밀도 |
MAP@K | 전체 평균 정밀도 |
👉 implicit 라이브러리와 lightfm.evaluation 또는 surprise.accuracy로 계산 가능
🧪 실전 실험 예시 (Python)
model = AlternatingLeastSquares(
factors=128,
regularization=0.05,
iterations=20,
alpha=40,
use_gpu=False
)
model.fit(confidence_matrix)
📈 튜닝 팁 요약
상황 | 조정할 하이퍼파라미터 |
추천이 너무 단순하고 다양성 부족 | factors ↑ |
과적합 느낌 / test 정확도 낮음 | regularization ↑, factors ↓ |
클릭만 있는 sparse 데이터 | alpha ↑ |
수렴 안 됨 | iterations ↑, regularization ↓ |
아래는 추천 시스템에서 널리 사용되는 ALS(Alternating Least Squares), BPR(Bayesian Personalized Ranking), LightFM의 핵심 특징과 성능을 비교한 표입니다. 각 모델의 구조적 차이, 데이터 유형, 목적, 구현 난이도 등을 기반으로 분석하였습니다.
📊 ALS vs BPR vs LightFM 성능 및 특징 비교표
비교 항목 | ALS | BPR | LightFM |
🧠 모델 유형 | Matrix Factorization (Regression 기반) | Matrix Factorization (Pairwise Ranking 기반) | Hybrid Matrix Factorization (Classification + Ranking) |
🧩 데이터 유형 | 주로 암묵적 피드백 (클릭, 조회, 구매) | 암묵적 피드백 | 암묵적/명시적 피드백 + side info 모두 가능 |
🎯 학습 목적 | 선호도 예측 (정규화된 implicit 선호 점수 추정) | 순위 학습 (i > j) | 선호 확률 예측 + 순위 학습 (loss 선택 가능) |
📐 Loss Function | 정규화된 MSE 기반 ALS | pairwise ranking loss (sigmoid(xᵢ - xⱼ)) | warp, bpr, logistic, mse 중 선택 가능 |
⏱ 학습 방식 | Alternating Least Squares (대규모 병렬 최적화) | SGD (Stochastic Gradient Descent) | SGD with customizable loss |
⚙️ 속도 및 확장성 | 대규모 분산 환경에서 매우 빠름 (Spark 지원) | 중간 (데이터셋에 따라 속도 차이) | 중간 (sparse matrix 기반으로 효율적) |
📈 추천 정확도 | 중간~높음 (popularity 반영), Cold start 약함 | 중간~높음 (ranking에 강함), Cold start 약함 | 높음 (side feature 활용 가능, hybrid 추천 가능) |
📉 Cold Start 대응 | ❌ (사용자/아이템 벡터 초기화 필요) | ❌ | ✅ (user/item metadata 활용 시 가능) |
🧬 Side Info 지원 | ❌ | ❌ | ✅ (텍스트, 카테고리 등 사용자/아이템 feature 포함 가능) |
🧪 사용자 정의 유연성 | 낮음 (ALS 수식 구조 고정) | 중간 (Loss 수식 조절 가능) | 높음 (Feature 입력, Loss 함수, Regularization 조정 등) |
🧰 대표 구현 도구 | implicit, spark.mllib.recommendation.ALS | implicit.bpr, lightfm(loss='bpr') | lightfm, cornac, RecBole, Spotlight 등 |
🔍 설명 가능성 | 낮음 (잠재 벡터 기반) | 낮음 | 낮음 (black-box 방식이나 feature 분석 가능) |
🎯 추천 시나리오 예 | “A를 많이 본 사람은 B도 본다” | “A를 클릭한 사람은 B도 클릭할 가능성 ↑” | “A를 좋아할 가능성이 높은 이유: A와 유사한 B, 속성 유사” |
📌 요약 추천
사용 목적/환경 | 추천 알고리즘 |
대규모 데이터 + 병렬 분산 추천 | ALS |
정확한 순위 기반 추천이 필요한 경우 | BPR |
Cold-start 해결 + Hybrid 추천 필요 시 | LightFM |
사용자/상품 속성 정보가 있을 때 | LightFM (with metadata) |
Spark 기반 대규모 추천 시스템 구성 시 | ALS |
BPR(Bayesian Personalized Ranking)은 추천 시스템에서 널리 사용되는 랭킹 최적화 기반의 행렬 분해 알고리즘입니다. 특히 암묵적 피드백(implicit feedback) 상황에서, “무엇을 샀다”는 이진 정보만으로 선호도 순위를 예측하는 데 효과적입니다.
🧠 BPR (Bayesian Personalized Ranking): 핵심 요약
항목 | 설명 |
🏷️ 정식 명칭 | Bayesian Personalized Ranking |
📚 분류 | Pairwise 랭킹 기반 협업 필터링 |
🧩 목적 | 사용자가 아이템 A는 좋아하고, B는 덜 좋아한다는 순서(랭킹) 학습 |
💡 데이터 유형 | 암묵적 피드백 (구매 여부, 클릭, 조회 등) |
⚙️ 대표 구현 | lightfm, cornac, implicit, Spotlight, PyTorch 등 |
📈 최적화 방식 | 확률 기반 pairwise ranking loss (maximizing A > B) |
🚫 한계 | 데이터 sparsity에 민감, cold-start 취약 |
🔎 작동 개념 (핵심 수식)

💻 Python 예시 (LightFM 사용)
from lightfm.datasets import fetch_movielens
data = fetch_movielens(min_rating=4.0)
# BPR 방식으로 모델 생성
model = LightFM(loss='bpr')
model.fit(data['train'], epochs=10, num_threads=2)
# 추천 수행
from lightfm.evaluation import precision_at_k
print('precision@10:', precision_at_k(model, data['test'], k=10).mean())
✅ BPR의 장점
항목 | 설명 |
✔ 순위 기반 학습 | 실제 추천에서 중요한 랭킹 예측에 초점 |
✔ 암묵적 피드백에 최적화 | 명시적 평점이 없어도 추천 가능 |
✔ 경량화 가능 | 확률 기반 pairwise 방식은 학습 속도 우수 |
🔁 BPR vs IALS vs MF 비교
항목 | BPR | IALS | SVD/MF |
입력 | 암묵적 | 암묵적 | 명시적 |
학습 목표 | 랭킹 최적화 | 선호도 추정 | 평점 예측 |
학습 방식 | Pairwise SGD | ALS (대규모 행렬 연산) | SGD 또는 SVD |
추천 성향 | 상대 순위 정확 | Confidence 기반 추천 | 절대 예측값 |
활용 예 | 추천 리스트 최적화 | 정교한 추천 | 평점 기반 |
📌 추천 상황 예시
- BPR 적합: “사용자가 이미 상호작용한 것보다 더 나은 아이템을 위에 올리고 싶다”는 상황
- IALS 적합: “구매/조회 횟수, 신뢰도까지 반영해 세밀한 예측이 필요”할 때
SASRec(Self-Attentive Sequential Recommendation)은 음악 추천 시스템에서 사용자 행동의 순서를 효과적으로 반영하는 딥러닝 기반 모델입니다. 특히 음악 소비의 특징인 반복 청취 패턴을 포착하는 데 강점을 보이며, 다양한 연구에서 이를 기반으로 한 성능 향상이 보고되었습니다.Papers with Code+6arXiv+6Medium+6Enlighten Publications+1OpenReview+1
🎧 SASRec의 음악 추천 적용
SASRec은 사용자의 과거 청취 이력을 시퀀스로 입력받아, 다음에 들을 가능성이 높은 곡을 예측합니다. 이 모델은 Transformer의 self-attention 메커니즘을 활용하여, 사용자의 최근 청취 패턴을 학습합니다.
🔁 반복 청취 패턴의 중요성
음악 추천에서는 사용자가 특정 곡을 반복해서 듣는 경향이 강하게 나타납니다. 이를 고려하여, SASRec 기반 모델에 반복 청취 정보를 통합한 연구들이 진행되었습니다. 예를 들어, ReSANs 모델은 SASRec에 반복 임베딩과 위치 임베딩을 추가하여, 사용자의 반복 청취 행동을 더 잘 반영하도록 설계되었습니다. 이러한 개선은 음악 추천의 정확도를 30~40% 향상시키는 데 기여했습니다. Medium
📈 성능 향상 사례
또한, Personalized Popularity Awareness를 SASRec에 통합한 연구에서는, 사용자의 개인화된 인기 정보를 고려하여 추천 성능을 크게 향상시켰습니다. 이 접근 방식은 Yandex와 Last.fm 데이터셋에서 최대 69.8%의 성능 향상을 달성했습니다. arXiv+3Enlighten Publications+3arXiv+3arXiv
🧠 핵심 기술 요약
- Self-Attention: 사용자의 청취 시퀀스에서 중요한 곡에 더 높은 가중치를 부여하여, 다음 추천 곡을 예측합니다.
- 반복 임베딩: 특정 곡의 반복 청취 횟수를 반영하여, 사용자의 선호도를 더 정확하게 모델링합니다.
- 위치 임베딩: 곡이 청취된 순서를 고려하여, 시퀀스 내에서의 곡의 위치 정보를 학습합니다.
- 개인화된 인기 정보: 사용자별로 자주 듣는 곡의 인기도를 반영하여, 추천의 개인화를 강화합니다.
이러한 연구들은 SASRec이 음악 추천 시스템에서 효과적으로 활용될 수 있음을 보여주며, 반복 청취 패턴과 개인화된 인기 정보를 통합함으로써 추천 성능을 크게 향상시킬 수 있음을 시사합니다.



GTS Global Temporal Split
"GTS"는 Global Temporal Split의 약자로, 추천 시스템에서 모델을 평가할 때 시간 순서를 고려하여 데이터를 분할하는 전략입니다. 이는 실제 운영 환경에서의 모델 성능을 더 현실적으로 반영하기 위해 사용됩니다.
🧭 GTS(Global Temporal Split)란?
GTS는 전체 사용자 데이터를 기준으로 **하나의 전역 시간 기준점(global cutoff time)**을 설정하여, 이 시점을 기준으로 데이터를 훈련(train), 검증(validation), 테스트(test) 세트로 나누는 방식입니다. 이러한 분할은 모든 사용자에게 동일하게 적용되며, 시간 순서에 따라 미래 데이터를 훈련에 포함시키지 않음으로써 **데이터 누출(leakage)**을 방지합니다.
🔍 GTS의 특징과 장점
- 현실적인 평가: 모델이 과거 데이터를 기반으로 미래를 예측하는 실제 시나리오를 반영합니다.
- 데이터 누출 방지: 미래의 상호작용이 훈련 데이터에 포함되지 않도록 하여 평가의 신뢰성을 높입니다.
- 일관된 분할 기준: 모든 사용자에 대해 동일한 시간 기준을 적용하여 평가의 일관성을 유지합니다.
🧪 GTS의 적용 사례: Yandex의 Yambda-5B
Yandex는 음악 추천 시스템 연구를 위해 Yambda-5B라는 대규모 데이터셋을 공개하였습니다. 이 데이터셋은 약 4.79억 건의 사용자-아이템 상호작용을 포함하며, GTS 전략을 적용하여 모델 평가의 현실성을 높였습니다.Reddit+3arXiv+3arXiv+3
- 데이터 분할:
- 훈련 기간: 300일
- 검증 기간: 30분의 간격을 두고 설정
- 테스트 기간: 1일
- 평가 지표:
- NDCG@k
- Recall@k
- Coverage@kMarketWatch+2BITVoxy Digest+2Moonlight+2SpringerLinkStack Overflow+5Moonlight+5All I Need Is Data.+5
이러한 설정은 실제 서비스에서 모델이 어떻게 작동하는지를 더 정확하게 평가할 수 있도록 도와줍니다.
⚠️ GTS 적용 시 고려사항
- Cold-start 문제: 테스트 세트에만 존재하는 사용자나 아이템은 훈련 데이터에 포함되지 않으므로, 해당 사용자나 아이템에 대한 추천이 어려울 수 있습니다.
- 데이터 양 감소: 엄격한 시간 기준으로 인해 훈련 데이터의 양이 줄어들 수 있습니다.
GTS는 추천 시스템 평가에서 시간 순서를 고려하여 현실적인 모델 성능을 측정하는 데 유용한 전략입니다. 특히, 대규모 데이터셋이나 실제 운영 환경을 모사하려는 연구에서 효과적으로 활용될 수 있습니다.
이 글이 도움이 되었다면,아래 링크를 통해서 후원해주세요.( 커피나 차 한잔 이나 맥주나 와인한잔 )