返回列表

20th place solution 😂

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

开始: 2019-10-24 结束: 2020-01-22 学习效果预测 数据算法赛
第20名解决方案 😂

第20名解决方案 😂

作者: e-mon, Akira Sasaki, konbuiyon, hatry
比赛排名: 第20名

恭喜所有的获胜者!
这是我们解决方案的简要总结。

特征工程

  • 有效的特征
    • 是否为第一次评估
    • 归一化计数特征:每个事件代码和ID的计数 / 游戏会话时长
    • 评估是否按照游戏设计的顺序解决
    • 聚合统计
      • 每种类型的持续时间(均值、标准差、最小值)
      • 每种类型的记录数量(均值、标准差、最小值)
  • 无效的特征
    • 最后的活动、最后的游戏统计
      • 正确、错误、未命中、回合、等级等...
    • 最后的类型、标题历史序列

模型

使用QWK(二次加权Kappa)来调整模型太困难了,所以我们决定仅使用RMSE来评估模型性能。
使用Group 5折交叉验证作为验证方法。我们对验证集应用了截断处理。

  • 第一层模型
    • lgbm: CV 1.0395 +/- 0.031
      • 目标函数:rmse
      • 3个随机种子平均
    • xgb: CV 1.0457 +/- 0.028
      • 目标函数:rmse
      • 3个随机种子平均
    • catboost: CV 1.0430 +/- 0.028
      • 目标函数:rmse
    • NN (神经网络): CV 1.0423 +/- 0.029
      • 损失函数:rmse + smooth l1 loss
      • RNN层:GRU + Attention
        • 输入为最后6个历史的序列
      • Dense层
      • 3个随机种子融合
      • NN模型的性能与提升树模型几乎相同,但相关性较低。
  • 第二层模型:PublicLB 0.538 PrivateLB 0.556
    • ElasticNet: CV 1.0361 +/- 0.028

此外,虽然我们没能将其包含在内,但在我们的实验中,使用准确率分类目标的lgbm是效果最好的模型。

阈值确定

我们花费了最多的时间在如何确定阈值上。我们准备了一些想法并进行了实验。
我们对每个installation_id的每折OOF(袋外预测)进行了10次有放回采样(我们称之为OTV)。
然后,我们对OOF进行了5折交叉验证,应用了以下阈值方法:

  • 1. 确认验证集的标签分布与OOF、OTV真实标签分布的一致性(许多内核这样做)
  • 2. 对OOF、OTV应用优化取整器并获得阈值,然后确认验证集标签分布与优化后的OOF、OTV标签分布的一致性。
  • 3. 对OOF、OTV应用优化取整器并获得阈值,然后将阈值应用于验证集。

在我们的实验中,使用OTV的第2种方法几乎获得了最高分,但有时使用OOF的第3种方法效果更好。
所以我们选择了两种阈值方法作为最终提交。
实验结果接近PrivateLB。
上述实验的结果与PrivateLB的结果几乎相同。

实验结果图

训练数据集增强

通过测试集扩展训练集的方法仅用于训练每折模型,并未用于确定阈值或作为验证集。

同比赛其他方案