오늘 공부한 내용은 여러 추천모델을 사용해 보기 위해 RecBole 라이브러리를 공부해봤다.
일일 학습 정리로 매일 복습, 과제, 피어세션, 회고 정리했고 아래 링크 달았습니다.
2020년에 출시된 파이토치/파이썬 기반의 포괄적인 추천시스템 프레임워크
General Recommendation - 일반적인 추천 모델
BPR: 베이지안 개인화 랭킹
NCF: 신경망 협업 필터링
multivae : variable 오토인코더 기반
Sequential Recommendation - 순차적인 추천 모델
SASRec: Self-Attention 기반 순차 추천
GRU4Rec: GRU 기반 순차 추천
BERT4Rec: BERT 구조 활용 추천
Context-aware Recommendation - context 고려한 모델
FM: Factorization Machine
DeepFM: Deep Factorization Machine
xDeepFM: Extreme Deep Factorization Machine
Knowledge-based Recommendation - 지식 기반
KGAT: 지식 그래프 주의집중 네트워크
KTUP: 지식 전이 및 사용자 선호도 학습
exlib_recommender - 트리기반 (lightgbm, xgboost)
장점
다양한 최신 모델 즉시 사용 가능
통일된 인터페이스로 쉬운 실험
자동화된 성능 평가 및 비교
활발한 커뮤니티 지원
단점
레포지토리가 여러 개로 분산되어 있음
커스텀 모델 구현이 다소 복잡
일부 모델의 구현이 원논문과 차이가 있을 수 있음
데이터셋 구성
데이터는 RecBole/dataset/(dataset명) 경로에 다음과 같은 파일들로 구성
.inter: 사용자-아이템 상호작용 데이터
.user: 사용자 특성 데이터
.item: 아이템 특성 데이터
설정 파일 구조 예시
# config.yaml
data_path: 'dataset/'
dataset: 'ml-100k'
epochs: 300
learning_rate: 0.001
train_batch_size: 2048
eval_batch_size: 2048
import torch
import torch.nn as nn
from recbole.quick_start import run_recbole
# 기본 실행
parameter_dict = {
'neg_sampling': None,
'learning_rate': 0.001
}
# 모델 학습
run_recbole(model='BPR', dataset='ml-100k', config_dict=parameter_dict)
# 추론 실행
def inference():
config, model, dataset = load_data_and_model('saved/model.pth')
model.eval()
with torch.no_grad():
# 추론 로직 구현~
predictions = model.predict(test_data)
return predictions