Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于数据集替换问题 #3

Closed
sanyu6 opened this issue Mar 31, 2022 · 2 comments
Closed

关于数据集替换问题 #3

sanyu6 opened this issue Mar 31, 2022 · 2 comments
Assignees

Comments

@sanyu6
Copy link

sanyu6 commented Mar 31, 2022

你好,最近我在尝试复现这篇论文的结果,但是我想使用额外的数据集,你在之前的issues中提到的那种方法似乎是由你们的框架来实现训练集和测试集等自动划分,那么要是我想指定训练集和测试集以及sample样本的话似乎有点困难。而且我看到你关于gowalla数据集中的num_clusters的设置为10和你论文中说的1000左右似乎有左。

@hyp1231 hyp1231 self-assigned this Mar 31, 2022
@hyp1231
Copy link
Member

hyp1231 commented Mar 31, 2022

你好,

1 指定训练集、验证集和测试集

举个例子,比如我有提前处理好的训练、验证和测试文件(都是 user item 的交互记录),命名为 xxx

那首先可以把它们都转变为 atomic file 的形式(见 #1 ),并分别命名为 xxx.train.interxxx.valid.interxxx.test.inter,然后放到 dataset 这个文件夹里。

dataset/
  xxx/
    xxx.train.inter
    xxx.valid.inter
    xxx.test.inter

然后仿照 #1 的内容,写一个 xxx.yaml,里面加一行

benchmark_filename: [train, valid, test]

然后运行

python main.py --dataset=xxx --config=xxx.yaml

2 自定义的评测设置

请参考 RecBole 的 API Doc 中关于评测的部分,NCL 都兼容的。

3 num_clusters

首先,论文中说的 1000 是在 section 4.3.6,这里我们在 ml-1m 和 yelp 上测试了模型效果与超参数的关系,并观察到这两个数据集上在 k 取 1000 附近差不多就达到最优了。这并不是说在任何数据集上,k 的最优值一定在 1000 附近。

其次,我们在 section 4.1.4 中写到,NCL 做参数调优时,k 的取值范围是 [5, 10000]。k=10 是在调参范围内的。

再次,我们测试了 num_clusters: 1000 时,NCL 在 gowalla 上的效果。

test result: OrderedDict([('recall@10', 0.1502), ('recall@20', 0.2129), ('recall@50', 0.3253), ('ndcg@10', 0.1082), ('ndcg@20', 0.1263), ('ndcg@50', 0.154)])

和取 10 的结果非常接近。

@hyp1231
Copy link
Member

hyp1231 commented Apr 6, 2022

由于超过 5 天没有新回复,先关闭 issue 了。如果还有疑问,欢迎随时评论。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants