View on GitHub

推薦システムの実行

Home

推薦システムの実行

パッケージのインストール

(recsys_full) offline$ pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu124
# ...(3分程度)...

(recsys_full) offline$
 pip install ray
 pip install pyarrow
 pip install kmeans_pytorch
 pip install recbole

(recsys_full) offline$ pip freeze
...(略)...
absl-py==2.5.0
attrs==26.1.0
click==8.5.0
colorama==0.4.4
colorlog==4.7.2
cuda-bindings==13.3.1
cuda-pathfinder==1.8.0
cuda-toolkit==13.0.3.0
filelock==3.32.4
fsspec==2026.7.0
grpcio==1.83.1
Jinja2==3.1.6
jsonschema==4.26.0
jsonschema-specifications==2025.9.1
kmeans-pytorch==0.3
Markdown==3.10.3
MarkupSafe==3.0.3
mpmath==1.3.0
msgpack==1.2.2
networkx==3.6.1
nvidia-cublas==13.1.1.3
nvidia-cuda-cupti==13.0.85
nvidia-cuda-nvrtc==13.0.88
nvidia-cuda-runtime==13.0.96
nvidia-cudnn-cu13==9.20.0.48
nvidia-cufft==12.0.0.61
nvidia-cufile==1.15.1.6
nvidia-curand==10.4.0.35
nvidia-cusolver==12.0.4.66
nvidia-cusparse==12.6.3.3
nvidia-cusparselt-cu13==0.8.1
nvidia-nccl-cu13==2.29.7
nvidia-nvjitlink==13.3.33
nvidia-nvshmem-cu13==3.4.5
nvidia-nvtx==13.0.85
plotly==7.0.0
protobuf==7.36.0
pyarrow==25.0.1
PyYAML==6.0.3
ray==2.58.0
recbole==1.2.0
referencing==0.37.0
rpds-py==2026.6.3
setuptools==84.0.0
sympy==1.14.0
tabulate==0.10.0
tensorboard==2.21.0
tensorboard-data-server==0.7.2
texttable==1.7.0
thop==0.1.1.post2209072238
torch==2.13.0
torchaudio==2.11.0
torchvision==0.28.0
triton==3.7.1
typing_extensions==4.16.0
Werkzeug==3.1.8
...(略)...

推薦処理プログラムの準備

  1. 下記ファイルをダウンロードし、offline/src/ディレクトリに移動する。
    • recsyslab / recsys-full / src / offline / src /
      • recommenders/__init__.py
      • recommenders/base_recommender.py
      • recommenders/bpr_recommender.py
      • recommenders/movie_similarity_recommender.py
      • recommenders/pupularity_recommender.py
      • utils/__init__.py
      • utils/dataset.py
      • utils/recommend_result.py
      • config.yaml
      • offline.ini
      • update.py
(recsys_full) offline$ tree src/
src/
├── config.yaml                           # <-
├── keygen.py
├── ml2rdb.py
├── offline.ini                           # <-
├── recommenders                          # <-
│   ├── __init__.py                      # <-
│   ├── base_recommender.py              # <-
│   ├── bpr_recommender.py               # <-
│   ├── movie_similarity_recommender.py  # <-
│   └── popularity_recommender.py        # <-
├── update.py                             # <-
├── user2encrypt.py
└── utils                                 # <-
    ├── __init__.py                       # <-
    ├── dataset.py                        # <-
    └── recommend_result.py               # <-

3 directories, 14 files

推薦システムの実行

(recsys_full) offline$ python src/update.py --ini src/offline.ini
processing Dataset.to_rating_matrix: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 100836/100836 [00:20<00:00, 4972.83it/s]
...(略)...
processing Dataset.to_movies_movies_similarity_matrix: 100%|████████████████████████████████████████████████████████████████████████████████████| 9742/9742 [18:20<00:00,  8.86it/s]
processing PopularityRecommender.recommend: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [00:00<00:00, 165.79it/s]
processing MovieSimilarityRecommender.recommend: 100%|████████████████████████████████████████████████████████████████████████████████████████| 9742/9742 [00:03<00:00, 2769.41it/s]
...(略)...
processing BPRRecommender.recommend: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████| 611/611 [00:02<00:00, 257.93it/s]
elapsed_time:1343.605[sec]
# ...(25分程度)...

結果の確認

(recsys_full) offline$ tree data/
data/
├── genres.csv
├── movies.csv
├── movies_genres.csv
├── ratings.csv
├── reclist_bpr.csv               # <-
├── reclist_movie_similarity.csv  # <-
├── reclist_popularity.csv        # <-
├── tags.csv
└── users.csv

1 directory, 9 files

(recsys_full) offline$ tree local/
local/
├── keys
├── ml-latest-small
│   ├── README.txt
│   ├── links.csv
│   ├── movies.csv
│   ├── ratings.csv
│   └── tags.csv
├── ml-ls.inter                          # <-
├── ml-ls.item                           # <-
├── ml-ls.user                           # <-
├── ml-rdb
│   ├── genres.csv
│   ├── links.csv
│   ├── movies.csv
│   ├── movies_genres.csv
│   ├── ratings.csv
│   ├── tags.csv
│   └── users.csv
├── movies_movies_similarity_matrix.csv  # <-
├── rating_matrix.csv                    # <-
└── users_.csv

3 directories, 19 files

(recsys_full) offline$
 less data/reclist_popularity.csv
 less data/reclist_movie_similarity.csv
 less data/reclist_bpr.csv

参考

  1. 風間正弘,飯塚洸二郎,松村優也,『著推薦システム実践入門 ―仕事で使える導入ガイド』,オライリー・ジャパン,2022.
  2. 与謝秀作,『特集 3 最新レコメンドエンジン総実装 協調フィルタリングから深層学習まで』,WEB+DB PRESS Vol.129,pp.69-100,技術評論社,2022.
  3. [🐛BUG] Wrong number of users and items in datasets information · Issue #1516 · RUCAIBox/RecBole
  4. RecBole v1.2.0 — RecBole 1.2.0 documentation