360. 2019 Data Science Bowl | data-science-bowl-2019
首先,感谢 Kaggle 和 Booz Allen Hamilton 举办了这样一场精彩的比赛。这是一个充满挑战的有趣问题,我学到了很多。
以下是我的解决方案和观察:
我在 CatBoost 中使用了排序损失函数(PairLogitPairwise:max_pairs=1000000),树的深度为 6 或 7,在 GPU 上进行训练。其他超参数均为默认值。
我进行了 5 折训练,然后使用 CatBoost 的 sum_model 将这 5 个模型融合以产生平均预测结果。因此,我获得了一个准单模型解决方案。
我尝试预测 accuracy_group。我尝试预测 accuracy,或者 num_correct 和 num_incorrect 作为目标的尝试效果不佳。
5 折截断交叉验证(5-fold truncated cross validation),我在每一折中进行 5 次截断并取分数的平均值。
在模型融合后,我预测整个训练集并优化阈值以最大化 Kappa 系数。我这样做了 5 次,然后取每个样本的中值。
我生成了大约 1000 个特征。其中包括:
以下是通过 SHAP 重要性排名的几个顶级特征,用以说明思路:
lastAssessmentTitlemisses_meanBird Measurer (Assessment)_stage_number_meanaccuracy_mean4070_countSandcastle Builder (Activity)_total_duration_meanIsAssessmentAttemptSuccessfull_Chest Sorter (Assessment)Clip_count6bf9e3e1_count第 5b 组特征(如 Bird Measurer (Assessment)_stage_number_mean)导致训练集严重过拟合。为了缓解这个问题,有两种有效方法:
我提交了 3 个模型的最稳定融合版本,这些模型因所选特征不同而异,在公共排行榜上得分为 0.555-0.56。最终在私有榜单上得分为 0.552,排名第 44 位。
我有几个单模型和融合提交的分数为 0.553 和 0.554,所以我的最终提交非常接近最优,我获得了一枚公平的银牌。