이 프로젝트는 개발된 Recsys에서 발생할 수 있는 콜드스타트 문제를 직접 정의 및 해결함을 목표로 합니다.
Dataset | #Ratings | #Users | #Movies |
---|---|---|---|
MovieLens 32M | 32,000,204 | 200,948 | 87,585 |
MovieLens 1M | 1,000,209 | 6,040 | 3,900 |
ratings.csv : 유저 ID, 영화 ID, 평점, timestamp
movies.csv : 영화 ID, 영화 제목, 영화 장르
links.csv : 영화 ID, imdbId, tmdbId
project
├── README.md
├── main.py
├── inference.py
├── requirements.txt
│
├── config/
│ └── baseline.yaml
│
├── code/
│ ├── checkpoints/
│ └── runs/
│
├── data/
│ ├── MovieLens1M/
│ │ ├── preprocessed/
│ │ └── raw/
│ ├── MovieLens32M/
│ │ ├── preprocessed/
│ │ └── raw/
│ └── .gitkeep
│
└── src/
├── data/
│ ├── dataloader.py
│ ├── embedding.py
│ ├── preprocessing.py
│ ├── sampling.cpp
│ └── split_methods.py
│
├── lightgcn_utils/
│ ├── loss.py
│ ├── metrics.py
│ ├── trainer.py
│ └── utils.py
│
├── models/
│ ├── __init__.py
│ ├── CLCRec.py
│ └── lightgcn.py
│
├── scrap/
│ └── scrapper.py
│
├── __init__.py
└── wandblogger.py

config/baseline.yaml에서 파라미터를 설정하세요.
baseline에서 추가 실험한 내용은 다음과 같습니다.
- model_args:
LightGCN
,CLCRec
- loss:
BPRLoss
,BPRLossWithReg
,BPRLoss_with_coldweight
,BPRLoss_with_alignment_similarity
- train.neg_sampling:
random
,popular
,cold
- model_args.LightGCN.use_meta_embedding:
True
,False
- use_ssl:
True
,False
- hyperparameter: 임베딩 차원(
latent_dim_rec
), 학습률(lr
), 레이어 수(n_layers
), 정규화(weight_decay
), 시드(seed
) 등

전처리 & 학습 & 예측을 동시에 하려면 다음 명령어를 사용하세요:
python main.py -c config/baseline.yaml
자세한 파싱 정보는 main.py를 참고하세요.
추론 및 결과 저장을 동시에 하려면 다음 명령어를 사용하세요:
python inference.py -c config/baseline.yaml
자세한 파싱 정보는 inference.py를 참고하세요.