返回列表

44 place writeup(Catboost ranking with eventdata)

360. 2019 Data Science Bowl | data-science-bowl-2019

开始: 2019-10-24 结束: 2020-01-22 学习效果预测 数据算法赛

第44名方案分享 (使用Event Data的Catboost排序)

作者:Victor Zaguskin
比赛排名:第44名

首先,感谢 Kaggle 和 Booz Allen Hamilton 举办了这样一场精彩的比赛。这是一个充满挑战的有趣问题,我学到了很多。

以下是我的解决方案和观察:

损失函数和框架

我在 CatBoost 中使用了排序损失函数(PairLogitPairwise:max_pairs=1000000),树的深度为 6 或 7,在 GPU 上进行训练。其他超参数均为默认值。

我进行了 5 折训练,然后使用 CatBoost 的 sum_model 将这 5 个模型融合以产生平均预测结果。因此,我获得了一个准单模型解决方案。

我尝试预测 accuracy_group。我尝试预测 accuracy,或者 num_correctnum_incorrect 作为目标的尝试效果不佳。

验证

5 折截断交叉验证(5-fold truncated cross validation),我在每一折中进行 5 次截断并取分数的平均值。

阈值选择

在模型融合后,我预测整个训练集并优化阈值以最大化 Kappa 系数。我这样做了 5 次,然后取每个样本的中值。

特征生成

我生成了大约 1000 个特征。其中包括:

  1. event_codes 和 event_ids 的总体累积计数器。
  2. 各种累积准确率统计数据。
  3. 时间戳的月份和小时。
  4. 准确率的线性外推。
  5. 从事件数据(event data)中提取的特征:
    • a. 除了坐标之外,每个具有数值的键的总体总和及平均值。
    • b. 按事件标题(event title)分组的相同统计数据。

以下是通过 SHAP 重要性排名的几个顶级特征,用以说明思路:

  • lastAssessmentTitle
  • misses_mean
  • Bird Measurer (Assessment)_stage_number_mean
  • accuracy_mean
  • 4070_count
  • Sandcastle Builder (Activity)_total_duration_mean
  • IsAssessmentAttemptSuccessfull_Chest Sorter (Assessment)
  • Clip_count
  • 6bf9e3e1_count

特征选择

第 5b 组特征(如 Bird Measurer (Assessment)_stage_number_mean)导致训练集严重过拟合。为了缓解这个问题,有两种有效方法:

  1. 通过 SHAP 值选择前 150-200 个特征。
  2. 使用截断对抗验证丢弃特征,直到 ROC AUC 变为约 0.5。这留下了 863 个特征。

提交选择

我提交了 3 个模型的最稳定融合版本,这些模型因所选特征不同而异,在公共排行榜上得分为 0.555-0.56。最终在私有榜单上得分为 0.552,排名第 44 位。

我有几个单模型和融合提交的分数为 0.553 和 0.554,所以我的最终提交非常接近最优,我获得了一枚公平的银牌。

同比赛其他方案