Py's scikit-surprise: Detaillierte Anleitung zur Einführung, Installation und Nutzung von scikit-surprise
Inhaltsverzeichnis
Installation von scikit-surprise
So verwenden Sie Scikit-Surprise
Einführung in Scikit-Surprise
Surprise, die Simple Python RecommendatIon System Engine, ist ein Python-Scikit-Empfehlungssystem-Tool zum Erstellen und Analysieren expliziter Bewertungsdaten. Surprise soll:
>> Gibt Benutzern die volle Kontrolle über ihre Experimente. Zu diesem Zweck legen wir Wert auf die Dokumentation und versuchen, sie so klar und präzise wie möglich zu gestalten, indem wir auf jedes Detail des Algorithmus hinweisen.
>> Erleichtern Sie die Verarbeitung von Datensätzen. Benutzer können integrierte Datensätze (Movielens, Jester) und benutzerdefinierte Datensätze verwenden.
>> Bietet verschiedene verfügbare Vorhersagealgorithmen, wie z. B. Basisalgorithmus, Nachbarschaftsmethode, auf Matrixzerlegung basierender Algorithmus (SVD, PMF, SVD++, NMF) usw. Zusätzlich sind verschiedene Ähnlichkeitsmaße integriert (Kosinus, MSD, Pearson usw.).
>> Vereinfacht die Implementierung neuer Algorithmusideen.
>> Bietet Tools zum Bewerten, Analysieren und Vergleichen der Algorithmusleistung. Mit dem leistungsstarken CV-Iterator (inspiriert von den hervorragenden Tools von scikit-learn) können Kreuzvalidierungsverfahren problemlos ausgeführt werden, ebenso wie umfassende Suchvorgänge über eine Reihe von Parametern.
Bitte beachten Sie, dass Surprise keine implizite Bewertung oder inhaltsbasierte Informationen unterstützt.
1. Benchmark-Test
Nachfolgend sind die durchschnittliche RMSE-, MAE- und Gesamtausführungszeit verschiedener Algorithmen (unter Verwendung von Standardparametern) während der 5-fachen Kreuzvalidierung aufgeführt. Zu den Datensätzen gehören Movielens 100k- und 1M-Datensätze, alle Algorithmen verwenden die gleiche Faltung. Alle Experimente wurden auf einem Laptop durchgeführt, der mit einem Intel i5-Prozessor der 11. Generation mit 2,60 GHz ausgestattet war. Den Code zum Generieren dieser Tabellen finden Sie in den Benchmark-Beispielen.
Filmobjektiv 100k
Filmobjektiv 100k | RMSE | ES GIBT | Zeit |
---|---|---|---|
SVD | 0,934 | 0,737 | 0:00:06 |
SVD++ (cache_ratings=False) | 0,919 | 0,721 | 0:01:39 |
SVD++ (cache_ratings=True) | 0,919 | 0,721 | 0:01:22 |
NMF | 0,963 | 0,758 | 0:00:06 |
Steigung Eins | 0,946 | 0,743 | 0:00:09 |
k-NN | 0,98 | 0,774 | 0:00:08 |
Zentriertes k-NN | 0,951 | 0,749 | 0:00:09 |
k-NN-Basislinie | 0,931 | 0,733 | 0:00:13 |
Co-Clustering | 0,963 | 0,753 | 0:00:06 |
Grundlinie | 0,944 | 0,748 | 0:00:02 |
zufällig | 1.518 | 1.219 | 0:00:01 |
Filmobjektiv 1M
Filmobjektiv 1M | RMSE | ES GIBT | Zeit |
---|---|---|---|
SVD | 0,873 | 0,686 | 0:01:07 |
SVD++ (cache_ratings=False) | 0,862 | 0,672 | 0:41:06 |
SVD++ (cache_ratings=True) | 0,862 | 0,672 | 0:34:55 |
NMF | 0,916 | 0,723 | 0:01:39 |
Steigung Eins | 0,907 | 0,715 | 0:02:31 |
k-NN | 0,923 | 0,727 | 0:05:27 |
Zentriertes k-NN | 0,929 | 0,738 | 0:05:43 |
k-NN-Basislinie | 0,895 | 0,706 | 0:05:55 |
Co-Clustering | 0,915 | 0,717 | 0:00:31 |
Grundlinie | 0,909 | 0,719 | 0:00:19 |
zufällig | 1.504 | 1.206 | 0:00:19 |
Installation von scikit-surprise
pip install numpy
pip install scikit-surprise
pip install -i https://mirrors.aliyun.com/pypi/simple scikit-surprise
或者利用conda
conda install -c conda-forge scikit-surprise
或者从最新的源代码构建
pip install numpy cython
git clone https://github.com/NicolasHug/surprise.git
cd surprise
python setup.py install
So verwenden Sie Scikit-Surprise
1. Grundlegende Verwendung
(1), ein einfaches Beispiel, das zeigt, wie man den Datensatz herunterlädt (herunterlädt), ihn in eine 5-fache Kreuzvalidierung aufteilt und den MAE und RMSE des SVD-Algorithmus berechnet
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