605. Enefit - Predict Energy Behavior of Prosumers | predict-energy-behavior-of-prosumers
预计会有一些波动,但该方案在不报错的情况下大概可以进入第5到50名之间。以下是我的做法:
训练了2个独立模型:
为最终模型生成每个容量的预估产量特征及其交互。
共76个特征。没有特别之处。
features = ["baseline_pred", "dow", "month", "hour", "capacity_change", "eic_change",
"est_per_capacity", "est", "prod_rate", "cons_rate", "cons_rate2", "consumption_type",
"county", "product_type", "no_holiday", "capacity_lag_2days", "eic_lag_2days"] + weather_forecast_cols
for day in [2, 4, 7]:
features += [f"target_lag_rate{day}", f"target_sum_lag_rate{day}", f"target_lag_{day}days",
f"target_sum_lag_{day}days", f"target_lag_{day}days_norm", f"est_per_capacity_lag{day}_rate"]
for day in [2, 7]:
features += [f"{col}_lag{day}" for col in weather_hist_cols]
对每个 prediction_unit_id,计算 lag 2、3、4 的误差并取其平均值。把 0.2 * avg_error 加到预测中作为校正项。这样可以提升持续低估或高估的情况。
每8天在 GPU 上重新训练 XGBoost 模型。这在出现新的 prediction_unit_id 或 eics 增加时尤为有用。
把最近9个月划分为3个验证折,另外把公开 LB 作为第4折。我的3折 CV 为 35.73,公开 LB 为 61.32。
虽然我的模型分数相对较差,但将我的模型与公开最佳 kernel 进行 80/20 集成后,分数提升到了 59.97。我认为这归功于模型的多样性,这个问题非常受益于多样化的集成。另外,我在 CV 分数上也有提升,尽管提升幅度明显低于公开 LB 的提升。