pykt-team / pykt-toolkit

pyKT: A Python Library to Benchmark Deep Learning based Knowledge Tracing Models
https://pykt.org
MIT License
194 stars 53 forks source link

help #138

Open MyGithub1234567890 opened 8 months ago

MyGithub1234567890 commented 8 months ago

我有个问题 就是我用pykt库里面的 iekt模型跑 然后auc是0.8318。然后我需要atdkt模型数据集里面的 历史正确性这个数据。就把iekt的数据loader换成了atdkt的loader 数据集不变.然后啥也没改 iekt的auc就到了0.923。
修改代码如下:

elif model_name in que_type_models:

#     curvalid = KTQueDataset(os.path.join(data_config["dpath"], data_config["train_valid_file_quelevel"]),
#                     input_type=data_config["input_type"], folds={i}, 
#                     concept_num=data_config['num_c'], max_concepts=data_config['max_concepts'])
#     curtrain = KTQueDataset(os.path.join(data_config["dpath"], data_config["train_valid_file_quelevel"]),
#                     input_type=data_config["input_type"], folds=all_folds - {i}, 
#                     concept_num=data_config['num_c'], max_concepts=data_config['max_concepts'])
elif model_name in ["iekt"]:
    curvalid = ATDKTDataset(os.path.join(data_config["dpath"], data_config["train_valid_file"]), data_config["input_type"], {i})
    curtrain = ATDKTDataset(os.path.join(data_config["dpath"], data_config["train_valid_file"]), data_config["input_type"], all_folds - {i})

请问哪里出错了啊?

MyGithub1234567890 commented 8 months ago

有没有大佬知道什么原因啊,孩子很着急啊

sonyawong commented 8 months ago

有没有大佬知道什么原因啊,孩子很着急啊

iekt的data_loader用question-level的数据集,atdkt的dataloader使用的kc-level的(对于一个题对多知识点会进行扩展),你用kc-level的数据集跑iekt,应该是存在标签泄露的问题导致结果虚高,对于历史正确性这个数据,建议根据代码在iekt的data_loader上修改

sonyawong commented 8 months ago

有没有大佬知道什么原因啊,孩子很着急啊

iekt的data_loader用question-level的数据集,atdkt的dataloader使用的kc-level的(对于一个题对多知识点会进行扩展),你用kc-level的数据集跑iekt,应该是存在标签泄露的问题导致结果虚高,对于历史正确性这个数据,建议根据代码在iekt的data_loader上修改

我后面还用到了DIMKT里面的SD(技能难度),QD(问题难度)这两个数据,用了上面那个方法来换了loader,结果auc0.8969,这里也存在标签泄露问题吗?

是的,dimkt用的也是kc-level的数据集

MyGithub1234567890 commented 8 months ago

有没有大佬知道什么原因啊,孩子很着急啊

iekt的data_loader用question-level的数据集,atdkt的dataloader使用的kc-level的(对于一个题对多知识点会进行扩展),你用kc-level的数据集跑iekt,应该是存在标签泄露的问题导致结果虚高,对于历史正确性这个数据,建议根据代码在iekt的data_loader上修改

我后面还用到了DIMKT里面的SD(技能难度),QD(问题难度)这两个数据,用了上面那个方法来换了loader,结果auc0.8969,这里也存在标签泄露问题吗?

是的,dimkt用的也是kc-level的数据集

谢谢大佬,孩子得救了,祝大佬科研顺利