THUDM / ComiRec

Source code and dataset for KDD 2020 paper "Controllable Multi-Interest Framework for Recommendation"

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

训练集采样方式的一些疑问

GodIsAWord opened this issue · comments

大佬您好,本人在学习代码的过程中做了一些修改,发现如果将data_iterator.py 67行的代码:
k = random.choice(range(4, len(item_list)))改成:
k = len(item_list)-1后
第一个epoch正常,但是进入到后续的epoch虽然loss还在继续下降,但是其余各项指标ndcg、hr等也大幅下降
请问这个是因为产生了过拟合吗?
因为个人的理解使用原始代码的方式每次的训练数据都会不一样
期待您的解答!

Hi @GodIsAWord,

是会出现过拟合。
k = random.choice(range(4, len(item_list)))这种方式可以很大程度上扩充训练集,防止过拟合。
如果设定好随机种子的话,每次训练数据还是一样的。

@cenyk1230
大佬您好,因为taobao userbehavior数据集还是很大的,且用的是DNN,使用k = len(item_list)-1后迭代差不多1个epoch就开始出现过拟合的问题了,我在以前的一些CTR任务中按照同样的处理方式,不会这么早的出现过拟合的情况。
个人的理解是因为使用了sampled_softmax_loss吗? :(

Hi @GodIsAWord 你想用k = len(item_list)-1这种方式的话 确实得使用CTR任务中专门的loss 比如f(user, item)->0/1这种