RecBole
RecBole copied to clipboard
用ml-100k数据集,切换评价指标从评分改为排序,报错如下,正文是我自己的设置
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
@yandong667 您好,请问运行的是什么模型呢?
您好,点击率模型,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 您好,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 版本。