返回列表

22th place solution

604. The Learning Agency Lab - PII Data Detection | pii-detection-removal-from-educational-data

开始: 2024-01-17 结束: 2024-04-23 数据安全与隐私 数据算法赛

解决方案

您好,Kaggle 参赛者。

首先,我们要感谢主办方组织了如此出色的比赛。非常感谢。

同时感谢 @takuji@rheinmetall 参与了夜间讨论。非常感谢。

Shake Down 让人很沮丧,但我非常享受这次比赛。

方案概览

要点

  • 12 个模型集成
  • 所有模型的折(fold)均是随机的。
模型骨架 训练数据集 CV 公开 LB
deberta-v3-large train.json, pjmath, nbroad 0 0.971 0.964
deberta-v3-large train.json, pjmath, nbroad 1 0.953 未提交
deberta-v3-large train.json, mpware(no-i-user) 0 0.963 0.941
deberta-v3-large train.json, mpware(no-i-user) 1 0.944 未提交
deberta-v3-large train.json, mpware(no-i-user) 2 ? 未提交
deberta-v3-large train.json, mpware(no-i-user) 3 ? 未提交
deberta-v3-large train.json, mpware 0 0.961 0.953
deberta-v3-large train.json, mpware 1 0.970 未提交
deberta-v3-large train.json, tonya 0 0.879 (可能为bug) 0.959
deberta-v3-large train.json, tonya 1 0.941 未提交
deberta-v3-large train.json, nbroad 0 0.949 未提交
deberta-v3-large train.json, nbroad 1 0.961 未提交

数据集引用

如何选择验证集

  • 所有文本先根据是否出现各类标签(pattern)进行分类,然后对全部数据按该模式进行分层划分。
  • 训练集 : 验证集 = 0.5 : 0.5
    • 通过将训练集和验证集比例设为 50/50,CV 与 LB 之间有了一定相关性。

成功的做法

  • 如果 “O” 的概率低于 0.60,则输出概率仅次于 “O” 的标签。
  • “\n” 被加入到分词器中。
    • CV: +0.030, LB: +0.009
    • 在 train.json 中,token “\n” 全部被标记为 “I‑STREET_ADDRESS”!
  • 从 train.json 中删除了仅含 “O” 的数据。
    • CV: -0.030, LB: +0.006
  • 将分词器的截断(truncation)设置为 False。
    • CV: +0.020, LB: +0.008
  • 每个模型的折是随机生成的。
    • 不再固定折,每次创建模型时都会重新划分。
    • LB: +0.008(相对于折在各模型之间对齐时的提升)
  • 对 BIO 前缀的后处理
    • O, I‑[PII] → O, B‑[PII]
    • B‑[PII], B‑[PII] → B‑[PII], I‑[PII]
    • I‑[PII], B‑[PII] → I‑[PII], I‑[PII]
    • LB: +0.005
  • 对不可能预测模式的后处理
    • 例如:
      • 如果预测的 NAME_STUDENT 不符合驼峰命名,则改为 “O”。
      • 如果预测的 ID_NUM 包含特殊字符,则改为 “O”(正则 r'[!@#$&%?^+=*<>]')。
      • 经过大量错误分析,我们发现了上述模式。
  • 模型集成
    • LB: +0.005(从 1 个模型到 3 个模型)
    • LB: +0.004(从 4 个模型到 8 个模型)
  • ONNX
    • 最多可提交模型数:10 → 12

未生效的做法

  • 纠正 TokenClassification 标签顺序
    • 例如:
      • B‑[PII], B‑[PII], I‑[PII] → B‑[PII], I‑[PII], I‑[PII]
  • 生成包含额外非学生姓名的数据集并加入训练
  • 为每种 PII 类型单独调参
  • 使用 LightGBM 的二阶段模型
    • 将 DeBERTa 预测作为特征
    • 将 DeBERTa token 概率转换为 Spacy token 概率
  • 对 test.json 进行伪标签

作者:sinchir0 | 排名:第 22 名 | 发布日期:2024-04-24

同比赛其他方案