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
驚喜可以做更多(例如,GridSearchCV)!您將在文件中找到更多使用範例。
以下是 5 倍交叉驗證過程中各種演算法(使用預設參數)的平均 RMSE、MAE 和總執行時間。資料集是 Movielens 100k 和 1M 資料集。所有演算法的折疊都是相同的。所有實驗均在配備 Intel i5 第 11 代 2.60GHz 的筆記型電腦上運作。產生這些表的程式碼可以在基準範例中找到。
電影鏡頭 100k | 均方根誤差 | MAE | 時間 |
---|---|---|---|
奇異值分解 | 0.934 | 0.737 | 0:00:06 |
SVD++(快取評級=假) | 0.919 | 0.721 | 0:01:39 |
SVD++(快取評級=真) | 0.919 | 0.721 | 0:01:22 |
奈米纖維 | 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 | 均方根誤差 | MAE | 時間 |
---|---|---|---|
奇異值分解 | 0.873 | 0.686 | 0:01:07 |
SVD++(快取評級=假) | 0.862 | 0.672 | 0:41:06 |
SVD++(快取評級=真) | 0.862 | 0.672 | 0:34:55 |
奈米纖維 | 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 進行研究,請務必引用論文:
@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 做出了貢獻:
。 Jeff Hale、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、 Qi、Lucasas Rebsi、Lucasasz , Craig Rodrigues, 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 專案頁面,讓其他人也能從中受益。