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.youkuaiyun.com/zephyr_wang/article/details/111828319
只用了三个字段,query=问题id,key和value等于交互记录(问题、是否回答正确)。
2.4 Transformer
注意力机制对时间序列的预测很好,应该是能跟踪用户整个完整的历史情况。也只需要很少的字段。而且可以embedding更多的字段。
主要是SAINT模型,可以参考我以前的文章:
https://blog.youkuaiyun.com/zephyr_wang/article/details/109684269
https://blog.youkuaiyun.com/zephyr_wang/article/details/109731400
3 总结
各种模型都能取得高分。但是GBDT类的需要大量的特征工程,甚至上百个。而SAKT、SAINT只需要几个字段就很容易获得高分,但是要谨慎选择注意力机制的mask,比如防止看到未来数据的mask等。

本文介绍知识跟踪赛题,根据学生历史学习、答题记录预测能否答对下一题,涉及三张数据表,需在规定时间和内存条件下完成预测。还介绍比赛用到的模型,如GDBT类、LSTM、注意力机制和Transformer,最后总结各模型特点。
1775





