官方教学:https://recbole.io/cn/quickstart.html
- 2022/07/15: 更新更换数据集
1. 安装
pip install recbole
2. 使用
选择随机采集正样本的留一法。该框架能够实现,且有一篇论文详细介绍:《Revisiting Alternative Experimental Settings for Evaluating
Top-𝑁 Item Recommendation Algorithms》.
from recbole.quick_start import run_recbole
dataset = 'ml-1m'
model = 'NeuMF' # 从对比算法选择
# 参数
para_dic = {
'training_batch_size': 512,
'eval_batch_size': 512,
'eval_args': {'group_by': 'user', 'split': {'LS': 'valid_and_test'}, 'mode': 'uni100'}, # 1
'metrics': ['Hit', 'NDCG', 'MRR'],
'topk': [5, 10],
'epochs': 40, # default 300 训练轮数
# 'valid_metric': 'Hit@10',
# - Training -#
'learner': 'adam',
'learning_rate': 0.001,
'neg_sampling': {'uniform': 1},
# - Model -#
'dropout_prob': 0.2
}
# 运行
run_recbole(dataset=dataset_arg, model=model_arg, config_dict=para_dic)
2.1 一些BUG
报错1:recbole tensors used as indices must be long, byte or bool tensors
解决:找到源代码报错行,在indices处变量后加上 .type(torch.long) 把tensor转化为long
2.2 未解决
效果比原论文和其他论文对比的结果要好一大截,要再研究一下代码
3. 更换数据集
以Anime数据集为例,也可以看作者的教程。
3.1 下载作者的转换代码
https://github.com/RUCAIBox/RecDatasets
3.2 下载数据集
下载数据集【RecDatasets代码的README里有支持的数据集的链接】
解压
unzip archive.zip -d anime-data
直接解压也行,文件夹命名anime-data
3.3 转换格式
我这里建了2个文件夹来放原始数据和转换后的数据,其实不用这么麻烦。
python run.py --dataset anime --input_path ..\dataset_meta\anime-data --output_path ..\dataset_new\anime --convert_inter --convert_item
改改路径,成功如下图:
(速度有点慢,Anime不算太大的数据集,如果转换Amazon数据集,时间我不敢想啊)
3.4 使用
把转换后的放在RecBole-master\dataset\anime
然后运行改数据集的参数 dataset=‘Anime’
搞定
报错
如果能解决编码问题,可以把之前命令行的 “–convert_inter” 去掉,就只转换后面的item文件了。
如果不能解决:
嘻嘻 直接去下现成的。。。链接在作者的README里,这里就不放了