RecBole icon indicating copy to clipboard operation
RecBole copied to clipboard

用ml-100k数据集,切换评价指标从评分改为排序,报错如下,正文是我自己的设置

Open yandong667 opened this issue 2 years ago • 3 comments

model config

embedding_size: 32

dataset config

field_separator: "\t" #指定数据集field的分隔符 seq_separator: " " #指定数据集中token_seq或者float_seq域里的分隔符 USER_ID_FIELD: user_id #指定用户id域 ITEM_ID_FIELD: item_id #指定物品id域 RATING_FIELD: rating #指定打分rating域 TIME_FIELD: timestamp #指定时间域 NEG_PREFIX: None #指定负采样前缀 LABEL_FIELD: label #指定标签域 #因为数据集没有标签,所以设置一个阈值,认为rating高于该值的是正例,反之是负例 threshold: rating: 4 #指定从什么文件里读什么列,这里就是从ml-1m.inter里面读取user_id, item_id, rating, timestamp这四列,剩下的以此类推 load_col: inter: [user_id, item_id, rating,timestamp] user: [user_id, age, gender, occupation] item: [item_id, genre]

training settings

epochs: 10 #训练的最大轮数 train_batch_size: 4096 #训练的batch_size learner: adam #使用的pytorch内置优化器 learning_rate: 0.001 #学习率 training_neg_sample_num: 0 #负采样数目 eval_step: 1 #每次训练后做evalaution的次数 stopping_step: 10 #控制训练收敛的步骤数,在该步骤数内若选取的评测标准没有什么变化,就可以提前停止了

evalution settings

eval_setting: RO_RS #对数据随机重排,设置按比例划分数据集 group_by_user: False #是否将一个user的记录划到一个组里 split_ratio: [0.8,0.1,0.1] #切分比例 metrics: ['Recall', 'MRR', 'NDCG', 'Hit', 'Precision'] #评测标准 valid_metric: Recall #选取哪个评测标准作为作为提前停止训练的标准 eval_batch_size: 4096 #评测的batch_size image

yandong667 avatar Aug 17 '22 01:08 yandong667

@yandong667 您好,请问运行的是什么模型呢?

Sherry-XLL avatar Aug 17 '22 01:08 Sherry-XLL

您好,点击率模型,lr fm  deepfm等都试过了,都报同样错

---原始邮件--- 发件人: "Lanling @.> 发送时间: 2022年8月17日(周三) 上午9:30 收件人: @.>; 抄送: @.@.>; 主题: Re: [RUCAIBox/RecBole] 用ml-100k数据集,切换评价指标从评分改为排序,报错如下,正文是我自己的设置 (Issue #1389)

@yandong667 您好,请问运行的是什么模型呢?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

yandong667 avatar Aug 17 '22 01:08 yandong667

@yandong667 您好,LR、FM 等点击率预测模型在伯乐中都属于 context-aware 类的模型,默认是用 AUC、LogLoss 等基于值的评分作为评价指标,设置如下:

eval_args:
    group_by: None
    mode: labeled
metrics: ['AUC', 'LogLoss']
valid_metric: AUC

RecBole 也支持让点击率预测模型与一般推荐模型一样通过排序指标来评估,但您需要确保 .inter 文件不能加载任何其他上下文信息列。详情请参考 API 文档 的模型部分。

以 ml-100k 数据集为例,可以将配置文件设置如下:

# dataset config
field_separator: "\t"
seq_separator: " "
USER_ID_FIELD: user_id
ITEM_ID_FIELD: item_id
RATING_FIELD: rating
NEG_PREFIX: neg_
LABEL_FIELD: label
threshold:
    rating: 4
load_col:
    inter: [user_id, item_id, rating]
    user: [user_id, age, gender, occupation]
    item: [item_id, genre]

# training and evaluation
epochs: 500
train_batch_size: 4096
eval_batch_size: 40960000
metrics: ['Recall', 'MRR', 'NDCG', 'Hit', 'Precision']
valid_metric: NDCG@10
train_neg_sample_args: ~

eval_args:
  split: {'RS':[0.8,0.1,0.1]}
  group_by: user
  order: RO
  mode: full                   

# model
embedding_size: 64

最后,建议使用最新的 RecBole 版本以获得更优的使用体验,我上面的配置文件针对的是 RecBole 1.0.1 版本。

Sherry-XLL avatar Aug 17 '22 02:08 Sherry-XLL