Surprise — это инструмент Python для создания и анализа рекомендательных систем, работающих с явными рейтинговыми данными.
Сюрприз был разработан со следующими целями :
Название SurPRISE (примерно :)) расшифровывается как Simple Python RecommendatIon System Engine .
Обратите внимание, что сюрприз не поддерживает неявные оценки или информацию на основе контента.
Вот простой пример, показывающий, как вы можете (загрузить) загрузить набор данных, разделить его для 5-кратной перекрестной проверки и вычислить MAE и RMSE алгоритма 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 )
Выход :
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)! Больше примеров использования вы найдете в документации.
Вот средние значения RMSE, MAE и общее время выполнения различных алгоритмов (с их параметрами по умолчанию) при 5-кратной процедуре перекрестной проверки. Наборы данных — это наборы данных Movielens 100k и 1M. Складки одинаковы для всех алгоритмов. Все эксперименты проводились на ноутбуке с процессором Intel i5 11-го поколения 2,60 ГГц. Код для создания этих таблиц можно найти в тестовом примере.
Мовиленс 100к | RMSE | МАЭ | Время |
---|---|---|---|
СВД | 0,934 | 0,737 | 0:00:06 |
СВД++ (cache_ratings=False) | 0,919 | 0,721 | 0:01:39 |
SVD++ (cache_ratings=True) | 0,919 | 0,721 | 0:01:22 |
НМФ | 0,963 | 0,758 | 0:00:06 |
Склон Один | 0,946 | 0,743 | 0:00:09 |
к-НН | 0,98 | 0,774 | 0:00:08 |
Центрированный к-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 |
Мовилинза 1М | RMSE | МАЭ | Время |
---|---|---|---|
СВД | 0,873 | 0,686 | 0:01:07 |
СВД++ (cache_ratings=False) | 0,862 | 0,672 | 0:41:06 |
SVD++ (cache_ratings=True) | 0,862 | 0,672 | 0:34:55 |
НМФ | 0,916 | 0,723 | 0:01:39 |
Склон Один | 0,907 | 0,715 | 0:02:31 |
к-НН | 0,923 | 0,727 | 0:05:27 |
Центрированный к-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-Clause, поэтому его можно использовать практически для всего, включая коммерческие приложения.
Мне бы хотелось узнать, чем «Сюрприз» вам пригодится. Пожалуйста, не стесняйтесь открыть вопрос и описать, как вы его используете!
Обязательно цитируйте статью, если вы используете 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}
}
Следующие люди внесли свой вклад в «Сюрприз»:
Ашту, Абхишек Бхатия, bobbyinfj, caoyi, Чи-Хан Чен, Рафаэль-Даян, Олег Демиденко, Шарль-Эммануэль Диас, дмамилин, Лориана Дюкасс, Марк Фегер, Франкджей, Лукас Галке, Тим Гейтс, Пьер-Франсуа Хименес, Закари Глассман, Джефф Хейл, Николас Хуг, Янникс, Джисотелриксон, Дорук Киличчиоглу, Рави Раджу Кришна, Лапидшай, Хенгджи Лю, Рави Махия, Махер Малеб, Манодж К, Джеймс Макнейлис, Naturale0, nju-luke, Пьер-Луи Пешо, Джей Ци, Лукас Ребшер, Крэйг Родригес, Skywhat, Геркулес Смит, Дэвид Стивенс, Весна Танко, ТрВестдор, Виктор Ван, Майк Ли Уильямс, Джей Вонг, Ченчен Сюй, ЯоЖ1918.
Большое спасибо :) !
Начиная с версии 1.1.0 (сентябрь 2019 г.), я буду только поддерживать пакет, исправлять ошибки и, возможно, иногда улучшать производительность. Сейчас у меня меньше времени на это, поэтому я не могу рассматривать новые функции.
Если у вас есть ошибки, проблемы или вопросы о Surprise, пожалуйста, не отправляйте мне электронные письма; Скорее всего не смогу ответить). Вместо этого используйте страницу проекта GitHub, чтобы другие тоже могли извлечь из нее пользу.