第13名金牌方案
第13名金牌方案
作者:Tim Yee
比赛:ASHRAE - Great Energy Predictor III
感谢 ASHRAE 提供这个未清洗的数据集!感谢 Kaggle 持续举办比赛。祝贺所有在 LB(排行榜)震动中幸存下来的人!
感谢 @rohanrao、@kailex、@nz0722、@aitude、@purist1024 提供的优秀 Notebooks,它们对我取得这一成绩有直接帮助。
摘要
最终 2 次提交:以下模型的等权融合,外加一些正则化处理。
- ASHRAE Simple Data Cleanup
- ASHRAE Half and Half (原始工作归功于 AC-DC)
- ASHRAE Kfold LightGBM without leak
- Aligned Timestamp LightGBM by Meter Type
公开 LB:0.935(无泄漏估计值为 1.032),采用激进正则化 0.80 和 0.91
公开 LB:0.944(无泄漏估计值为 1.039),采用保守正则化,全部为 0.91
公开 LB:0.950(无泄漏估计值为 1.045),无技巧 —— 我未选择此方案提交
有效的策略
- 数据清洗 —— 垃圾进,垃圾出。这可能是比赛中最重要的环节。我通过绘制热力图手动进行清洗,并深入检查每栋建筑的仪表读数是否合理。我还通过添加以下代码行来反向工程热力图以仅显示零值:
train_df = train_df.query('not (meter_reading != 0)')
- 正则化 ——(我称之为正则化,也许有人会称之为后处理、系数、技巧等)—— 乘以某个小于 1.0 的值。对于激进正则化,我对响应灵敏的仪表使用了 0.80,对响应较差的仪表使用了 0.91。我从 0.95 开始逐个探测每个站点的仪表,记录下哪些仪表能使公开 LB 下降 0.001(即对正则化有响应)。这个想法来自 LANL 地震预测比赛。幸运的是,我有信心如果我试图通过这种方式过拟合 LB,LB 不会让我失望。我在泄漏站点 0、1、2、4、15 上运行了一些测试,以测试各站点仪表对不同数值的反应。开始探测时,0.90-0.95 似乎是相当安全的数值。通过 29 次提交(耗时约 2 周),我在 LB 上提升了约 0.015。随着剩余提交次数减少,我增加了正则化的激进程度,并开始将响应灵敏的站点仪表作为一组提交进行探测,因为没有足够的提交次数来尝试所有可能的值。这使私有 LB 分数降低了 0.004 - 0.005。如果没有正则化,我在私有 LB 上只能排第 35 名,所以这个技巧确实让我的分数有了质的飞跃,最终获得了金牌。
- 特征工程 —— 在 half-and-half 模型中,我添加了一个特征,将
building_id、meter、weekday、hour 分组,并使用完整训练集(数据清洗后)进行均值目标编码。这个想法来自这个