kaggle知识跟踪比赛Riiid总结

1 赛题介绍

知识跟踪,即根据学生历史学习、答题记录,预测学生能否正确回答下一题。
有3张表:
(1) 学生交互记录表:时间、userid、问题id(或者课程id)、任务id、答题答案、是否回答正确、回答上一题花费的时间、是否看了上一题的解释。1亿多条记录,近40万user。
(2) 问题详情表:问题id、bundle_id(哪些问题是一起呈现的)、正确答案、类型part、标签tag。13523个问题。
(3) 课程表:课程id、课程类型part、课程标签tag、课程主要目的描述。418个课程。

预测需要在9个小时内完成250万条记录的预测,16G的kaggle notebook内存。所以高分模型都是线下自己机器训练,而notebook上只是加载预训练模型进行预测。

逐批预测的,预测完第一批后,在预测第2批时,会知道第一批的用户预测是否正确。

2 比赛用到的模型

2.1 GDBT类

包括lightGBM、CatBoost。而XGBoost由于耗费内存较多,以及速度等原因,很少使用。lightGBM用的最大,容易上手。CatBoost可能参数不好确定,有的人用的效果还行。

该类模型,主要是找特征,找各种提分的特征,甚至上百个特征。参数微调也只能提非常小的分,如AUC 0.001。增分的办法还有就是lightGBM 堆叠,bagging多个lightGBM,能提0.002左右;或者增加训练集,从10M导100M,能提0.005左右吧。

2.2 LSTM

对每个用户的时间序列(答题记录)进行跟踪预测。

2.3 注意力机制

非自注意力机制,主要是SAKT模型。可参考我以前的文章:https://blog.csdn.net/zephyr_wang/article/details/111828319

只用了三个字段,query=问题id,key和value等于交互记录(问题、是否回答正确)。

2.4 Transformer

注意力机制对时间序列的预测很好,应该是能跟踪用户整个完整的历史情况。也只需要很少的字段。而且可以embedding更多的字段。

主要是SAINT模型,可以参考我以前的文章:
https://blog.csdn.net/zephyr_wang/article/details/109684269
https://blog.csdn.net/zephyr_wang/article/details/109731400

3 总结

各种模型都能取得高分。但是GBDT类的需要大量的特征工程,甚至上百个。而SAKT、SAINT只需要几个字段就很容易获得高分,但是要谨慎选择注意力机制的mask,比如防止看到未来数据的mask等。

你可能感兴趣的:(transformer,人工智能,特征工程)