重磅!又一个开源推荐系统算法库-北邮发布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
Context-aware recommendatio
Sequential recommendation
Knowledge-based recommendation
为了兼顾可拓展性和易用性,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-100k
The number of users: 944
Average actions of users: 106.04453870625663
The number of items: 1683
Average actions of items: 59.45303210463734
The number of inters: 100000
The sparsity of the dataset: 93.70575143257098%
INFO Evaluation Settings:
Group by user_id
Ordering: {'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 52
INFO Loading model structure and parameters from saved/***.pth
INFO best valid result:
recall@10: 0.2169 mrr@10: 0.4005 ndcg@10: 0.235 hit@10: 0.7582 precision@10: 0.1598
INFO 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 。