Surprise adalah scikit Python untuk membangun dan menganalisis sistem pemberi rekomendasi yang menangani data rating eksplisit.
Kejutan dirancang dengan tujuan sebagai berikut :
Nama SurPRISE (kira-kira :)) adalah singkatan dari Simple Python Rekomendasi System Engine .
Harap dicatat bahwa kejutan tidak mendukung penilaian implisit atau informasi berbasis konten.
Berikut adalah contoh sederhana yang menunjukkan bagaimana Anda dapat (mengunduh) memuat kumpulan data, membaginya untuk validasi silang 5 kali lipat, dan menghitung MAE dan RMSE dari algoritma SVD.
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 )
Keluaran :
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
Kejutan dapat melakukan lebih banyak hal (misalnya, GridSearchCV)! Anda akan menemukan lebih banyak contoh penggunaan di dokumentasi.
Berikut adalah rata-rata RMSE, MAE, dan total waktu eksekusi berbagai algoritma (dengan parameter defaultnya) pada prosedur validasi silang 5 kali lipat. Dataset yang digunakan adalah dataset Movielens 100k dan 1M. Lipatannya sama untuk semua algoritma. Semua eksperimen dijalankan pada laptop dengan intel i5 11th Gen 2.60GHz. Kode untuk membuat tabel ini dapat ditemukan di contoh benchmark.
Lensa film 100k | RMSE | MAE | Waktu |
---|---|---|---|
SVD | 0,934 | 0,737 | 0:00:06 |
SVD++ (cache_ratings=Salah) | 0,919 | 0,721 | 0:01:39 |
SVD++ (cache_rating=Benar) | 0,919 | 0,721 | 0:01:22 |
NMF | 0,963 | 0,758 | 0:00:06 |
Lereng Satu | 0,946 | 0,743 | 0:00:09 |
k-NN | 0,98 | 0,774 | 0:00:08 |
K-NN terpusat | 0,951 | 0,749 | 0:00:09 |
k-NN Dasar | 0,931 | 0,733 | 0:00:13 |
Pengelompokan Bersama | 0,963 | 0,753 | 0:00:06 |
Dasar | 0,944 | 0,748 | 0:00:02 |
Acak | 1.518 | 1.219 | 0:00:01 |
Lensa Film 1M | RMSE | MAE | Waktu |
---|---|---|---|
SVD | 0,873 | 0,686 | 0:01:07 |
SVD++ (cache_ratings=Salah) | 0,862 | 0,672 | 0:41:06 |
SVD++ (cache_rating=Benar) | 0,862 | 0,672 | 0:34:55 |
NMF | 0,916 | 0,723 | 0:01:39 |
Lereng Satu | 0,907 | 0,715 | 0:02:31 |
k-NN | 0,923 | 0,727 | 0:05:27 |
K-NN terpusat | 0,929 | 0,738 | 0:05:43 |
k-NN Dasar | 0,895 | 0,706 | 0:05:55 |
Pengelompokan Bersama | 0,915 | 0,717 | 0:00:31 |
Dasar | 0,909 | 0,719 | 0:00:19 |
Acak | 1.504 | 1.206 | 0:00:19 |
Dengan pip (Anda memerlukan kompiler C. Pengguna Windows mungkin lebih suka menggunakan conda):
$ pip install scikit-surprise
Dengan conda:
$ conda install -c conda-forge scikit-surprise
Untuk versi terbaru, Anda juga dapat mengkloning repo dan membangun sumbernya (Anda memerlukan Cython dan numpy terlebih dahulu):
$ git clone https://github.com/NicolasHug/surprise.git
$ cd surprise
$ pip install .
Proyek ini dilisensikan di bawah lisensi BSD 3-Clause, sehingga dapat digunakan untuk hampir semua hal, termasuk aplikasi komersial.
Saya ingin tahu bagaimana Surprise bermanfaat bagi Anda. Jangan ragu untuk membuka terbitan dan menjelaskan cara Anda menggunakannya!
Harap pastikan untuk mengutip makalah tersebut jika Anda menggunakan Surprise untuk penelitian Anda:
@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}
}
Orang-orang berikut telah berkontribusi pada Surprise:
ashtou, Abhishek Bhatia, bobbyinfj, caoyi, Chieh-Han Chen, Raphael-Dayan, Олег Демиденко, Charles-Emmanuel Dias, dmamylin, Lauriane Ducasse, Marc Feger, franckjay, Lukas Galke, Tim Gates, Pierre-François Gimenez, Zachary Glassman, Jeff Hale, Nicolas Pelukan, Janniks, jyesawtellrickson, Doruk Kilitcioglu, Ravi Raju Krishna, lapidshay, Hengji Liu, Ravi Makhija, Maher Malaeb, Manoj K, James McNeilis, Naturale0, nju-luke, Pierre-Louis Pécheux, Jay Qi, Lucas Rebscher, Craig Rodrigues, Skywhat, Hercules Smith, David Stevens, Vesna Tanko, TrWestdoor, Victor Wang, Mike Lee Williams, Jay Wong, Chenchen Xu, YaoZh1918.
Terima kasih banyak :) !
Mulai dari versi 1.1.0 (September 2019), saya hanya akan memelihara paketnya, memberikan perbaikan bug, dan mungkin terkadang peningkatan kinerja. Saya mempunyai lebih sedikit waktu untuk mendedikasikannya sekarang, jadi saya tidak dapat mempertimbangkan fitur-fitur baru.
Untuk bug, masalah, atau pertanyaan tentang Kejutan, harap hindari mengirimi saya email; Kemungkinan besar saya tidak akan bisa menjawab). Silakan gunakan halaman proyek GitHub, sehingga orang lain juga dapat memperoleh manfaat darinya.