Surprise 专注于推荐系统的 Python库

Surprise 专注于推荐系统的 Python库

Surprise是一个专注于推荐系统的 Python scikit 库,其结构与 scikit-learn 非常相似。

Surprise的工作流程与 scikit-learn 中的分类器模型是不一样的。在 scikit-learn 的模型中你有一个大的矩阵,你可以根据自己的需要将其拆分为训练 / 验证 / 测试集,做交叉验证,因为它们本质上仍是相同类型的数据。但在 surprise 中有三种不同的数据类,每种都有自己独特的用法。


安装:

需要安装 Surprise 软件包,pip install scikit-surprise

数据准备:

Dataset:可以直接或通过交叉验证迭代器拆分为训练集和测试集。意味着如果你在交叉验证中将一个 Dataset 作为参数传递,它将创建许多训练 - 测试拆分。 Trainset:在模型的 fit 方法中用作参数。 Testset:在模型的 test 方法中用作参数。


交叉验证 surprise 中测试和验证的机制有所不同。你只能对原始 Dataset 对象进行交叉验证,而不能为最终测试留出单独的测试部分,至少目前找不到相应的方法。所以流程基本上是这样的:

对具有不同参数的多种模型类型进行交叉验证, 选出平均测试 RMSE 得分最低的配置, 在整个 Dataset 上训练这个模型, 用它来预测。


预测 surprise 有两点可能和你期望的不一样:

只能对已经在数据集中的用户进行预测。这也是为什么我认为在流程结束时在整个数据集上训练模型才有意义的原因所在。

你不能调用一次就从模型中获得输出列表。你可以请求一个特定用户对某个特定项目的估计评分结果。

代码参见https://github.com/MatePocs/boardgame_recommendation/blob/master/02_modelling_neighbours.ipynb


Surprise 专注于推荐系统的 Python库


Surprise 专注于推荐系统的 Python库


分享到:


相關文章: