vlambda博客
学习文章列表

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole

点击蓝字关注我哦




简介


RecBole 是一个基于 PyTorch 实现的,面向研究者的,易于开发与复现的,统一、全面、高效的推荐系统代码库,它可以通过pip, Conda 和源文件三种途径安装,使用简单便捷。


RecBole实现了53个推荐系统模型,包含常见的推荐系统类别,如:General Recommendation, Sequential Recommendation, Context-aware Recommendation, Knowledge-based Recommendation, 能够满足基本的推荐系统科研需要。


RecBole约定了一个统一、易用的数据文件格式,并已支持 27 个 benchmark dataset。用户可以选择使用RecBole的数据集预处理脚本,或直接下载已被处理好的数据集文件。


RecBole面向研究者,免费提供给高校、师生、和任何推荐领域的爱好者。会提供定期的维护、更新。



“世有伯乐,然后有千里马。千里马常有,而伯乐不常有。”——韩愈《马说》



安装说明


RecBole可以在以下几种系统上运行:Linux、Windows 10、macOS X;

RecBole需要在python 3.6或更高的环境下运行。

RecBole要求torch版本在1.6.0及以上,如果你想在GPU上运行RecBole,请确保你的CUDA版本或CUDAToolkit版本在9.2及以上。

可以通过 pip, conda, 源文件等方式安装。



算法库



General recommendation

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole


Context-aware recommendatio

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole


Sequential recommendation

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole


Knowledge-based recommendation

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole



数据集


为了兼顾可拓展性和易用性,RecBole 实现了一套优雅的数据流, 来支持从原始文件到模型输入的数据处理。

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole


数据集列表
为了帮助用户将原始输入转换为我们定义的原子文件,我们已经收集了超过 27 种的常见数据集,并且开源了将这些数据集转换为原子文件的脚本。 同时,我们也将部分已经处理好的原子文件打包上传至 

百度网盘
https://pan.baidu.com/share/init?surl=p51sWMgVFbAaHQmL4aD_-g (提取码: e272)  
Google Drive
https://drive.google.com/drive/folders/1so0lckI6N6_niVEYaBu-LIcpOdZf99kj

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole


这些数据集的简单介绍如下:  https://recbole.io/cn/dataset_list.html


模型评估


评测规定和设置:

支持六种评测设置。其中前四个为数据切分方式,后两个与排序策略有关。

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole


在RecBole中,评测模块主要包含TopKEvaluator以及LossEvaluator这两个类,他们均可以自适应上述的各种评测方式。


TopKEvaluator主要负责排序类任务的评测,目前已经提供的评测指标有hit(hit ratio),NDCG,MRR,recall,MAP,precision。这些指标经常会使用其截断的k版本,所以其往往带有后缀@k,如Recall@`5`,NDCG@`10`


LossEvaluator主要应用于评分预测以及点击率预估等任务,目前已经提供的评测指标有: AUC, LogLoss, MAE, RMSE。


快速上手


如果你从GitHub下载了RecBole的源码,你可以使用提供的脚本进行简单的使用:

python run_recbole.py

这个例子将会在ml-100k这个数据集上进行BPR模型的训练和测试。 一般来说,这个例子将花费不到一分钟的时间,我们会得到一些类似下面的输出:

INFO ml-100kThe number of users: 944Average actions of users: 106.04453870625663The number of items: 1683Average actions of items: 59.45303210463734The number of inters: 100000The sparsity of the dataset: 93.70575143257098%
INFO Evaluation Settings:Group by user_idOrdering: {'strategy': 'shuffle'}Splitting: {'strategy': 'by_ratio', 'ratios': [0.8, 0.1, 0.1]}Negative Sampling: {'strategy': 'full', 'distribution': 'uniform'}
INFO BPRMF( (user_embedding): Embedding(944, 64) (item_embedding): Embedding(1683, 64) (loss): BPRLoss())Trainable parameters: 168128


开始训练:

INFO epoch 0 training [time: 0.27s, train loss: 27.7231]INFO epoch 0 evaluating [time: 0.12s, valid_score: 0.021900]INFO valid result:recall@10: 0.0073 mrr@10: 0.0219 ndcg@10: 0.0093 hit@10: 0.0795 precision@10: 0.0088
...
INFO epoch 63 training [time: 0.19s, train loss: 4.7660]INFO epoch 63 evaluating [time: 0.08s, valid_score: 0.394500]INFO valid result:recall@10: 0.2156 mrr@10: 0.3945 ndcg@10: 0.2332 hit@10: 0.7593 precision@10: 0.1591
INFO Finished training, best eval result in epoch 52INFO Loading model structure and parameters from saved/***.pthINFO best valid result:recall@10: 0.2169 mrr@10: 0.4005 ndcg@10: 0.235 hit@10: 0.7582 precision@10: 0.1598INFO test result:


如果你要改参数,例如learning_rate, embedding_size, 只需根据您的需求增加额外的参数,例如:

python run_recbole.py --learning_rate=0.0001 --embedding_size=128


如果你想改变运行模型,只需要在执行脚本时添加额外的设置参数即可:

python run_recbole.py --model=[model_name]

model_name为想要运行的模型的名字,例如: BPR, FM。RecBole目前支持的模型包括general recommendation, context-aware recommendation, sequential recommendation 和 knowledge based recommendation四类, 详细信息请参考模型介绍:https://recbole.io/docs/user_guide/model_intro.html 。



重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole
重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole

  

重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole
重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole
重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole
重磅!又一个开源推荐系统算法库-北邮发布53个常用算法23个常用数据集的Pytorch库RecBole