Surprise は、明示的な評価データを扱うレコメンダー システムを構築および分析するための Python scikit です。
Surprise は次の目的を念頭に置いて設計されました。
SurPRISE (おおよそ :) という名前は、 Simple Python RecommendatIon System Engineの略です。
サプライズは暗黙の評価やコンテンツベースの情報をサポートしていないことに注意してください。
以下は、データセットを (ダウンロード) ロードし、5 分割相互検証のために分割し、SVD アルゴリズムの MAE と RMSE を計算する方法を示す簡単な例です。
from surprise import SVD
from surprise import Dataset
from surprise . model_selection import cross_validate
# Load the movielens-100k dataset (download it if needed).
data = Dataset . load_builtin ( 'ml-100k' )
# Use the famous SVD algorithm.
algo = SVD ()
# Run 5-fold cross-validation and print results.
cross_validate ( algo , data , measures = [ 'RMSE' , 'MAE' ], cv = 5 , verbose = True )
出力:
Evaluating RMSE, MAE of algorithm SVD on 5 split(s).
Fold 1 Fold 2 Fold 3 Fold 4 Fold 5 Mean Std
RMSE (testset) 0.9367 0.9355 0.9378 0.9377 0.9300 0.9355 0.0029
MAE (testset) 0.7387 0.7371 0.7393 0.7397 0.7325 0.7375 0.0026
Fit time 0.62 0.63 0.63 0.65 0.63 0.63 0.01
Test time 0.11 0.11 0.14 0.14 0.14 0.13 0.02
Surprise ではさらに多くのことができます (GridSearchCV など)。その他の使用例については、ドキュメントを参照してください。
以下は、5 分割相互検証手順におけるさまざまなアルゴリズム (デフォルトのパラメーターを含む) の平均 RMSE、MAE、および合計実行時間です。データセットは、Movielens 100k および 1M データセットです。折り目はすべてのアルゴリズムで同じです。すべての実験は、Intel i5 第 11 世代 2.60 GHz を搭載したラップトップで実行されます。これらのテーブルを生成するコードは、ベンチマークの例にあります。
ムービーレンズ 100k | RMSE | 前 | 時間 |
---|---|---|---|
SVD | 0.934 | 0.737 | 0:00:06 |
SVD++ (キャッシュ評価=False) | 0.919 | 0.721 | 0:01:39 |
SVD++ (キャッシュ評価=True) | 0.919 | 0.721 | 0:01:22 |
NMF | 0.963 | 0.758 | 0:00:06 |
スロープワン | 0.946 | 0.743 | 0:00:09 |
k-NN | 0.98 | 0.774 | 0:00:08 |
中心 k-NN | 0.951 | 0.749 | 0:00:09 |
k-NN ベースライン | 0.931 | 0.733 | 0:00:13 |
共クラスタリング | 0.963 | 0.753 | 0:00:06 |
ベースライン | 0.944 | 0.748 | 0:00:02 |
ランダム | 1.518 | 1.219 | 0:00:01 |
ムービーレンズ 1M | RMSE | 前 | 時間 |
---|---|---|---|
SVD | 0.873 | 0.686 | 0:01:07 |
SVD++ (キャッシュ評価=False) | 0.862 | 0.672 | 0:41:06 |
SVD++ (キャッシュ評価=True) | 0.862 | 0.672 | 0:34:55 |
NMF | 0.916 | 0.723 | 0:01:39 |
スロープワン | 0.907 | 0.715 | 0:02:31 |
k-NN | 0.923 | 0.727 | 0:05:27 |
中心 k-NN | 0.929 | 0.738 | 0:05:43 |
k-NN ベースライン | 0.895 | 0.706 | 0:05:55 |
共クラスタリング | 0.915 | 0.717 | 0:00:31 |
ベースライン | 0.909 | 0.719 | 0:00:19 |
ランダム | 1.504 | 1.206 | 0:00:19 |
pip を使用する場合 (C コンパイラが必要になります。Windows ユーザーは conda を使用することを好むかもしれません):
$ pip install scikit-surprise
コンダの場合:
$ conda install -c conda-forge scikit-surprise
最新バージョンの場合は、リポジトリをクローンしてソースをビルドすることもできます (最初に Cython と numpy が必要です)。
$ git clone https://github.com/NicolasHug/surprise.git
$ cd surprise
$ pip install .
このプロジェクトは BSD 3 条項ライセンスに基づいてライセンスされているため、商用アプリケーションを含むほぼすべての用途に使用できます。
Surprise がどのように役立つのか知りたいです。遠慮せずに問題を開いて、その使用方法を説明してください。
研究に Surprise を使用する場合は、必ず論文を引用してください。
@article{Hug2020,
doi = {10.21105/joss.02174},
url = {https://doi.org/10.21105/joss.02174},
year = {2020},
publisher = {The Open Journal},
volume = {5},
number = {52},
pages = {2174},
author = {Nicolas Hug},
title = {Surprise: A Python library for recommender systems},
journal = {Journal of Open Source Software}
}
以下の人物が Surprise に貢献しました。
アシュトウ、アビシェーク・バティア、ボビーインフィジ、カオイ、チエ=ハン・チェン、ラファエル=ダヤン、Олег Демиденко、シャルル=エマニュエル・ディアス、dmamylin、ローリアン・デュカス、マルク・フェーガー、フランクジェイ、ルーカス・ガルケ、ティム・ゲイツ、ピエール=フランソワ・ヒメネス、ザカリー・グラスマン、ジェフ・ヘイル、ニコラス・フグ、ヤニクス、ジェソーテルリクソン、ドルク・キリチオグル、ラヴィ・ラジュ・クリシュナ、ラピッドシェイ、ヘンジ・リュー、ラヴィ・マキジャ、マヘル・マラブ、マノージ・K、ジェームズ・マクニールス、Naturale0、nju-luke、ピエール=ルイ・ペシュー、ジェイ・チー、ルーカス・レブシャークレイグ・ロドリゲスSkywhat、Hercules Smith、David Stevens、Vesna Tanko、TrWestdoor、Victor Wang、Mike Lee Williams、Jay Wong、Chenchen Xu、YaoZh1918。
どうもありがとう :) !
バージョン 1.1.0 (2019 年 9 月) からは、パッケージの保守、バグ修正の提供、および場合によってはパフォーマンスの改善のみを行います。今はそれに費やす時間が少なくなったので、新しい機能を検討するつもりはありません。
Surprise に関するバグ、問題、または質問については、私に電子メールを送信しないでください。答えられない可能性が高いです。)他の人もその恩恵を受けることができるように、代わりに GitHub プロジェクト ページを使用してください。