返回列表

6th place solution

554. Playground Series - Season 3, Episode 15 | playground-series-s3e15

开始: 2023-05-16 结束: 2023-05-29 预测性维护 数据算法赛

第六名解决方案

作者:Demyan Pavlyshenko(专家级)
发布日期:2023-05-30

大家好!在本解决方案中,我采用了模型融合技术,融合了5个基于不同插补方法和参数的LGBM模型,并在交叉验证循环内将它们的训练集与原始数据集合并(即数据划分为验证集和训练集时),同时结合了一些特征工程和插补技术。请注意,许多技术已在我的讨论帖中讨论过,我会标注已在讨论中提及的部分以避免重复解释。

特征工程

在特征工程中,我仅对D_eD_gchf_exp应用了对数变换,使其分布略微右偏,因为这些特征原本呈左偏分布(如我的讨论中所分析)。这就是全部的特征工程工作。

特征插补

我融合了5个使用不同特征插补技术的LGBM模型,具体细节将在融合部分说明。但所有模型都应用了以下通用插补技术:

  • 如我的讨论中所述,使用author值来插补geometry
  • 根据@aadinesarkar在讨论中的建议,利用D_eD_h值插补geometry值:
    • 若两者相等,则geometrytube
    • D_e等于15.0或D_h等于120.0,则geometryplate
    • 对于annulus,由于D_e值较少,插补可能不准确,因此我将其省略
  • 类似地,我们反向插补D_eD_h

模型融合

注意事项

  • 所有模型均使用通用插补技术
  • 仅调整以下参数:learning ratenum_leavesmax_depthcolsample_bytreesubsamplemin_child_samples
  • 将训练集与原始数据集合并(验证集必须来自合成数据集)
  • 当提到"不对<特征>进行插补"时,并不意味着插补器不拟合这些特征,而是指保持这些特征原样

具体模型配置如下:

  • lgbm_without_imputation:不使用任何特征插补的LGBM模型(除通用插补外),通过optuna进行优化
  • lgbm_lgbmimputer1:使用LGBMImputer(n_iters=200)插补数据训练的模型,但不插补D_hlengthD_e(仍使用通用插补)。采用lgbm_without_imputation的调优参数,调整了max_depthmin_child_samples
  • lgbm_lgbmimputer2:使用LGBMImputer(n_iters=200)插补数据训练的模型,但不插补mass_fluxD_elengthD_h。采用lgbm_without_imputation的调优参数,调整了max_depthmin_child_samples
  • lgbm_lgbmimputer3:使用LGBMImputer(n_iters=200)插补数据训练的模型,但不插补mass_fluxD_eD_h。直接采用lgbm_without_imputation的调优参数
  • lgbm_lgbmimputer4:使用IterativeImputer(LinearRegression(), max_iter=20, initial_strategy='constant')插补数据训练的模型,但不插补mass_fluxpressure。采用lgbm_without_imputation的调优参数,仅调整了max_depth
  • 最终使用无截距的线性回归模型融合这些模型

就这样!另外,我曾考虑通过最小化另一个预测chf_exp特征模型的损失来调参,因为x_e_out是预测chf_exp最重要的特征。但分数没有提升,所以就没有采用这个复杂的方法。

完整实现请参考我的解决方案笔记本

祝后续比赛好运!

同比赛其他方案