最近有一款新上线的推荐系统框架,叫RecBole,里面包含了很多推荐系统方向的模型,感觉跑baseline特别方便(`∀´)Ψ!但是内容比较多,上手还是需要一点时间的,于是就产生了写该博客的想法(#.#)
本文是推荐系统框架RecBole的入门系列教程第一篇,关于RecBole的快速安装和简单上手,后续还会有别的相关博客。
当然我写的肯定有不完善的地方,感兴趣的同学可以去他们官网康康!
RecBole在目前主流的几种系统上都可以运行:
Linux
Windows 10
macOS X
另外,它还对python相关环境有要求:
python>=3.6
torch>=1.6
鉴于模型大多数都是深度学习模型,如果使用GPU的话:
CUDA或CUDATooklkit>=9.2
NVIDIA Driven>=396.26(Linux)
NVIDIA Driven>=397.44(Windows10)
推荐新建一个虚拟环境,防止装环境装崩了(血的教训ヘ(;´Д`ヘ)
这里创建一个名为recbole的虚拟环境
conda create -n recbole
conda activate recbole
然后在该虚拟环境中安装(小伙伴们记得检查一下torch和python版本对不对哈)
conda install -c aibox recbole
pip install recbole
先从github上面下载源文件
git clone https://github.com/RUCAIBox/RecBole.git && cd RecBole
然后运行指令安装
pip install -e . --verbose
因为RecBole这个框架还是集成了很多模型的,所以要完全使用熟练还是需要熟悉一会的,但个人感觉已经比现在已有的框架方便很多了(划掉XD),这里其实还是参考他们网站给的例子来写的。
进入RecBole文件夹,可以直接运行run_recbole.py这个文件,默认使用的模型是BPR,默认使用的数据集是ml-100k
python run_recbole.py
然后就会得到下面的输出信息,包括了使用的数据集名称、数据集里user,item以及interaction数目、模型评估设置、模型结构等内容,挺清晰明了的:
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 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
这样的模式跑baseline真的真的真的很省事!终于不用我叭叭叭叭敲代码再调bug了( Ĭ ^ Ĭ )
然后上面是全部使用默认参数跑模型的结果,如果要改一些参数,比如学习率 (learning_rate)啊,嵌入向量的大小(embedding_size)啊,甚至使用的模型啊等等,最简单的办法是直接命令行添加,假设改成使用FM模型,学习率改成0.02,嵌入向量大小改成50维:
python run_recbole.py --model=LR --learning_rate=0.02 --embedding_size=50
改变数据集我放在之后的博客里面说,RecBole支持的模型和提供的已经处理好的数据集可以看他们的官网。
首先新建一个python文件,假设命名为test_recbole.py,然后在该文件中写入:
from recbole.quick_start import run_recbole
run_recbole()
然后运行该文件
python run.py --dataset=ml-100k --model=BPR
改变参数的方式和从源码上手那里操作相似。
好啦!第一篇就先写这么多,准备后续写一写四大类(general,context
,sequential,knowledge)模型的分别运行流程、参数设置等问题,以及数据集的格式啊设置什么的,大家有什么想看的也可以给我留言。谢谢各位!
最后附上官网地址和API文档地址:
官网地址:https://recbole.io/cn/index.html
API文档地址:https://recbole.io/docs/