这里给出一个快速上手的例子来展示RecBole的运行流程。
如果你从GitHub下载了RecBole的源码,你可以使用提供的脚本进行简单的使用:
这个例子将会在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: recall@10: 0.2368 mrr@10: 0.4519 ndcg@10: 0.2768 hit@10: 0.7614 precision@10: 0.1901
如果用户使用我们提供的 quick start 方式运行 RecBole,则原始数据会被分为训练集、验证集和测试集三个部分。我们在训练集上进行参数更新,选择在验证集上效果最佳的模型参数,最后报告其在测试集上的结果。
如果你要改参数,例如learning_rate
, embedding_size
, 只需根据您的需求增加额外的参数,例如:
如果你想改变运行模型,只需要在执行脚本时添加额外的设置参数即可:
model_name
为想要运行的模型的名字,例如: BPR, FM。RecBole目前支持的模型包括general recommendation,
context-aware recommendation, sequential recommendation 和 knowledge based recommendation四类,
详细信息请参考模型介绍。
如果您想改变数据集,请参考数据介绍。
如果你是从pip
或Conda
安装RecBole,你可以新建一个python文件,例如:run.py,在这个文件中写入下面的代码:
然后执行如下命令:
就会在ml-100k这个数据集上进行BPR模型的训练和测试。
如果你想要运行不同的模型,参数和数据集,相关操作和上面类似。
关于RecBole的更多使用,请参考API文档。