RecBole icon indicating copy to clipboard operation
RecBole copied to clipboard

[🐛BUG] LightGCN无法使用设置rating阈值的方式来生成负采样,KeyError: 'neg_item_id'

Open zzzZHANGYIXUAN opened this issue 10 months ago • 3 comments

我使用如下的yaml参数文件,最终报错:KeyError: 'neg_item_id' 而我将train_neg_sample_args: ~注释掉后,代码可以运行,但是结果非常差,LightGCN在douban-book上的RMSE超过了1.0

dataset config

field_separator: "\t" seq_separator: " " load_col: inter: [user_id, item_id, rating] net: [source_id,target_id:token] USER_ID_FIELD: user_id ITEM_ID_FIELD: item_id RATING_FIELD: rating NEG_PREFIX: neg_ LABEL_FIELD: label threshold: rating: 4 train_neg_sample_args: ~

training and evaluation

epochs: 500 train_batch_size: 4096 eval_args: split: {'RS':[0.8, 0.1, 0.1]} group_by: ~ mode: labeled order: RO valid_metric: RMSE metrics: ['AUC', 'LogLoss','MAE','RMSE']

zzzZHANGYIXUAN avatar Mar 29 '24 08:03 zzzZHANGYIXUAN

补充一下,RMSE非常的差的原因是没有通过threshold: rating: 4来生成负样本,而注释掉train_neg_sample_args: ~后,模型会使用以下隐式反馈来生成负样本。 train_neg_sample_args: uniform: 1

zzzZHANGYIXUAN avatar Mar 29 '24 08:03 zzzZHANGYIXUAN

train_neg_sample_args应该是需要设置负采样参数的

97z avatar Apr 19 '24 10:04 97z

我也遇到了这个问题:

LightGCN无法通过设置阈值的方式利用显示反馈。 设置'threshold': {'rating': 3}, 'train_neg_sample_args': None 后,LightGCN会报错 : KeyError: 'neg_item_id' 换成NeuMF模型,其他配置不变,不会出现报错问题。

恳请大家指教

poopoo3882 avatar Aug 20 '24 07:08 poopoo3882