返回列表

6th place solution

615. Learning Agency Lab - Automated Essay Scoring 2.0 | learning-agency-lab-automated-essay-scoring-2

开始: 2024-04-03 结束: 2024-07-02 智能评测 数据算法赛
第 6 名解决方案 - Piotr Gabrys

第 6 名解决方案

作者: Piotr Gabrys (MASTER)
发布日期: 2024-07-03
竞赛排名: 第 6 名

致谢

我要感谢组织者和 Kaggle 工作人员创造了如此有趣的比赛!此外,我要感谢 @paweljankiewicz 介绍我加入 Kaggle,感谢 @cdeotte@cpmpml 对社区的贡献(我从你们那里学到了很多!),感谢 @narsil 在波兰组织 Kaggle/徒步活动,以及感谢 @thedrcat 提供的灵感和比赛想法(我在上次活动中遇到了 Darek)。最后,我要感谢我的妻子对我的包容。

验证

我做了大量的 LB 探测以及“纯”Kaggle 数据集与 Persuade 2.0 数据集之间的比较。主要发现:

  • 测试集中有 5 个主题,比例如下(很好奇我是否正确):
  1. 无人驾驶汽车 - 35.6%
  2. 面部动作编码系统 - 24.6%
  3. 探索金星 - 19.6%
  4. 火星上的脸 - 12.6%
  5. ‘一个骑波浪的牛仔’ - 7.6%
  • Persuade 2.0 和仅 Kaggle 的记录是不同的。
  • 测试集中没有来自 Persuade 2.0 数据集的记录。
  • 所有主题都出现在测试集的公共 LB 部分。我的假设是它们也出现在数据集的私有部分。

我以如下方式使用了这些发现:

  • 我在 5 个主题的仅 Kaggle 文章上进行了验证,并根据预期的测试集权重调整了权重。你可以在这个 笔记本 中找到权重计算。我认为不在测试集中的 persuade 记录和主题的验证权重为 0。
  • 我在所有训练数据上进行了训练,但添加了一个 persuade 二进制标志作为特征。在测试集中,所有记录的 persuade=0
  • 我使用了按分数分层的 StratifiedKFold

尽管进行了上述所有努力,我仍然无法获得强大的 CV-LB 相关性。我的 0.836 解决方案是基于 50% CV 和 50% LB 分数选择的。我有一个更好的 PB 解决方案,得分为 0.837

解决方案

我使用了 这个 笔记本作为我的基线。我的修改:

  1. 如上所述的验证。
  2. persuade 标志。
  3. 仅在测试集上训练向量化器(TfidfVectorizer, CountVectorizer)。
  4. 将 DeBERTa 最大推理长度增加到 1536
  5. 将 DeBERTa OOF 转换为 CDF。我的直觉是,这对于优化 QWK 目标的基于树的模型来说会容易得多。
  6. 添加了 textstat 和基于 spaCy 的特征(一篇文本中句子之间的相似度、单词、句子和段落统计)。
  7. 重新标记 - 如果 DeBERTa OOF 与真实标签之间的差异高于 2,则修改用于 LGBM 训练的标签(但原始标签保留用于验证):
train_feats['pred'] = deberta_oof.argmax(1) + 1
train_feats['score_mod'] = train_feats['score']
train_feats.loc[(train_feats.score - train_feats.pred) > 2, 'score_mod'] = train_feats.loc[(train_feats.score - train_feats.pred) > 2, 'pred'] + 1
train_feats.loc[(train_feats.score - train_feats.pred) < -2, 'score_mod'] = train_feats.loc[(train_feats.score - train_feats.pred) < -2, 'pred'] - 1

什么方法不起作用(对我来说):

  1. 数据增强和新模型训练(我在这里花了 80% 的时间)
  2. 阈值优化
  3. 额外的拼写检查字典
  4. 半监督学习

结论

我在数据上花了大量时间:EDA、阅读文章、比较 Kaggle 和 Persuade 2.0 数据集、LB 探测、尝试各种增强技术等。这使我能够改进基线(变化很微妙)并选择几乎最优的提交(PB 上第 2 好)。第 6 名的解决方案得分为 0.817(LB 上 1,200+ 名)。0.824 的解决方案(LB 上第 25 名)得分为 0.832(PB 上 500+ 名)。我也想承认运气在这里的作用(可能很大)。获得我的第一枚金牌花了我 6 年时间,我很感激也很自豪终于做到了。

同比赛其他方案