Surprise Library Overview

Welcome to the惊喜图书馆,一个易于使用的Python工具包,用于构建和分析处理明确评分数据的推荐系统。该库旨在为用户提供完美的实验控制、简化数据集处理、提供多种现成的预测算法以及轻松实现新算法思路的工具。

主要功能

  • 精确的实验控制:通过详细的文档记录每一个算法细节,让用户能够完全控制实验过程。
  • 简化数据集处理:用户可以使用内置数据集(如MovieLens和Jester)以及自定义数据集。
  • 提供丰富的预测算法:包括基线算法、邻居方法、基于矩阵分解的方法(如SVD、PMF、NMF等),以及各种相似性度量(如余弦、MSD、皮尔逊等)。
  • 易于实现新的算法思路:提供了工具来评估、分析和比较算法性能,并且可以很容易地使用强大的CV迭代器进行交叉验证,以及进行全面的参数搜索。

设计宗旨

惊喜库的设计初衷是为用户提供一个简单而强大的平台,以便他们可以专注于构建和改进推荐系统,而不必过多关注数据集处理和算法实现的具体细节。

示例

以下是一个简单的示例,演示了如何下载数据集、将其拆分为5折交叉验证,并计算SVD算法的MAE和RMSE。

from surprise import SVD
from surprise import Dataset
from surprise.model_selection import cross_VALIDATE

# 加载movielens-100k数据集(如果需要)
data = Dataset.load_builtin('ml-100k')

# 使用SVD算法。
algo = SVD()

# 运行5折交叉验证并打印结果。
cross_validate(algo, data, measures=['RMSE', 'MAE'], cv=5, verbose=True)

惊喜库还可以执行更多复杂的任务,例如网格搜索(GridSearchCV)。更多用法示例,请参考文档。

性能基准

在5折交叉验证过程中,各种算法的默认参数的平均RMSE、MAE和总执行时间如下所示。这些数据集分别是MovieLens 100k和1M。所有实验均在一台配备英特尔i5第11代2.60GHz处理器的笔记本电脑上运行。生成这些表格的代码可以在基准测试示例中找到。

安装指南

通过pip安装惊喜库:

pip install numpy scikit-surprise

或使用conda:

conda install -c conda-forge scikit-surprise

对于最新版本,可以从GitHub克隆仓库并构建源代码(首先需要安装cython和numpy):

pip install numpy cython
git clone https://github.com/NicolasHug/surprise.git
cd surprise
python setup.py install

许可证及参考

惊喜库采用BSD 3条款许可证授权,因此可用于任何用途,包括商业应用。如果您使用惊喜库进行研究,请务必引用相关论文。

贡献者

以下人员为惊喜库做出了贡献:

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 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, Hercules Smith, David Stevens, Vesna Tanko, TrWestdoor, Victor Wang, Mike Lee Williams, Jay Wong, Chenchen Xu, YaoZh1918。

感谢大家!

Leave a Reply

Your email address will not be published. Required fields are marked *