返回列表

17th Place Solution | Only 1 Catboost

561. Playground Series - Season 3, Episode 17 | playground-series-s3e17

开始: 2023-06-13 结束: 2023-06-26 预测性维护 数据算法赛
作者: datadote | 发布日期: 2023-06-27 | 得票数: 13 | 竞赛排名: 第17名

仅使用1个Catboost模型的17名解决方案

本地交叉验证 私有榜 公开榜
0.98125 0.98426 0.97764

以下是我的笔记,标有星号的可能是关键区别点。

数据集:

  • *使用训练数据及原始训练数据:+0.002
  • 仅移除id和UID列
  • 从合并的训练数据集中删除重复项
  • 3个新特征。对公开排行榜似乎有帮助(+0.004),但对私有排行榜无明显差异(约0.000)
    1) tmp['tratio'] = tmp['proc_temp'] / tmp['air_temp']
    2) tmp['torque_mult_rspeed'] = tmp['torque'] * tmp['rspeed']
    3) tmp['torque_mult_toolwear'] = tmp['torque'] * tmp['tool_wear']
  • 使用LabelEncoder对类别进行编码
  • 未处理数据集不平衡问题。Boosting算法应能处理此问题
  • 未进行特征缩放。Boosting算法应能处理此问题
  • 将数据按80%训练、20%验证的比例划分。也尝试了5折分层kfold,但80/20划分已足够,且迭代更快
  • 对于最终模型,使用全部数据进行训练,并在Catboost的最佳迭代停止

建模

  • *仅使用1个Catboost模型。选择Catboost对这个数据集很重要。Catboost通常比Xgboost或LightGBM略准确(尽管可能更慢)。并非总是如此,有些比赛中LightGBM表现更好。集成多个Catboost可能会更好,但我没有尝试
  • *使用Optuna + Wandb进行超参数搜索,并选择最佳参数
  • 连续列:['air_temp', 'proc_temp', 'rspeed', 'torque', 'tool_wear', 'tratio', 'torque_mult_rspeed', 'torque_mult_toolwear']
  • 类别列:['PWF', 'pid', 'TWF', 'Type', 'OSF', 'RNF', 'HDF']
    (pid = product id)
  • *使用产品ID,并确保使用"cat_features"参数。(+0.013)
  • *CPU精度 > GPU精度。Catboost CPU和GPU有一些不同的设置。CPU也是确定性的,而GPU不是
  • 使用较小的学习率(0.025,相比默认的0.1)
  • 对于Catboost,增加border_count参数可能有帮助(CPU默认为254)

最后,LightGBM应该能够接近Catboost的性能,但需要为LightGBM添加"categorical_feature"参数。我在最后几天才发现这一点。

同比赛其他方案