Coder-Yu / SELFRec

An open-source framework for self-supervised recommender systems.
516 stars 76 forks source link

关于SimGCL运行新的数据集的问题 #71

Closed AzureSX closed 3 months ago

AzureSX commented 3 months ago

作者您好,为了对比您的 SimGCL 与我自己的模型效果差距,我目前需要在您的 SimGCL 上运行新的数据集,我按照本工程中的数据集格式划分了 train.txt 和 test.txt,但是我的工作,以及之前一系列的文章中,是没有划分验证集的,也就是说实际上在训练过程中是按照 8:2 的 train set : test set 来训练模型的,但是您的工作中是按照 7:1:2 的比例划分的,请问验证集是否参与到模型的训练了呢,如果没有,那我认为相对于没有验证集的处理方式将会少了 10% 的训练样本,这样得到的结果不利于公平比较,在您的 SELFRec 中有办法取消验证集的使用,或者说用 test set 替换 validation set 以达到使用相同数量的训练样本的效果吗

Coder-Yu commented 3 months ago

但是我的工作,以及之前一系列的文章中,是没有划分验证集的

是需要划分验证集的

但是您的工作中是按照 7:1:2 的比例划分的,请问验证集是否参与到模型的训练了呢,如果没有,那我认为相对于没有验证集的处理方式将会少了 10% 的训练样本,这样得到的结果不利于公平比较

参考我的原文 后来是merge了验证集到训练集再训练然后在test set上跑出结果的。

在您的 SELFRec 中有办法取消验证集的使用,或者说用 test set 替换 validation set 以达到使用相同数量的训练样本的效果吗

我的配置文件里只写了训练集和测试集的入口,但实际上在指定测试集文件路径时输入验证集就可以了

AzureSX commented 3 months ago

感谢您的回答,所以我是否可以这么认为,基于 SELFRec 框架,把 8:2 划分的 train.txt/test.txt 作为输入,尽管在训练过程中会把 train set 抽出一部分当作验证集,但最后输出的测试指标仍然是模型经过 80% 训练集训练得到的,不存在缺失 10% 训练样本的情况

Coder-Yu commented 3 months ago

可以这么认为。其实最好不要merge,三个集合分开。目前这个设定是参考了之前的NGCF SGL这些工作,使用了他们release的数据集。为了跟他们的结果(80%数据训练,20%测试)直接对比,采用了这种设定。