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.60GHz를 탑재한 노트북에서 실행되었습니다. 이러한 테이블을 생성하는 코드는 벤치마크 예제에서 찾을 수 있습니다.
무비렌즈 100k | RMSE | 매 | 시간 |
---|---|---|---|
SVD | 0.934 | 0.737 | 0:00:06 |
SVD++(cache_rateds=False) | 0.919 | 0.721 | 0:01:39 |
SVD++(cache_rateds=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++(cache_rateds=False) | 0.862 | 0.672 | 0:41:06 |
SVD++(cache_rateds=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-Clause 라이선스에 따라 라이선스가 부여되므로 상업용 애플리케이션을 포함한 거의 모든 용도로 사용할 수 있습니다.
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에 기여했습니다:
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, 제프 헤일, Nicolas Hug, 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), 헤라클레스 스미스, 데이비드 스티븐스, Vesna Tanko, TrWestdoor, Victor Wang, Mike Lee Williams, Jay Wong, Chenchen Xu, YaoZh1918.
정말 감사합니다 :) !
버전 1.1.0(2019년 9월)부터 패키지 유지 관리, 버그 수정, 때로는 성능 개선만 제공할 예정입니다. 지금은 그것에 전념할 시간이 부족하기 때문에 새로운 기능을 고려하기가 어렵습니다.
Surprise에 대한 버그, 문제 또는 질문이 있는 경우 이메일을 보내지 마십시오. 아마 답변을 못 드릴 것 같습니다.) 다른 사람들도 혜택을 누릴 수 있도록 GitHub 프로젝트 페이지를 대신 사용해 주세요.