241122 TIL #547 AI Tech #80 14주차 주간학습정리 / RecBole 라이브러리

김춘복·2024년 11월 22일
0

TIL : Today I Learned

목록 보기
549/575

Today I Learned

오늘 공부한 내용은 여러 추천모델을 사용해 보기 위해 RecBole 라이브러리를 공부해봤다.


14주차 주간학습정리

일일 학습 정리로 매일 복습, 과제, 피어세션, 회고 정리했고 아래 링크 달았습니다.


팀 회고


RecBole

2020년에 출시된 파이토치/파이썬 기반의 포괄적인 추천시스템 프레임워크

특징

  • 다양한 모델 지원 : 91개의 추천 모델과 43개의 데이터셋 제공
  • 모듈화된 구조 : 데이터, 모델, 설정 파일이 체계적으로 분리
  • 쉬운 사용성 : 간단한 설정만으로 학습부터 평가까지 가능
  • 자동화된 실험 : 하이퍼파라미터 튜닝 지원

보유 모델 종류

  • 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)

장단점

  • 장점
    다양한 최신 모델 즉시 사용 가능
    통일된 인터페이스로 쉬운 실험
    자동화된 성능 평가 및 비교
    활발한 커뮤니티 지원

  • 단점
    레포지토리가 여러 개로 분산되어 있음
    커스텀 모델 구현이 다소 복잡
    일부 모델의 구현이 원논문과 차이가 있을 수 있음


프로젝트 구조

  1. 데이터셋 구성
    데이터는 RecBole/dataset/(dataset명) 경로에 다음과 같은 파일들로 구성

    .inter: 사용자-아이템 상호작용 데이터
    .user: 사용자 특성 데이터
    .item: 아이템 특성 데이터

  2. 설정 파일 구조 예시

# config.yaml
data_path: 'dataset/'
dataset: 'ml-100k'
epochs: 300
learning_rate: 0.001
train_batch_size: 2048
eval_batch_size: 2048
  1. 모델 구현 예시
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

profile
Backend Dev / Data Engineer

0개의 댓글