返回列表

3rd private 6th public | Brute-force ensemble| Post-processing

557. Playground Series - Season 3, Episode 16 | playground-series-s3e16

开始: 2023-05-30 结束: 2023-06-12 生命科学 数据算法赛
3rd private 6th public | 暴力集成方法 | 后处理

3rd private 6th public | 暴力集成方法 | 后处理

作者:Ravi Ramakrishnan | 排名:第3名(Private Leaderboard)

竞赛:Kaggle Playground Series S3E16(螃蟹年龄预测)

大家好,

感谢Kaggle组织这次挑战/活动!参与这场精彩的回归竞赛是一次非常棒的经历。同时,也感谢各位参赛选手共同创造了这段难忘的回忆。

以下是我的解决方案概述:

数据工程

  1. 我以这里提供的数据生成笔记本为基础,生成了大量不同参数的样本。将这些合成数据与原始数据合并后用于模型训练。
  2. 使用了以下额外特征(来自讨论帖,特别感谢@pandeyg0811的贡献):
    a. 肉质产量(Meat yield)
    b. 表面积(Surface Area)
    c. 重量/去壳重量(Weight/Shuck Weight)
    d. 伪BMI(Pseudo BMI)
    e. 重量/长度平方(Weight/Length Squared)
    f. 内脏比(Viscera Ratio)
  3. 曾尝试对重量列进行log(1+x)变换,但效果不明显。

模型策略

  1. 采用回归模型方法(而非分类方法),使用分层5折交叉验证。验证仅在竞赛数据上进行,CV分数与Public LB相关性良好。
  2. 训练了多个候选模型,每轮使用6-10个特征的不同子集。采用相同的OOF结构,但每轮使用不同的特征组合。
  3. 基础模型包括:XgBoost、LightGBM、CatBoost、Gradient Boosting Machine、HistGradientBoostingRegressor
  4. 使用Optuna和LAD回归对预测结果进行集成调优。发现后处理(四舍五入到最接近的整数)对CV和LB分数都有显著提升。
  5. 未对训练数据预测结果进行后处理。大多数模型预测范围集中在4-20年,未使用原始数据修正预测结果。尝试这样做时反而降低了分数。

未奏效的方法

  1. TabNet回归器
  2. 随机森林
  3. Extra Tree
  4. Ridge/LASSO等线性方法

可以改进的地方

  1. 最终提交选择可能不够理想。我的最佳Private LB提交本可获得第2名,它在Public LB表现略差但CV分数更好。最终选择了Public LB最优的提交。
  2. 可以更创造性地利用原始训练数据优化边界情况预测。最后几天时间不足未能充分尝试,后续会作为个人实验继续研究。

经验总结

  1. 相信CV
  2. 永不违背第1条
  3. 从第一天就建立良好的代码管道,混乱的结构会阻碍在多场竞赛中的进展
  4. 快速失败:在初期进行大量快速实验并制定策略
  5. 只保留有价值的特征,远离破坏性特征。本次竞赛让我深刻体会到这一点
  6. 最后一天的提交未必是最好的。我的最终提交都是在截止日前很久完成的

祝大家学习愉快,期待在下一次活动中再见!

同比赛其他方案