基于梯度提升树的电力现货价格预测与储能优化策略研究

摘要
本文基于AI营·2026能源电力预测与储能调度赛题,系统探讨了电力现货价格预测中的关键优化方向。通过大量实验对比,我们发现特征工程是最有效的优化手段,而历史电价滞后特征、预测误差稳健策略等常见方法的效果因场景而异。本文详细记录了从基线模型到最优方案的完整优化历程,为类似时序预测任务提供实践参考。
关键词:电力价格预测;梯度提升树;特征工程;滞后特征;储能优化
1. 引言
1.1 赛题背景
电力现货市场价格波动剧烈,准确预测节点电价对储能系统充放电策略制定至关重要。本赛题要求根据边界条件预测值(系统负荷、风光出力、联络线等)预测蒙西电网节点A的实时电价,并制定储能充放电策略以最大化收益。
评分公式 :
P r o f i t = ∑ t = 0 95 P t × E t Profit = \sum_{t=0}^{95} P_t \times E_t Profit=t=0∑95Pt×Et
其中 P t P_t Pt为真实实时电价, E t E_t Et为提交的充放电功率。
1.2 储能系统约束
- 容量:8000,充放电功率:±1000
- 单次充/放电持续时间:固定8个时间点(2小时)
- 每天最多1次充电 + 1次放电
- 时间约束: 0 ≤ t c ≤ 80 0 \leq t_c \leq 80 0≤tc≤80, t c + 8 ≤ t d ≤ 88 t_c + 8 \leq t_d \leq 88 tc+8≤td≤88
2. 核心问题探讨
2.1 历史电价滞后特征是否有用?
结论:有用,但必须正确使用
2.1.1 理论基础
电价具有强时序自相关性------今天下午2点的电价与昨天下午2点、上周同一时刻的电价存在规律。滞后特征(Lag Features)是时序预测中最常见的手段之一。
2.1.2 实验设计
| 方案 | 滞后特征 | 训练时 | 测试时 | 日收益 |
|---|---|---|---|---|
| 基线 | 无 | --- | --- | 12,490 |
| 方案A | lag_1/2/4/96/7d + 滚动统计 | 真实值 | ffill填充 | 2,811 ❌ |
| 方案B | 同上 | 真实值 | 递归推理 | 148 ❌ |
| 方案C | 仅lag_96 | 真实值 | 按天递归 | 13,547 ✅ |
2.1.3 关键发现
短期滞后(lag_1/2/4)导致误差快速累积:
- 每步预测误差通过滞后特征传递到下一步
- 96步后预测变成一条直线,收益暴跌
日周期滞后(lag_96)效果最佳:
- 误差每天只传递一次(隔96步)
- 预测价格标准差保持0.97,日内波动模式完整保留
- 收益提升16.0%(模拟值)
2.1.4 使用建议
python
# 推荐做法:仅用lag_96,按天递归推理
# 第1天:用训练集最后96个真实价格初始化
# 第2天起:用前一天的96个预测值作为lag_96
注意:lag_96在测试集上的收益为模拟值(用预测价格计算),实际官方评分可能不同。
2.2 哪些特征最重要?
结论:物理意义明确的供需特征 > 纯时间特征 > 比率特征
2.2.1 特征重要性排名(基线模型)
| 排名 | 特征 | 重要性 | 占比 | 物理意义 |
|---|---|---|---|---|
| 1 | 风光总加预测值 | 0.5007 | 50.1% | 新能源总出力 |
| 2 | 风电预测值 | 0.1537 | 15.4% | 风电单独出力 |
| 3 | month | 0.0825 | 8.3% | 季节性周期 |
| 4 | 联络线预测值 | 0.0488 | 4.9% | 跨区域交换 |
| 5 | 光伏预测值 | 0.0456 | 4.6% | 光伏出力 |
| 11 | minute | 0.0004 | 0.04% | 纯噪声 |
2.2.2 特征工程实验
新增20个特征,分5类:
| 类别 | 新增特征 | 效果 |
|---|---|---|
| 比率特征 | 风光渗透率、风电占比等6个 | 捕捉供需相对关系 |
| 交叉特征 | 风光×负荷、净负荷等3个 | 捕捉供需交互 |
| 时段特征 | 早高峰、晚高峰、低谷等6个 | 精细化日内模式 |
| 周期编码 | hour_sin/cos、month_sin/cos | 解决周期断裂 |
| 非线性变换 | 风光²、风电² | 捕捉极端出力 |
实验结果:
- 31特征 vs 11特征:日收益 12,527 vs 11,676(+7.3%)
- 净负荷成为最重要特征(39.5%),超过风光总加
2.2.3 共线性分析与精简
31个特征中存在严重共线性:
- 25个特征VIF > 10
- 风光渗透率与风光总加预测值 r = 0.996
- is_workday与is_weekend r = -1.000(完全互斥)
删除14个冗余特征后:
- 31特征 → 17特征
- 日收益:12,527 → 12,490(几乎无损)
- 训练速度提升2倍
2.2.4 最终特征清单(17个)
python
CLEAN_FEATURES = [
# 原始边界条件(7个)
'系统负荷预测值', '风光总加预测值', '联络线预测值',
'风电预测值', '光伏预测值', '水电预测值', '非市场化机组预测值',
# 时间特征(4个)
'hour_sin', 'hour_cos', 'dayofweek', 'month_cos',
# 工程特征(4个)
'风光渗透率', '风电占比', '净负荷',
# 时段特征(2个)
'is_morning_peak', 'is_evening_peak', 'is_workday',
]
核心洞察:蒙西电网以新能源为主,风光出力直接决定电价高低------风光大发时供给充足、电价走低,风光不足时电价飙升。
2.3 是否需要考虑预测误差的稳健策略?
结论:在模型预测可靠时,稳健策略效果有限
2.3.1 问题定义
Baseline策略完全相信预测电价------如果模型预测明天14:00电价最高,就毫不犹豫在14:00放电。但预测一定有误差,如果实际18:00才是最高峰,策略就会"翻车"。
2.3.2 稳健策略设计
方案A:阈值兜底
python
if 预测价差 < min_spread:
不交易 # 宁可不动也不乱动
方案B:灵活充放电时长(后发现违规)
python
# 搜索最优充电时长(4~12点)和放电时长(4~12点)
# 最优:4充+12放,日收益18,200(但违反固定8点规则)
2.3.3 实验结果
| 策略 | 验证集日收益 | 说明 |
|---|---|---|
| 基线(8+8,无阈值) | 6,622 | --- |
| 阈值=0.1 | 6,619 | 几乎无变化 |
| 阈值=0.3 | 6,279 | 开始损失收益 |
| 阈值=1.0 | 4,803 | 严重损失 |
| 最优阈值 | 0 | 不跳过任何天 |
2.3.4 关键发现
在模型预测可靠时,阈值兜底反而损失收益:
- 验证集上最优阈值是0(不跳过任何天)
- 说明模型预测的日内排序已经足够可靠
- 跳过任何一天都意味着放弃该天的潜在收益
但稳健策略在以下场景有价值:
- 模型置信度低(如极端天气、数据缺失)
- 多模型预测分歧大时
- 需要控制最大回撤时
2.3.5 使用建议
python
# 简单有效的稳健策略:仅在极端情况下跳过
def robust_strategy(prices, confidence_threshold=0.5):
best_profit, best_tc, best_td = find_best_timing(prices)
# 如果最优收益过低,说明预测不确定度高
if best_profit < confidence_threshold:
return 不交易
return 执行交易
3. 优化历程总结
3.1 完整实验对比
| 阶段 | 优化方向 | 特征数 | 日收益 | 效果 |
|---|---|---|---|---|
| ① 基线 | sklearn GBR默认 | 11 | 11,676 | --- |
| ② 特征工程 | 新增20个特征 | 31 | 12,527 | +7.3% ✅ |
| ③ 去共线性 | 删除14个冗余 | 17 | 12,490 | +7.0% ✅ |
| ④ RMSE调参 | RandomizedSearchCV | 17 | 9,776 | -16.3% ❌ |
| ⑤ 收益调参 | 以收益为目标 | 17 | 11,830 | +1.3% |
| ⑥ lag_96 | 日周期滞后+递归 | 18 | 13,547 | +16.0%(模拟) |
| ⑦ 策略优化(违规) | 4充+12放 | 17 | 18,200 | 不可用 ❌ |
| ⑧ 官方规则+阈值 | 8+8+阈值兜底 | 17 | 12,150 | +4.1% |
| ⑨ 目标对齐 | 排序+分位数+集成 | 17 | 12,036 | +3.1% |
3.2 核心教训
| 教训 | 详细说明 |
|---|---|
| RMSE ≠ 收益 | 低RMSE不等于高收益,关键是价格排序正确 |
| 滞后特征的双刃剑 | 训练时有效,推理时误差累积是核心挑战 |
| 特征质量 > 数量 | 31个特征不如17个精简特征,冗余会干扰模型 |
| 策略必须符合规则 | 充放电时长固定8点,不可自由调整 |
| 验证集评估要按完整天切分 | 否则无法计算充放电收益 |
4. 最终推荐方案
4.1 推荐配置
- 模型:sklearn GradientBoostingRegressor(默认参数)
- 特征:17个精简特征
- 策略:8+8固定时长,无阈值兜底
- 日收益:12,490(比基线+7.0%)
--
5. 结论
本文通过系统实验回答了三个核心问题:
-
历史电价滞后特征 :有用,但必须正确使用。推荐仅用lag_96配合按天递归推理,短期滞后会导致误差快速累积。
-
最重要的特征 :物理意义明确的供需特征。净负荷(系统负荷-风光出力)成为最重要特征,风光相关特征占据主导地位。
-
预测误差的稳健策略 :在模型可靠时效果有限。最优策略是不加阈值,跳过任何一天都意味着损失潜在收益。
核心洞察 :在电力价格预测这类物理驱动明确的时序任务中,特征工程(特别是供需关系的物理建模)远比复杂的模型调优和策略设计更有效。
本文基于AI营·2026能源电力预测与储能调度赛题实践整理