10种主流深度学习模型+SHAP分析,TimeMixer效果碾压!电价预测python代码

引言

电力市场价格受发电结构、负荷波动、天气条件等多重因素影响,呈现出强烈的非线性和周期性特征。准确预测电力价格对电力交易、调度优化和风险管理都具有重要意义。

本期以西班牙电力市场的真实数据为研究对象,横向对比了 10 种机器学习与深度学习模型的预测效果,并加入了SHAP可解释性分析。10种模型包括:

TimeMixer,PatchTST,iTransformer,ModernTCN,LSTM,GRU,CNN-LSTM,BiLSTM,Transformer,LightGBM


一、数据概况

项目使用公开数据集:

该数据集包含西班牙 4 年的电力消耗、发电、价格和天气数据。用电和发电数据从 ENTSOE 获取,ENTSOE 是输电服务运营商(TSO)数据的公共门户。结算价格由西班牙 TSO 红色电气公司获得。

  • energy_dataset.csv:包含 2015—2018 年西班牙电力市场的小时级数据(约 35000 条),涵盖各类发电量(核电、燃气、水电、风电等)、负荷、日前价格预测及实际成交价格。

  • weather_features.csv:对应时段的气象数据,包括温度、气压、湿度、风速、降雨、云量等。

两份数据通过时间字段合并,最终得到一张融合了电力系统运行信息气象环境信息的宽表。


二、数据分析

在建模之前,小淘对数据进行了全面的探索性分析,输出了 20+ 张分析图,主要包括:

数据质量检查:绘制缺失值热力图,识别缺失模式,采用线性插值+前后填充的方式处理缺失值。

价格分布与趋势:电力价格整体呈右偏分布,均值在 50 欧元/MWh 附近,存在少量极端高价和负价。从时间序列总览图可以观察到明显的年度趋势变化。

周期性规律

  • 日内规律:价格在早高峰(8-10 时)和晚高峰(18-21 时)明显走高,凌晨 3-5 时最低。

  • 周规律:工作日价格显著高于周末,周一和周四通常是一周中价格最高的时段。

  • 季节规律:冬季(供暖需求)和夏季(制冷需求)价格偏高,春秋季相对平稳。

发电结构分析:核电提供稳定的基荷,燃气和燃煤发电随负荷波动调节,可再生能源(风电、光伏)的出力增加通常会压低电价。

相关性分析:与电价相关性最强的变量包括:日前价格预测、实际负荷、燃煤发电量、燃气发电量等;气象变量中温度和风速也有一定影响。

时序分解:对价格序列进行 STL 分解,可以清晰地分离出趋势项、季节项和残差项。


三、特征工程

基于上面数据分析的发现,小淘针对此数据构造了 37 维特征,大致分为四大类:

类别

特征示例

数量

发电/负荷

各类型发电量、实际总负荷、日前预测值

15

气象

温度、气压、湿度、风速、降雨、云量、天气类型

11

时间

小时、星期几、日期、是否周末、周数

5

滞后/滚动

价格滞后(t-12, t-72, t-168)、滚动均值、滚动极值、负荷预测偏差

6

其中滞后特征捕捉价格的自相关性(12 小时的日内模式、168 小时即一周的周模式),滚动特征(如 6 小时滚动均价)刻画近期价格趋势。

数据划分策略:2018 年 12 月之前的数据作为训练集,2018 年 12 月(744 小时)作为测试集,模拟真实场景中对未来一个月的滚动预测。


四、模型设计

我们实现了 1 个传统机器学习模型 + 9 个深度学习模型,覆盖了时间序列预测的主流方法:

传统机器学习:LightGBM

深度学习模型:统一采用滑动窗口方式,将过去 24 小时的数据构造为输入序列,预测下一小时的电价。

  • LSTM:经典长短期记忆网络,2 层堆叠,通过门控机制学习长期依赖。

  • GRU:门控循环单元,LSTM 的轻量化变体,参数更少但效果相当。

  • BiLSTM:双向 LSTM,同时利用过去和未来(窗口内)的上下文信息。

  • CNN-LSTM:先用两层 1D 卷积提取局部模式,再用 LSTM 捕捉时序依赖。

  • Transformer:标准 Transformer 编码器 + 位置编码,通过自注意力机制捕捉序列中任意位置之间的关系。

  • PatchTST:将时间序列切分为 patch(类似 ViT 对图像的处理),减少序列长度,提升计算效率。

  • iTransformer:反转 Transformer 的维度——对特征维度而非时间维度做注意力,让模型学习变量间的交互关系。

  • ModernTCN:现代化时序卷积网络,使用大核深度可分离卷积 + ConvFFN 结构。

  • TimeMixer:基于时序分解的 MLP 混合器。先将序列分解为趋势项季节项(通过移动平均),然后分别用独立的 MLP 在时间维度上进行混合,最后合并预测。结构简洁但非常有效。

训练策略

所有深度学习模型采用统一的训练框架:

  • 优化器:Adam(lr=1e-3)

  • 学习率调度:ReduceLROnPlateau

  • 早停机制:验证集 loss 连续 10 轮不下降则停止

  • 梯度裁剪:max_norm=1.0

  • 归一化:MinMaxScaler(仅在训练集上 fit)


五、实验结果

5.1 指标对比

排名

模型

RMSE

MAE

MAPE

1

TimeMixer0.93061.911.432.17%

2

iTransformer

0.9167

2.10

1.58

2.38%

3

GRU

0.9142

2.13

1.64

2.49%

4

LightGBM

0.9023

2.27

1.75

2.67%

5

Transformer

0.8948

2.36

1.85

2.80%

6

LSTM

0.8877

2.43

1.86

2.82%

7

BiLSTM

0.8700

2.62

2.05

3.09%

8

ModernTCN

0.8395

2.91

2.22

3.35%

9

CNN-LSTM

0.8274

3.02

2.35

3.54%

10

PatchTST

0.8143

3.13

2.43

3.65%

5.2 结果分析

TimeMixer 以 R²=0.93、MAPE=2.17% 拿下第一,其"分解-分别混合-重组"的设计思路非常适合电力价格这种具有明显趋势和周期成分的时序数据。

iTransformer 和 GRU 紧随其后,分别从变量交互和时序记忆两个角度取得了不错的效果。值得注意的是,传统的 LightGBM 排在第四名,凭借精心的特征工程依然具有很强的竞争力。

标准 Transformer、LSTM 等模型表现中规中矩,而 CNN-LSTM 和 PatchTST 在本数据集上表现相对靠后。

所有模型的对比图:

每个模型都有结果图生成(这里放5个模型的结果图展示)


六、SHAP 可解释性分析

模型预测得准固然重要,但理解模型为什么这样预测同样关键。我们对表现最好的 TimeMixer 进行了 SHAP(SHapley Additive exPlanations)分析,揭示每个特征对预测结果的贡献。

关键发现

Top 5 最重要特征:

  1. roll_price_6(6 小时滚动均价)—— 重要性远超其他特征,说明近期价格趋势是预测未来电价最关键的信号。

  2. **price(t-12)**(12 小时前价格)—— 捕捉日内价格的半天周期模式。

  3. hour(小时)—— 电价的日内模式非常显著,不同时段的定价逻辑差异很大。

  4. price day ahead(日前价格预测)—— 市场的日前预测本身就包含了大量信息。

  5. is_weekend(是否周末)—— 工作日和周末的电力需求模式截然不同。

从 SHAP Summary 图中可以看到:当 roll_price_6 取较高值(红色)时,SHAP 值为正,即推高价格预测;反之取较低值(蓝色)时,SHAP 值为负,拉低预测。


七、项目目录

代码整理的简单明了,上手非常简单!


代码获取

https://mbd.pub/o/bread/YZWclphxag==

或者点击下方阅读原文获取此代码,

承诺以上所有实验结果均真实有效!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘个代码_

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值