项目背景

  • 比赛任务:预测蒙西电网次日96个时间点(15分钟分辨率)的实时电价,并制定储能充放电策略最大化日收益

  • 储能参数:容量8000,充放电功率±1000,每次连续8个时间点,初始SOC=0

技术方案

  • 模型:LightGBM + sklearn GradientBoostingRegressor 融合

  • 超参搜索:Optuna TPE 采样器,Walk-forward 3折交叉验证

  • 后处理:动态振幅增强(围绕均值放大预测波动)

  • 充放电策略:前缀和 O(n) 算法,每天选最优充电/放电时段

  • 特征数量:108个(含气象、时间、滞后、交互、误差特征)

尝试过程

第一阶段:基础优化

序号 尝试内容 结果 结论
1 安装 Optuna(之前未安装,超参搜索未生效) RMSE 0.592->0.592,收益提升 关键发现:之前所有调参都白费,Optuna根本没跑
2 添加 CDD/HDD 温度特征 MAE 0.458->0.456,日收益 14896->15193 小幅提升
3 添加特征交互项(cdd_x_wind, netload_x_renew 等) 日收益 15193->15327 小幅提升

第二阶段:模型融合

序号 尝试内容 结果 结论
4 添加 GBR 融合模型 + 权重自动搜索 RMSE 0.563,日收益 17167 显著提升,GBR 权重=1.0,纯GBR优于LGB
5 n_estimators 1000->5000 本地RMSE更好,云端分数反而下降 过拟合,树太多不适合

第三阶段:振幅增强

序号 尝试内容 结果 结论
6 振幅范围 (1.0, 1.5) -> (1.0, 2.5) 本地日收益 17167->28801 大幅提升
7 振幅范围扩大到 (1.0, 3.0) 本地日收益 33361,但云端分数下降 过拟合,3.0 对云端测试集过大
8 各向同性回归校准(isotonic regression) 日收益 28801->8946 失败,验证集和测试集分布不同

第四阶段:提交实验

序号 尝试内容 云端分数 结论
9 基线提交 4827.06 起点
10 Optuna 随机种子 + amplitude 2.5(运气好) 5176 最佳运气分
11 seed=42 固定种子 x3 次 4953.60 x3 三次完全相同,确定性种子导致 Optuna 结果一致
12 去掉 Optuna 种子(随机探索) 4953.60 Optuna 40轮收敛到相似参数

第五阶段:深度调优

序号 尝试内容 结果 结论
13 5个种子对比(42/123/2024/777/888) RMSE 完全相同,利润微小差异 LGB 模型对种子不敏感,差异仅来自 GBR 随机性
14 删除误差特征(测试集恒为0) RMSE 0.562->0.596,日收益 34735->32835 失败,误差特征虽测试集为0,但训练时学到了有用模式
15 振幅 2.5->3.5 日收益 34735->48629,云端 4953->5251 有效,振幅是最直接的提升手段
16 振幅 3.5->4.0 + 种子 42->888 日收益 55560,云端 5279 当前最佳

关键发现

  1. 振幅是最大杠杆:振幅从 2.5 -> 3.5 -> 4.0,云端分数持续上升(5176 -> 5251 -> 5279)

  2. 本地指标 != 云端分数:RMSE 变差但分数更高,说明预测的相对排序(谁高谁低)比绝对精度更重要

  3. Optuna 随机性是主要变量:同一代码不同运行结果差异大,多跑几次是性价比最高的策略

  4. GBR 是主力模型:融合权重始终选 GBR=100%,LGB=0%

  5. 误差特征有价值:虽测试集为0,但训练时学到的误差-价格关系能迁移到测试集

  6. 确定性种子=相同结果:seed=42 每次输出完全一样,需要换种子才能获得不同结果

当前最优配置

RANDOM_SEED = 888
amplitude search_range = (1.0, 4.0)
Optuna n_trials = 40
LGB n_estimators = 1000(early stopping ~17轮)
GBR n_estimators = 200(固定参数)
特征数量 = 108
融合权重 = 纯GBR(LGB=0, GBR=1)
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐