추천시스템 프레임워크 Recbole 사용하기, 사용법 정리하기

Recbole이란?

https://recbole.io/docs/index.html

추천시스템을 공부하고 알고리즘을 찾아보다보니 자연스럽게 Recbole이라는곳으로 도착하게 됐다.

간단하게 말해 유명한 추천시스템 알고리즘들이 모여있는 오픈소스 프레임워크이다.

나도 머신러닝, 딥러닝 프레임워크를 만드는 프로젝트를 했을때 고려해야할부분들이, 요구사항들이 많았고, 코어부분만 만드는데도 시간과 많은 정성이 들어갔는데, 이 라이브러리를 보면서 그때의 생각이 났다.

성능이 좋다 안좋다를 떠나서, 간단하게 각 알고리즘들을 구현해 볼수 있어서 개발 전 단계라던지, 알고리즘을 찾아보는단계에서 이용하기 좋은것 같다.!

모델의 구분은 크게

  • General Recommendation
  • Sequential Recommendation
  • Context-aware Recommendation
  • Knowledge-based Recommendation

로 나눠져 있고, 각 카테고리별로 알고리즘들이 들어가 있다.

하나하나 적어가면서 사용법을 익히고 익힌 사용법을 통해서 각 알고리즘을 공부도 하고 직접 구현도 하면서 또 다른 프레임워크를 만들어볼수 있는 기회가 됐으면 좋겠다.

1. 설치

설치는 콘다, pip를 지원한다. 현재는 RecBole v1.2.0 버전이다.

recbole은 아래의 os를 지원한다.

  • Linux
  • Windows 10
  • macOS X

현재 버전 기준

파이썬 3.7 이상

토치1.7.0이상

CUDA9.2이상

NVIDIA driver version>= 396.26 (for Linux) or >= 397.44 (for Windows10)의 시스템 요구사항이 필요하다.

설치는 아래와 같다.

#conda
conda install -c aibox recbole
#pip
pip install recbole
#git
git clone https://github.com/RUCAIBox/RecBole.git && cd RecBole
pip install -e . --verbose

간단하게 설치를 끝내고 나면

심플 러닝을 할 수 있다.

from recbole.quick_start import run_recbole

run_recbole(model='BPR', dataset='ml-100k')

---------------------------------------------

#cmd
python run.py

결과

05 Aug 02:16    INFO  ml-100k
The number of users: 944
Average actions of users: 106.04453870625663
The number of items: 1683
Average actions of items: 59.45303210463734
The number of inters: 100000
The sparsity of the dataset: 93.70575143257098%
Remain Fields: ['user_id', 'item_id', 'rating', 'timestamp']
05 Aug 02:16    INFO  [Training]: train_batch_size = [2048] negative sampling: [{'uniform': 1}]
05 Aug 02:16    INFO  [Evaluation]: eval_batch_size = [4096] eval_args: [{'split': {'RS': [0.8, 0.1, 0.1]}, 'group_by': 'user', 'order': 'RO', 'mode': 'full'}]
05 Aug 02:16    INFO  BPR(
(user_embedding): Embedding(944, 64)
(item_embedding): Embedding(1683, 64)
(loss): BPRLoss()
)
Trainable parameters: 168128
Train     0: 100%|████████████████████████| 40/40 [00:00<00:00, 219.54it/s, GPU RAM: 0.01 G/11.91 G]
05 Aug 02:16    INFO  epoch 0 training [time: 0.19s, train loss: 27.7228]
Evaluate   : 100%|██████████████████████| 472/472 [00:00<00:00, 506.11it/s, GPU RAM: 0.01 G/11.91 G]
05 Aug 02:16    INFO  epoch 0 evaluating [time: 0.94s, valid_score: 0.020500]
05 Aug 02:16    INFO  valid result:
recall@10 : 0.0067    mrr@10 : 0.0205    ndcg@10 : 0.0086    hit@10 : 0.0732    precision@10 : 0.0081

...

Train    96: 100%|████████████████████████| 40/40 [00:00<00:00, 230.65it/s, GPU RAM: 0.01 G/11.91 G]
05 Aug 02:19    INFO  epoch 96 training [time: 0.18s, train loss: 3.7170]
Evaluate   : 100%|██████████████████████| 472/472 [00:00<00:00, 800.46it/s, GPU RAM: 0.01 G/11.91 G]
05 Aug 02:19    INFO  epoch 96 evaluating [time: 0.60s, valid_score: 0.375200]
05 Aug 02:19    INFO  valid result:
recall@10 : 0.2162    mrr@10 : 0.3752    ndcg@10 : 0.2284    hit@10 : 0.7508    precision@10 : 0.1602
05 Aug 02:19    INFO  Finished training, best eval result in epoch 85
05 Aug 02:19    INFO  Loading model structure and parameters from saved/BPR-Aug-05-2021_02-17-51.pth
Evaluate   : 100%|██████████████████████| 472/472 [00:00<00:00, 832.85it/s, GPU RAM: 0.01 G/11.91 G]
05 Aug 02:19    INFO  best valid : {'recall@10': 0.2195, 'mrr@10': 0.3871, 'ndcg@10': 0.2344, 'hit@10': 0.7582, 'precision@10': 0.1627}
05 Aug 02:19    INFO  test result: {'recall@10': 0.2523, 'mrr@10': 0.4855, 'ndcg@10': 0.292, 'hit@10': 0.7953, 'precision@10': 0.1962}

이 다음편부터는 사용법을 적어가면서 익혀볼 예정이다.!

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다