RUCAIBox / RecBole

A unified, comprehensive and efficient recommendation library
https://recbole.io/
MIT License
3.44k stars 615 forks source link

[🐛BUG] DIN AUC性能测试与原文不符 #1914

Open NEUYuYang opened 12 months ago

NEUYuYang commented 12 months ago

我在recbole框架中运行DIN模型时,使用ml-20m数据集,测试集的AUC可以达到98%以上,但是在DIN原文中只有0.7337,请问你们在与原文进行比较的时候参数是怎么设定的? 其他学者用ml-20m数据集跑DIN的时候可以达到跟原文一样的性能指标吗

zhengbw0324 commented 12 months ago

@NEUYuYang 您好!可以提供一些更详细的信息吗,比如数据集和模型的配置参数等。

NEUYuYang commented 12 months ago

数据集用了recbloe框架提供的ml-20m数据集,用了userid,itemid和timestamp 其他参数就是默认的 正常来说参数不好只能AUC效果低,但是我运行的时候AUC效果太高了。。。。   98点几 原文AUC只有七十多

---原始邮件--- 发件人: "Bowen @.> 发送时间: 2023年11月16日(周四) 下午5:17 收件人: @.>; 抄送: @.**@.>; 主题: Re: [RUCAIBox/RecBole] [🐛BUG] DIN AUC性能测试与原文不符 (Issue #1914)

@NEUYuYang 您好!可以提供一些更详细的信息吗,比如数据集和模型的配置参数等。

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

zhengbw0324 commented 12 months ago

@NEUYuYang 您好!跑CTR任务需要指定数据的label。不进行特殊设置的话数据的所有交互都会被默认为正例。您可以通过设置threshold参数根据rating值区分正负例,具体可以参考我们的文档。一个例子是:

field_separator: "\t"
seq_separator: " "
USER_ID_FIELD: user_id
ITEM_ID_FIELD: item_id
RATING_FIELD: rating
NEG_PREFIX: neg_
LABEL_FIELD: label
val_interval:
  rating: "[0,3);(3,inf)"
threshold:
    rating: 4
load_col:
    inter: [user_id, item_id, rating]
    user: [user_id, age, gender, occupation]
    item: [item_id, genre, release_year]
# training and evaluation
epochs: 500
train_batch_size: 4096
eval_batch_size: 40960000

eval_args:
  split: {'RS':[0.8, 0.1, 0.1]}
  group_by: ~
  mode: labeled
  order: RO
valid_metric: AUC
metrics: ['AUC', 'LogLoss']

您可以根据您的需求自行调整配置参数。

NEUYuYang commented 12 months ago

好滴,谢谢

---原始邮件--- 发件人: "Bowen @.> 发送时间: 2023年11月16日(周四) 下午5:44 收件人: @.>; 抄送: @.**@.>; 主题: Re: [RUCAIBox/RecBole] [🐛BUG] DIN AUC性能测试与原文不符 (Issue #1914)

@NEUYuYang 您好!跑CTR任务需要指定数据的label。不进行特殊设置的话数据的所有交互都会被默认为正例。您可以通过设置threshold参数格局rating值区分正负例,具体可以参考我们的文档。一个例子是: field_separator: "\t" seq_separator: " " USER_ID_FIELD: user_id ITEM_ID_FIELD: item_id RATING_FIELD: rating NEGPREFIX: neg LABEL_FIELD: label val_interval: rating: "[0,3);(3,inf)" threshold: rating: 4 load_col: inter: [user_id, item_id, rating] user: [user_id, age, gender, occupation] item: [item_id, genre, release_year] # training and evaluation epochs: 500 train_batch_size: 4096 eval_batch_size: 40960000 eval_args: split: {'RS':[0.8, 0.1, 0.1]} group_by: ~ mode: labeled order: RO valid_metric: AUC metrics: ['AUC', 'LogLoss']

您可以根据您的需求自行调整配置参数。

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

NEUYuYang commented 10 months ago

你好,我在用DIN模型跑ml-1m数据集 参数如下: 'field_separator': "\t",     'seq_separator': " ",     'data_path': "./dataset",     'val_interval': {'rating': "[0,3);(3,inf)"},     'threshold': {'rating': 4},     'load_col': {'inter': ['user_id', 'item_id','timestamp','rating'],                  'item': ['item_id', 'genre', 'release_year'],                  'user': ['user_id', 'age', 'gender', 'occupation']},     'USER_ID_FIELD': 'user_id',     'ITEM_ID_FIELD': 'item_id',     'RATING_FIELD': 'rating',     'NEGPREFIX': 'neg',     'LABEL_FIELD': 'label',     'eval_args':{'split':{'RS':[0.8,0.1,0.1]},                  'group_by':'none',                  'mode': 'labeled',                  'order': 'TO'},     'show_progress': False,     'epochs': 200,     'train_batch_size': 4096,     'eval_batch_size': 40960000,     'valid_metric': 'AUC',     'metrics': ['AUC', 'LogLoss'],     'embedding_size': 16,     'learning_rate': 1e-2,     'dropout_prob': 0.1,     'mlp_hidden_size': '[128,128,128]',     'pooling_mode': 'mean',     'stopping_step': 200

目前的问题是,验证集的AUC最高值在第一个epoch并且只有0.62,其他epoch的验证AUC都在0.62以下,训练集损失是下降的 可否解惑一下哪里出错了

于洋 @.***

 

------------------ 原始邮件 ------------------ 发件人: "RUCAIBox/RecBole" @.>; 发送时间: 2023年11月16日(星期四) 下午5:44 @.>; @.**@.>; 主题: Re: [RUCAIBox/RecBole] [🐛BUG] DIN AUC性能测试与原文不符 (Issue #1914)

@NEUYuYang 您好!跑CTR任务需要指定数据的label。不进行特殊设置的话数据的所有交互都会被默认为正例。您可以通过设置threshold参数格局rating值区分正负例,具体可以参考我们的文档。一个例子是: field_separator: "\t" seq_separator: " " USER_ID_FIELD: user_id ITEM_ID_FIELD: item_id RATING_FIELD: rating NEGPREFIX: neg LABEL_FIELD: label val_interval: rating: "[0,3);(3,inf)" threshold: rating: 4 load_col: inter: [user_id, item_id, rating] user: [user_id, age, gender, occupation] item: [item_id, genre, release_year] # training and evaluation epochs: 500 train_batch_size: 4096 eval_batch_size: 40960000 eval_args: split: {'RS':[0.8, 0.1, 0.1]} group_by: ~ mode: labeled order: RO valid_metric: AUC metrics: ['AUC', 'LogLoss']

您可以根据您的需求自行调整配置参数。

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