竞赛元策略

竞赛元策略


一、比赛选择策略

1.1 比赛分类与金牌难度

比赛类型 参赛人数 金牌门槛 特点
Featured(Featured) 2000~5000+ 前50名 主流比赛,竞争激烈,含金量最高
Research 500~2000 前20名 学术导向,数据量大,周期长
Playground 500~1500 前30名 入门级,适合练手
Code Competition 1000~3000 前40名 提交代码而非预测值,工程要求高
Annual(年度赛) 3000~6000+ 前100名 参赛人数最多,shake-up最大

1.2 比赛选择决策

维度 容易拿牌的比赛 难拿牌的比赛
领域 冷门领域(推荐系统、时序) 热门领域(NLP、CV)
数据量 大数据量(筛选空间大) 小数据量(随机性大)
评价指标 AUC/F1(稳定) Accuracy/RMSE(敏感)
参赛人数 <1000人 >3000人
赛程 3个月(迭代充分) 1个月(时间不够)
数据类型 结构化(确定性高) 非结构化(随机性大)

1.3 投入产出比评估

维度 高ROI 低ROI
领域匹配 自己擅长的领域 从零学习的领域
计算资源 CPU/单GPU即可 需要多GPU集群
baseline差距 baseline分数低(提升空间大) baseline已接近天花板
公开信息 Discussion活跃(可借鉴) 信息封闭(独自摸索)
时间窗口 比赛刚开始1~2周 比赛快结束才加入

二、比赛时间管理

2.1 标准赛程节奏(3个月)

阶段 时间 核心任务 产出
第1周 Day 1~7 赛题理解+EDA+Baseline提交 可提交的baseline
第2~3周 Day 8~21 数据分析+特征工程+模型选择 超越baseline的方案
第4~6周 Day 22~42 模型优化+训练策略+数据增强 稳定CV的单模型
第7~9周 Day 43~63 模型融合+伪标签+后处理 多模型融合方案
第10~11周 Day 64~77 冲刺提分+规则修正+TTA 最终提交方案
第12周 Day 78~84 提交策略+shake-up防范 选择最终提交

2.2 各阶段时间分配原则

原则 说明
前期重速度 第1周必须提交,即使分数很低,确认提交流程无误
中期重迭代 每次改动都要在验证集上评估,确认有效再深入
后期重稳定 最后2周不做大改动,只做微调和融合
每天有产出 每天至少跑一个实验,保持节奏感
记录一切 每次实验记录参数、CV分数、LB分数

2.3 时间陷阱

陷阱 表现 解决方案
过度EDA 花2周做EDA还没提交 EDA 3天内完成,先提交baseline
单模型死磕 一个模型调1周不换 单模型提升<0.1%就换方向
盲目堆模型 融合20个模型没提升 5~8个多样性模型即可
最后才融合 最后3天才开始融合 提前2周开始融合实验
忽视规则 最后发现违反规则被取消 开赛第一周仔细读规则

三、LB Probing与Shake-up防范

3.1 Public/Private分裂机制

维度 说明
Public LB 用测试集的一部分(通常30%~40%)评估,比赛期间可见
Private LB 用测试集的剩余部分评估,比赛结束后才公布
分裂方式 随机分裂 / 按时间分裂 / 按ID分裂
shake-up Public和Private排名不一致的现象,可能上下浮动几十名

3.2 LB Probing技巧

技巧 说明
全1提交 提交全1预测,探测Public测试集的正样本比例
全0提交 提交全0预测,探测负样本比例
单样本探测 只改一个样本的预测,观察LB变化,推断该样本是否在Public中
随机提交 多次随机提交,估计Public测试集的分布
分裂推断 通过多次提交推断Public/Private的分裂方式(随机/时间/ID)

3.3 Shake-up防范策略

策略 说明
信任CV CV分数比Public LB更可靠,选择提交时以CV为主
对抗验证 确保验证集与测试集分布一致
多折一致性 5折CV各折分数方差小,说明模型稳定
避免过拟合Public 不要针对Public LB反复调参
选择稳定的提交 选择CV和Public LB都高的提交,而非Public最高但CV一般的
简单模型兜底 准备一个简单但稳定的模型作为保底提交

3.4 Shake-up常见原因

原因 说明 防范
Public/Private分布不同 时间分裂导致分布漂移 对抗验证
过拟合Public 针对Public反复调参 以CV为主
随机性 小测试集的随机波动 多折验证降低方差
数据泄露 利用了Public特有信息 不依赖泄露信息
伪标签过拟合 伪标签偏向Public分布 伪标签置信度阈值提高

四、团队协作策略

4.1 单人vs组队

维度 单人 组队(2~3人)
灵活性 高,随时换方向 低,需协调
实验吞吐 低,串行 高,并行
融合多样性 低,思路单一 高,不同视角
沟通成本 有,需定期同步
金牌概率 中(需全能) 高(互补优势)

4.2 团队分工模式

模式 分工方式 适用场景
按阶段分工 A做特征工程,B做模型训练,C做融合 各有所长
按模型分工 A训BERT,B训RoBERTa,C训DeBERTa 模型融合赛
按实验分工 A做主实验,B做消融实验,C做EDA 快速迭代
按领域分工 A做NLP部分,B做特征部分 跨领域赛题

4.3 团队协作要点

要点 说明
统一验证集 所有人用相同的验证集划分,确保结果可比
统一代码规范 输入输出格式统一,方便模型融合
每日同步 每天15分钟同步进展,避免重复工作
实验记录共享 用共享表格记录每次实验的参数和结果
提前融合 不要最后一天才合并,提前2周开始融合实验

五、提交策略

5.1 提交选择原则

原则 说明
CV优先 选择CV分数最高的提交,而非Public LB最高的
CV+LB一致 选择CV和LB都高的提交,最稳定
不同策略分散 2次提交选不同策略(如一个融合、一个单模型)
简单模型兜底 一次提交用复杂融合,另一次用简单稳定模型

5.2 提交时机

时机 策略
比赛初期 尽早提交,确认流程,建立baseline
比赛中期 每次重大改动后提交验证LB
比赛末期 减少提交频率,避免过拟合LB
最后1天 选择最终2次提交,不再改动

5.3 Code Competition提交策略

策略 说明
提前测试 提交代码前在本地模拟运行,确保无报错
内存控制 推理时用进程隔离释放内存,不同时加载所有模型
时间控制 确保推理时间在限制内,预留20%余量
模型蒸馏 大模型蒸馏到小模型,减少推理时间和内存
降级方案 准备一个轻量模型,主模型超时时自动切换

六、竞赛心态管理

阶段 常见心态问题 应对策略
初期 看到别人高分焦虑 专注自己的baseline,不攀比
中期 提升停滞想放弃 换个方向尝试,或休息1天
后期 融合没提升焦虑 回归CV分数,减少无效实验
末期 shake-up恐惧 信任CV,选稳定提交
赛后 没拿牌失落 复盘总结,下次改进

七、竞赛学习路径

7.1 新手到金牌的进阶路线

阶段 目标 时间 行动
入门 完成一次完整提交 1~2周 Playground赛+baseline
青铜 Top 50% 1~2月 跟着Top方案复现
白银 Top 25% 2~3月 独立完成特征工程+模型选择
黄金 Top 10%(金牌) 3~6月 融合策略+竞赛元策略+领域深耕
大师 Top 1% 6~12月 多领域精通+创新方法

7.2 学习资源

资源 用途
Kaggle Discussion 比赛中的方案分享和技巧讨论
Kaggle Notebooks 可运行的代码和方案
Kaggle Master Grandmaster访谈 顶级选手的经验分享
Kaggle Ensembling Guide 融合策略经典文章
各领域SOTA论文 前沿方法学习