562. Predict Student Performance from Game Play | predict-student-performance-from-game-play
感谢我的队友们的努力,我从他们身上学到了很多。幸运的是,我们并没有过多地互相指责。现在,我想向大家介绍我的解决方案。
我的建模方法是一种"累积"式的:使用0-4部分的数据生成q1-q3的训练集,使用0-4和5-12部分的数据生成q4-q13的训练集,使用0-4、5-12和13-22部分的数据生成q14-q18的训练集。问题本身也是一个特征。它的优点在于我不需要保存"历史"数据,而且这种方法节省时间,推理大约需要40分钟。

以下是我的特征工程思路:
基础聚合特征:每个组、每个级别、每个事件名称、……、每个文本的eclipse_time_diff的总和、计数和最大值;在特定room_fqid和事件名称下的eclipse_time_diff的总和、计数等。
行为变化特征:房间变化的次数,以及每个级别下的房间变化次数;文本ID变化的次数,以及每个级别下的文本ID变化次数等。

在这张图中,我们可以看到一种房间变化行为,我们计算变化的次数和平均值,来表征一个人理解和推理的能力。其中一些特征具有相当高的特征重要性。
元特征:除了基础的groupby特征工程,我还为5-12和13-22组添加了元特征。有两种使用方式:
在我的部分中,我使用了9个模型进行集成。它们是4个xgboost、1个lightgbm、2个dart、2个catboost。在私有榜上表现最好的单个模型是dart,达到了Public 0.704和Private 0.704。在公开榜上表现最好的模型是xgboost,达到了Public 0.705和Private 0.698。我的dart笔记本Game-Play-LGBDart[INFER] Private LB 0.704
我认为这次比赛最困难的部分是建立交叉验证策略、选择阈值和提交结果。正如你所见,我的dart模型和xgboost模型在相同的交叉验证策略下表现差异很大,这超出了我的预期。我甚至没有信心给dart模型更大的权重。我相信很多队伍并没有选择他们最好的结果。
最后,我要向所有分享想法的kagglers致敬。下次比赛再见。