☰
风电功率区间预测:分位数回归与深度学习模型实战解析
2026/10/17 13:52:45 网站建设 项目流程

干风功率预测这行的人,应该都体会过那种“预测线画得挺漂亮,结果一场阵风过来全飘了”的尴尬。调度那边真正关心的,从来不只是下个小时功率是多少,而是这个值可能的浮动范围有多大。换句话说,光给一条点预测曲线远远不够,你得给出一组分位数区间,让调度员看着上下限去做机组组合和备用安排。这就是风电场区间预测的核心场景,也是标题里QRBiGRU、QRBiTCN、QRCNNBiGRU、QRCNNBiGRUATTENTION、QRCNNLSTM、QRGRU、QRLSTM、QRTCN这一串模型缩写背后的共同主线:用分位数回归(QR)框架,搭配不同的时序网络骨干,去输出未来功率的条件分位数区间。

这套东西做下来,其实可以拆成三块来看:一是区间预测为什么要用分位数回归而不是简单算方差,二是不同骨干网络(RNN系、TCN系、CNN混合系)各自擅长什么,三是怎么用PICP、PINAW、CWC这些指标公平地比较谁给出的区间更实用。这篇文章就按这个思路,把模型原理、实操步骤和踩坑经验一起讲清楚。

1. 区间预测到底在预测什么:从点估计到不确定性量化

1.1 为什么点预测扛不住风电波动

风电功率天然带着强随机性,风速的湍流特性、风向突变、温度层结变化,都会让功率曲线在短时间内剧烈抖动。点预测模型——不管是物理方法还是统计学习方法——本质上是学习一个条件期望函数,也就是给定历史输入条件下未来功率的平均水平。问题在于,均值本身在强非线性、非平稳的序列里往往缺乏代表性。一个很典型的场景是:预测时刻正好赶上阵风过程,功率可以从额定值的30%瞬间冲到80%,均值落在55%,但这个值既不代表实际出力,也无法反映波动幅度。

调度侧需要的是风险边界。比如做备用容量安排时,调度员需要知道未来半小时功率有90%的概率落在什么范围内,才能决定是开一台燃气机组还是两台。如果只给一个点预测,他没法判断风险,只能靠经验留出裕度,裕度留大了不经济,留小了可能切负荷。区间预测解决的就是这种“知道我不知道”的问题——它输出的是条件分位数,比如5%分位数和95%分位数,中间就是90%预测区间。

1.2 分位数回归是怎么做到“区间输出”的

分位数回归的思想并不复杂:传统回归最小化均方误差,拟合的是条件均值;分位数回归最小化的是非对称的pinball loss(分位数损失),拟合的是条件分位数函数。对于分位数水平 τ(比如0.05、0.5、0.95),损失函数定义为:

def quantile_loss(y_true, y_pred, tau): # y_true: 真实值 # y_pred: 当前分位数水平的预测值 # tau: 分位数水平,取值(0,1) error = y_true - y_pred loss = torch.where(error >= 0, tau * error, (tau - 1) * error) return loss.mean()

直观理解:当预测值低于真实值(error > 0)时,惩罚系数是 τ;当预测值高于真实值(error < 0)时,惩罚系数是 1-τ。τ=0.5的时候两边惩罚相等,等价于MAE损失,拟合的是中位数;τ=0.05时,低估的惩罚只有0.05,高估的惩罚高达0.95,模型就会倾向于给出一个足够低的预测值,保证真实值很少低于它——这就是低分位数区间的下界。

实际工程中,通常同时设置多个分位数水平,例如 [0.05, 0.5, 0.95],对应预测区间的下界、中位预测和上界。模型输出层的神经元数量直接等于分位数数量,每个神经元对应一个分位数。训练时把所有分位数的损失加总起来作为总损失。这个方案比起先预测均值再加一个正态假设的方差区间,优势在于不假设误差分布形态,能捕捉到非对称、异方差的区间特征,而风电功率的预测误差恰恰是非对称的——低出力时段误差窄,高出力时段误差宽而且偏斜明显。

1.3 标题里那串模型名到底是什么意思

把标题里的模型名拆开看,其实都是一个套路:QR是分位数回归框架,后面跟的是不同的时序特征提取骨干网络。BiGRU是双向门控循环单元,BiTCN是双向时序卷积网络,CNNBiGRU是卷积网络提取局部特征再接双向GRU,CNNBiGRUAttention是在这个基础上再加注意力机制,CNNLSTM是卷积接长短期记忆网络,GRU、LSTM、TCN则是单一骨干网络。所以这不是八个完全不同的创新模型,而是同一套分位数回归框架下的八个网络结构变体。做这个课题的核心工作,就是公平地把它们放在同一套数据集、同一套评价指标下横向对比,找出在区间预测这个任务上各自的上限和短板。

2. 八个模型骨干逐个拆解:各自在解决什么问题

2.1 从LSTM到GRU:循环结构怎么读时序特征

LSTM(长短期记忆网络)是处理时间序列的经典结构,通过输入门、遗忘门、输出门三个门控机制,让信息可以选择性地跨时间步传递。在风功率预测里,LSTM能记住前几十分钟的功率爬坡趋势,比如过去3个采样点的持续上升模式,能让模型判断当前正处在爬坡阶段。GRU(门控循环单元)是LSTM的简化版,把三个门压缩成更新门和重置门两个门,参数量更少,训练更快,在很多中等规模数据上效果和LSTM持平甚至略优。

实话说,在风电这种强噪声场景里,LSTM和GRU的差距通常并不明显。我做过对比,同一份数据、同样的训练配置,两者的PICP和PINAW差距常在1%以内。选型上更多看训练资源和调参成本,GRU胜在迭代快,LSTM胜在长序列记忆能力略强。标题里的QRGRU、QRLSTM两个单网络模型,就是用来当基线(baseline)的——结构最简单,训练最快,用来衡量后面那些复杂结构到底是否值得增加计算量。

2.2 双向结构BiGRU、BiTCN在风功率预测里为何有效

双向结构的基本思想是:在时间步 t 的隐藏状态,不仅由过去的序列信息决定,还由“未来”的信息决定。原理上是用两个独立的循环单元,一个按时间正序读取,一个按时间逆序读取,然后把两个方向的隐藏状态拼接或相加。在自然语言处理里,双向结构很好理解——一个词的含义需要结合整句话的上下文。但在时序预测里,预测时刻一定晚于输入序列,所以训练时看似存在的“未来信息”,其实是输入窗口内的反向扫描,本质上是让模型更充分地利用输入窗口内的整体形态,而不是机械地只依赖因果关系。

在风功率预测中,双向结构确实能带来稳定的收益,尤其是处理爬坡事件时。输入窗口内如果包含一个完整的爬坡过程,双向GRU能同时在正向读取中看到“功率在上升”,在反向读取中看到“爬坡到顶后回落”,从而更准确地判断当前阶段的爬坡斜率。QRBiGRU、QRBiTCN在对比实验里通常比单向版本PICP高1~2个百分点,同时区间宽度略有收窄,这就是双向信息复用的价值。

2.3 CNN混合结构:CNNBiGRU、CNNLSTM、CCNBiGRUAttention取长补短

单独用循环网络处理时序,存在两个问题:一是特征提取效率低,LSTM/GRU必须逐步读取,无法并行,训练慢;二是对局部高频模式(比如几分钟内的功率抖动)捕捉能力不够敏锐。CNN(卷积神经网络)正好补上这两块短板。一维卷积通过固定大小的卷积核在时间轴上滑动,可以并行计算,并且天然擅长提取局部模式——比如用卷积核大小为3的一维卷积,就能直接学习“连续三个时间步的功率变化模式”。

QRCNNBiGRU的结构是:输入序列先进一层或多层一维卷积,对原始功率和气象特征做局部特征初步提取,然后把卷积输出按时间步组织,送入双向GRU做长程依赖建模。这样设计的好处是,CNN相当于一个特征预处理器,把原始高维、强噪声的输入压缩成更紧凑的特征序列,减轻了循环网络的负担。QRCNNLSTM同理,只是把BiGRU换成LSTM。从实际对比看,CNN前置结构在输入维度较高(比如同时输入历史功率、风速、风向、温度、湿度等多个特征)时收益最明显,因为卷积层能自动做特征交叉,而纯LSTM/GRU更倾向于记住原始输入的线性组合。

2.4 Attention注意力机制:从“记住所有时刻”到“关注关键时刻”

QRCNNBiGRUAttention是在CNNBiGRU的基础上,在时序维度上加了注意力层。注意力机制的核心思想是:模型在处理一个时间序列时,不同时间步对预测目标的贡献并不相同,应该让模型自己学习一套权重,对那些关键的历史时刻给予更多关注。具体到风功率预测,典型的场景是:输入窗口包含了过去十几分钟的数据,但真正对下一时刻功率有决定性影响的,可能只是最近5分钟的变化趋势和个别关键拐点。注意力层会对BiGRU输出的每个时间步的隐藏状态打一个重要性分数,然后加权求和,得到整个序列的上下文向量,再接全连接层输出分位数预测。

加了Attention之后,模型的可解释性也会好一些,可以输出注意力权重热力图,看看模型在预测某个时刻的时候,重点关注了过去哪一段。这在写报告、做分析时挺加分。但也要泼一盆冷水:Attention不是万能的,它在长序列上收益明显,在短窗口(比如12个时间步以内)上,和普通BiGRU的差距经常很小。所以这个模型在实验中往往是“上限最高但不一定最稳”的那个,要配合好的超参数才能发挥出来。

2.5 TCN时序卷积网络:循环结构的另一个竞争对手

TCN(时间卷积网络)是基于因果膨胀卷积的时序模型。所谓因果卷积,是指卷积核只看到当前时刻和过去时刻,看不到未来,保证时序的因果性。膨胀则是在卷积核中引入空洞,让感受野指数级扩大。层数为 L、卷积核大小为 k、膨胀基数为 d 时,感受野大小约为 k * d^L,意味着用很少的层就能覆盖很长的历史窗口。QRTCN(以及带双向变体的QRBiTCN)就是用这种结构来做分位数回归。

TCN相比LSTM/GRU最大的优势是训练速度:卷积可以高度并行,而循环结构只能逐步计算。在风电数据动辄几万条样本的场景下,TCN的训练时间往往只有LSTM的五分之一到三分之一。从精度看,TCN在捕捉局部模式和长依赖上都表现不错,尤其对周期性较强的功率序列很友好。它的短板在于对非平稳突变(比如风向骤转导致的功率骤降)的响应不如GRU灵活,因为膨胀卷积的窗口是固定的,不会像循环结构那样根据数据动态调整状态。

综合来看,八个模型的选型逻辑是这样的:如果追求训练速度,优先GRU或TCN;如果追求区间精度上限,可以考虑CNNBiGRUAttention;如果输入特征多、维度高,CNN混合结构是稳妥选择。做横向对比研究时,不应该预设某个模型最好,而是让数据说话。

3. 区间质量怎么打分:PICP、PINAW、CWC背后的逻辑

3.1 覆盖率PICP看着简单,但很容易被玩坏

区间预测最直接的指标是PICP(Prediction Interval Coverage Probability),即预测区间覆盖真实值的比例。计算方式很朴素:统计测试集里真实功率落在下分位数和上分位数之间的样本占比。理论上,如果预测的是5%和95%分位数,PICP应该在90%左右。PICP高,说明区间可靠;但PICP不是越高越好——如果模型的区间宽度无限大,覆盖率达到100%很容易,但失去了预测意义。

我见过不少人做区间预测时,只盯着PICP调参,把区间做得特别宽,覆盖率拉到95%以上,看起来很漂亮。实际上这种区间对调度毫无价值,因为区间越宽,备用容量安排越保守,经济性越差。所以评价体系里必须同时看区间宽度。这正是PICP单独作为指标的最大陷阱:它只衡量可靠性,不衡量信息量。

3.2 PINAW和PINR:衡量区间“有多窄”

PINAW(Prediction Interval Normalized Average Width)是标准化平均区间宽度,计算公式是:区间上下界的平均差,除以样本真实值的极差(最大值减最小值),得到一个0到1之间的标准化值。PINAW越小,说明区间越窄,预测越“有信息量”。PINR则是把区间平均宽度除以真实值的标准差,适合数据分布不规整时使用,跟PINAW互为补充。在对比不同模型时,光看PICP不准,光看PINAW也不准,理想情况是:在PICP达到目标覆盖率的条件下,PINAW越小越好。

这两个指标放在一起,能直观反映一个模型的“区间的质量”。比如两个模型PICP都是89%,模型A的PINAW是0.18,模型B的PINAW是0.25,说明模型A在同等可靠性条件下给出的区间更精确,能帮调度把钱省下来。

3.3 CWC:把覆盖率和宽度合成一个成本函数

PICP和PINAW经常此消彼长,很难直接比较。CWC(Coverage Width-based Criterion)就是为这个设计的综合指标,公式大致是:

CWC = PINAW * (1 + exp(-η * (PICP - μ))),当PICP < μ CWC = PINAW,当PICP ≥ μ

其中 μ 是预设的覆盖率目标(比如90%对应的PICP阈值),η 是惩罚系数。当PICP达不到目标 μ 时,CWC会在PINAW的基础上乘以一个指数惩罚项,覆盖率越差惩罚越重;一旦达到目标,CWC就只看PINAW了。这个指标的设计思路很符合实际工程需求:先保可靠性,在可靠性达标的前提下追求窄区间。

用CWC做模型对比时,我习惯把 η 设成50左右,μ 设成目标覆盖率。这样排序结果通常和业务直觉一致:那种“PICP虚高但区间奇宽”的模型,在CWC下排名会很低,因为它付出了不必要的宽度代价;而那种“PICP勉强达标但区间很窄”的模型,CWC会给出高分。做横向研究时,论文里一般会同时列PICP、PINAW、CWC三个指标,再搭配分位数分位点的相对误差表,才能形成完整证据链。

3.4 对比结果表怎么读才不出错

拿到一张包含八个模型、多个指标的对比表,第一反应不该是找PICP最高的,而是先确认所有模型的PICP是否都达到了预设的覆盖率目标(比如90%)。只要有一个模型覆盖率不达标,它的PINAW再小也不能选——那说明它在用“过窄的区间”骗人,可靠性没保证。达标之后,再按PINAW或CWC排序。

一个参考用法:如果某个模型的PICP是89.7%、PINAW是0.21,另一个是91.2%、PINAW是0.19,这种情况要结合业务需求判断。如果调度侧对可靠性极度敏感,选后者更稳妥;如果PICP允许轻微偏差且更看重区间效率,前者也有道理。做研究时,建议画一张散点图,横轴是PINAW,纵轴是PICP,每个模型一个点,再标出目标覆盖率的参考线,直观程度比干看表格高得多。

4. 一次完整的QR区间预测实操过程记录

4.1 数据准备与特征构造

以某装机容量50MW的风电场为例,数据是10分钟级的SCADA记录,包含有功功率、风速、风向、温度、湿度等变量,连续采集一年多。实际工作中,原始数据要先做质量控制:剔除停机时段和限电时段的样本,这些数据会让模型学到错误的映射关系。具体做法是先检查有功功率和风速的相关性,风速高但功率很低且持续时间长的时段,大多是限电或故障,直接删掉。

特征构造方面,我建议不要直接把原始序列丢进模型,而是做几个基础变换。一是滞后特征,取过去12个采样点(即过去2小时)的功率和风速作为输入窗口;二是滚动统计特征,比如窗口内功率的均值、方差、最大值、最小值,这些特征能帮模型快速感知当前运行状态;三是趋势特征,比如最近3个点的功率差值,对爬坡事件特别敏感。输入维度大概在15~20个特征左右,过高反而容易过拟合。

归一化统一用min-max缩放到[0,1]区间。功率是目标变量,也做同样的归一化。这里有个细节:归一化的最大值和最小值必须只用训练集计算,然后应用到验证集和测试集上,不能把全局统计量混进去,否则会造成数据泄漏,让测试指标虚高。训练集、验证集、测试集按时间顺序切分,比如前70%训练,中间15%验证,后15%测试,绝不能不乱序随机切——风电数据是强时序相关的,随机切分会让测试集里出现训练集时间段的邻近样本,严重高估模型性能。

4.2 分位数损失和多分位数输出的模型搭建

模型核心是输出层有多个神经元,每个对应一个分位数等级。比如用5个分位数 [0.05, 0.25, 0.5, 0.75, 0.95],输出层维度就是5。下面以QRCNNBiGRUAttention为例,展示关键结构代码(PyTorch风格):

import torch import torch.nn as nn class CNNBiGRUAttention(nn.Module): def __init__(self, n_features, n_quantiles, seq_len=12): super().__init__() # 一维卷积:局部特征提取 self.conv1 = nn.Conv1d(n_features, 32, kernel_size=3, padding=1) self.conv2 = nn.Conv1d(32, 32, kernel_size=3, padding=1) self.relu = nn.ReLU() # 双向GRU self.bigru = nn.GRU(32, 64, num_layers=2, batch_first=True, bidirectional=True, dropout=0.2) # 注意力层 self.attention = nn.MultiheadAttention(embed_dim=128, num_heads=4, batch_first=True) # 输出层:每个分位数对应一个神经元 self.fc = nn.Linear(128, n_quantiles) def forward(self, x): # x shape: (batch, seq_len, n_features) x = x.permute(0, 2, 1) # 转成 (batch, n_features, seq_len) 给Conv1d x = self.relu(self.conv1(x)) x = self.relu(self.conv2(x)) x = x.permute(0, 2, 1) # 转回 (batch, seq_len, channels) gru_out, _ = self.bigru(x) # (batch, seq_len, 128) attn_out, _ = self.attention(gru_out, gru_out, gru_out) # 取最后一个时间步的注意力输出 x = attn_out[:, -1, :] return self.fc(x) # (batch, n_quantiles)

其他模型结构都是这个骨架的简化或变体:去掉卷积就是QRBiGRU;把BiGRU换成LSTM就是QRCNNLSTM;把Attention层去掉就是QRCNNBiGRU;把卷积和注意力都去掉就是QRGRU或QRLSTM。训练时每个分位数用对应的 τ 计算分位数损失,然后把所有分位数的损失加总。这里有一个容易出错的点:预测出来的分位数在神经网络输出时是无序的,理论上应该保证 0.05分位数 < 0.5分位数 < 0.95分位数,但网络并没有内建这个约束。后面会专门讲怎么处理。

4.3 训练细节与超参选择

分位数回归模型的训练比普通回归更敏感,几个关键配置值得注意。批大小(batch size)一般用32或64,过大会让梯度更新过于平滑,分位数边界容易糊在一起;学习率用初始0.001的Adam优化器,配合ReduceLROnPlateau调度器,验证损失连续5个epoch不下降就乘以0.5。训练轮数early stopping设在15个epoch,验证损失不再下降就停止,防止过拟合。

正则化是分位数回归的重头戏。因为分位数损失对异常值相对不敏感(相比MSE),模型反而容易在边界处过度拟合噪声,因此Dropout建议设置在0.2到0.3之间,权重衰减(weight decay)设1e-5左右。还有一个trick:输入序列的归一化只对数值型特征做,不要对滚动统计特征做全局归一化,直接用原始值就行,否则尺度信息会被抹掉。

训练完成后,测试集上的预测结果会得到一个五列矩阵,每一列对应一个分位数。预测区间就是 (0.05分位数, 0.95分位数),中位数预测是0.5分位数那一列。绘制区间图时,用fill_between把下限和上限之间的区域填充出来,中位数画成实线,真实功率画成虚线,直观对比。

4.4 区间生成与结果整理:实操中的关键一步

从模型输出到最终可用的预测区间,中间还有几个细节。首先,因为训练时用了min-max归一化,预测的分位数结果要先反归一化还原成功率值。其次,要检查“分位数倒挂”现象,也就是在某个时间步,0.05分位数的预测值反而大于0.95分位数。这种情况在模型不稳定时会出现,处理方法是排序校正:对同一个时间步的5个分位数输出做一次排序,强制保证单调性。这个操作虽然损失一点精度,但能避免大量逻辑错误。

结果整理阶段,除了计算PICP、PINAW、CWC这些指标,建议额外输出一个“分位数覆盖率分解表”:分别统计低功率段(比如0~20%额定功率)、中功率段(20%~60%)、高功率段(60%~100%)的区间覆盖率。这个表格能揭露一个常见问题——模型在中低功率段覆盖率达标,但在高功率段覆盖率明显不足,说明高功率段的非对称性没有被充分建模。定位到这个问题后,可以针对性调整,比如增加高功率段样本的采样权重,或者把分位数等级改为非均匀分布(比如在低分位数端加密)。

5. 实操中踩过的坑:常见问题与排查技巧

5.1 分位数交叉/区间倒挂

这个问题出现的频率比想象中高得多。现象是预测的95%分位数在某些时间步低于5%分位数,导致区间上下界限交叉。原因通常有三个:一是模型容量不足,输出层无法约束不同分位数神经元的相对大小;二是训练不充分,分位数之间的排序关系没有充分学习;三是数据里有极端异常值,把某个分位数的边界拉偏了。

排查和处理的优先级是:先检查数据预处理有没有问题(是不是有未剔除的限电样本),再检查训练是否收敛,最后做排序校正兜底。排序校正最简单的实现是torch.sort对每个时间步的预测值排序。要注意的是,如果交叉现象大量出现(比如超过5%的时间步),不要只做排序校正就算了,那是在掩盖问题,要回到模型容量和训练配置上找原因。

5.2 覆盖率过低:PICP一直达不到目标

PICP远低于目标时,常见的原因有两个。第一个是分位数等级设计不合理,比如选了[0.05, 0.95]但模型实际输出的覆盖率和理论值差很远,这往往说明数据分布极度偏态,此时可以把分位数等级改成[0.025, 0.975]或[0.1, 0.9]再试。第二个是模型欠拟合,损失还没降到位就early stopping了,解决方法是把early stopping的容忍度从5个epoch放宽到10个epoch,或者把初始学习率调低一点。

还有一个容易被忽略的原因是数据泄漏方向搞反了:如果做特征工程时把未来信息混进了输入(比如输入窗口里包含了一个滞后为负的“未来功率”特征),训练时PICP会虚高,但测试时会断崖式下降。排查方法是把特征列逐个检查滞后方向,确保所有输入特征的时刻都早于预测目标时刻。

5.3 训练不稳定:损失曲线震荡、分位数边界抖动

分位数损失的梯度在误差接近0时存在不连续点,训练后期容易出现震荡。我试过几个有效的缓解手段:一是把损失函数里的τ参数在训练过程中做小范围随机扰动,比如τ=0.05时实际取0.04~0.06之间的随机值,相当于对分位数水平做了平滑;二是梯形损失(tilted loss)的平滑版本,用Huber函数替代绝对值项;三是梯度裁剪,把全局梯度的L2范数限制在5.0以内,这对GRU类模型尤其重要,防止梯度爆炸导致隐藏状态飞出合理范围。

如果震荡只出现在验证集上而训练集正常,大概率是过拟合。这时优先降低模型容量(减少GRU隐藏单元数、减少卷积通道数),而不是一味加Dropout——Dropout加太多会让分位数边界变得模糊,区间宽度异常增大。

5.4 超参数速查表与常见症状对照

下面是实操中整理的超参数调节速查表,对应不同症状的调整顺序和方向,可以当成排查手册用。

症状优先检查项调整方向
PICP过低、区间过窄训练是否欠拟合降低Dropout、放宽early stopping、调低学习率
PICP过高、区间过宽模型是否只学会了宽边界增大分位数惩罚系数、检查特征是否含泄漏
区间上下界倒挂数据预处理与训练充分性先查异常样本,后做排序校正兜底
高功率段覆盖率差样本分布是否失衡增加高功率段样本权重、调整分位数网格
训练震荡不收敛梯度不稳定梯度裁剪、τ平滑扰动、减小批大小
不同模型差距太小数据量不足或特征太弱增加滞后窗口、加入风速趋势特征、检查数据质量

这套速查表是我换过不少数据集总结出来的规律。单次实验的随机性其实很大,同一模型跑三次,PICP波动1个百分点都很正常。所以做模型对比研究时,建议每个模型至少跑3个随机种子,取平均值和标准差一起列出来,才能看出模型间的真实差异。

6. 最后再说点实操层面的体会

做区间预测这几年,我最大的感受是:模型结构的重要性,远不如数据清洗和评价指标设计来得大。八个模型换着跑,最终的PICP差距可能只有两三个百分点,但一次糟糕的数据泄漏能让你所有结论都作废,一个只看PICP不看区间宽度的评价方案能让你选出最“没用”的模型。所以在项目里,我会花超过一半的时间在数据质量检查和指标解读逻辑上,模型结构反而是相对标准化的部分。

具体到这套分位数回归框架,我个人建议如果资源有限,优先跑QRBiGRU和QRTCN这两个基线,先把数据管道和评价流程跑通,再逐步叠加CNN和Attention。QRCNNBiGRUAttention这样的复杂模型确实有更漂亮的上限,但也更容易在小数据集上过拟合,调参成本高不少。先把简单模型做到“能用、能解释、指标合理”,再往复杂模型演进,整个项目会顺畅得多。

另外,区间预测的结论不能只靠一个数据集。换一个风电场、换一个季节的数据,模型排名可能就变了。如果条件允许,做跨数据集验证——比如用A风电场的模型参数直接去预测B风电场,看看区间覆盖率掉多少,这对模型的泛化能力是非常有价值的检验。这套框架的扩展潜力也很大,把分位数回归换成conformal prediction(保形预测)做区间校准,或者加入不确定性分解模块,都是后续可以深入的方向。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询