Open zyx1017 opened 1 year ago
您好 @zyx1017,如果您想不进行数据增强,可以在序列推荐时提供自己预先处理好的数据集。以经典的序列推荐模型 BERT4Rec 为例,我们可以预先创建划分好的训练、验证和测试集:
dataset/test_bert4rec/test_bert4rec.train.inter
session_id:token item_id_list:token_seq item_id:token
2 2 3 4 5 6 7 8 9 10 1 11 1 12 13 14 15
3 16 17 18 19 20 21 22 23 24
4 25 26 27 28 29 30 31
5 32 33 31 31 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
6 55 56 57 58 59 60 61
7 61 62 61 59
8 63 64 65 66 67 68
9 63 64 65 66 67 68 68 69
10 63 64 65 66 67 68 68 69 70
11 63 64 65 66 67 68 68 69 70 71
dataset/test_bert4rec/test_bert4rec.valid.inter
or dataset/test_bert4rec/test_bert4rec.test.inter
session_id:token item_id_list:token_seq item_id:token
1 2 3 4 5 6 7 8 9 10 1 11 1 12 13 14 15 5915
2 16 17 18 19 20 21 22 23 24 50022
3 45 46 47 48 49 50 51 52 53 50023 50024 50025 50026 50027 50028 50029 50030 50031 50032 50033 50034 54 54 50035 50036 50037
4 61 62 61 59 60
5 63 64 65 66 67 68 68 69 70 71 50038
6 72 78 74 75 76 77 78 72 73
7 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 50039
8 106 107 108 109 111 111 110
9 358 113 113 112
10 50040 50041 50042 50043 50044 50045 50046 114 50047 50048 50049 50050 50051 50052 50053 50054 114 18226
然后,我们需要设置参数 benchmark_filename
,在 RecBole 文件夹下创建一个 yaml 文件 test_bert4rec.yaml
如下:
# dataset config
field_separator: "\t"
seq_separator: " "
USER_ID_FIELD: session_id
ITEM_ID_FIELD: item_id
RATING_FIELD: rating
TIME_FIELD: timestamp
NEG_PREFIX: neg_
ITEM_LIST_LENGTH_FIELD: item_length
LIST_SUFFIX: _list
MAX_ITEM_LIST_LENGTH: 50
POSITION_FIELD: position_id
load_col:
inter: [session_id, item_id_list, item_id]
benchmark_filename: [train, valid, test]
alias_of_item_id: [item_id_list]
# training and evaluation
epochs: 500
train_batch_size: 4096
eval_batch_size: 40960000
valid_metric: NDCG@10
eval_args:
split: {'LS': 'valid_and_test'}
mode: full
order: TO
# disable negative sampling
train_neg_sample_args: ~
然后,在命令行通过 python run_recbole.py --model=BERT4Rec --dataset=test_bert4rec --config_files=test-yaml/seq/test_bert4rec.yaml
运行模型即可。
通过定义自己的数据集,我们可以不进行数据增强来运行序列推荐模型。
感谢您对 RecBole 的关注!若有后续问题欢迎继续评论。
@Sherry-XLL 你好!感谢你的回答!请问能否提供上述划分训练、验证和测试集的代码呢
您好 @zyx1017,这个需要根据您的数据集情况而定,就是基础的 python 操作,整理成所需的格式即可,我们这里没有专门的代码。
您好,如果您想不对序列数据进行增广,可以提供您自己的数据集,详情可以参考如下的数据:
并根据 session_based_rec_example.py 进行推荐。
感谢您对 RecBole 的关注!