第4名(私榜)/第7名(公榜)方案分享
第4名(私榜)/第7名(公榜)方案分享
作者: Sergei Fironov (Grandmaster) | 团队: Crystal Cave Miners
非常感谢 Booz Allen Hamilton 举办这场精彩的比赛,也感谢所有参与者分享有趣的想法和讨论!
我们从公榜第7名跃升至私榜第4名。我们选定的最佳提交成绩为私榜 0.561,公榜 0.572。这是神经网络的融合结果。第二个方案是一个三层堆叠模型,成绩为私榜 0.560,公榜 0.566。
首先分享一些思路
- 测试集可以使用与训练集相同的流程进行标记,并用于训练。
- 对事件序列使用 TfIdf。每个 event_id 可以编码为 title + event_code + correct_flag + incorrect_flag。之后,我们可以将 installation_id 的历史记录视为标记序列,并对其进行 tfidf 训练。在训练过程中,我们对当前评估之前的实际标记序列应用转换器。
- 一些片段和其他标题对于评估准确性非常重要。也许它们的顺序并不那么重要,但 RNN 架构可以很好地处理它们在用户历史记录中的存在。
- 我们的数据量很少,稳定性比实际得分重要得多。如果改变列的顺序会导致得分下降,那说明我们的做法有问题。
模型
神经网络
Tfidf 特征 + 基于标题序列(最后 64 个)的 RNN,附带一些额外特征:
- 标题的嵌入维度 dim=7。
- 标题期间的正确尝试次数。
- 标题期间的错误尝试次数。
- 2 和 3 的比率。
- 标题开始之间时间间隔(秒)的对数。
- 上一个类似标题中的正确尝试次数。
- 上一个类似标题中的错误尝试次数。
- 7 和 6 的比率。
- (9) 我尝试了很多次将计数器按原样包含在模型中。最后我放弃了,但这些模型在私榜上表现更好。
大多数单一网络的得分都在 0.56+ 区间。对我来说最有趣的一个模型拥有相同的公榜和私榜分数:
https://www.kaggle.com/sergeifironov/bowl-stabilize-coefs-cntrs-all5
树模型
Lightgbm, Xgb, Catboost。(即将补充)
堆叠
- 第 0 层:NN 折中折模型(5 个外层折叠,5 个内层折叠),lgbm,catboost。
- 第 1 层:MLP, Lightgbm。
- 第 2 层:Ridge。
参考讨论:https://www.kaggle.com/c/data-science-bowl-2019/discussion/127312
验证
我在这个话题中写了很多:https://www.kaggle.com/c/data-science-bowl-2019/discussion/125001,但在比赛快结束时,我放弃了让它与公榜相关的尝试,转而使用了一个非常简单的验证方法,根本没有使用 installation id 分组。
对我们无效的方法
- Transformers、GPT-2 和 BERT 向量,基于预测 event_id、title、title+accuracy_group 等任务进行训练。它们没用。
- 图神经网络。
- 事件序列上的 Transformer。对于这么小的数据量来说,它太臃肿了。