老王在城南开了二十年面馆,最头疼的不是手艺,而是“明天到底准备多少”。备少了,客人排队等位,骂骂咧咧;备多了,十斤面剩下来,肉臊子不新鲜。十几年练下来,他养成习惯:打烊后看天气、翻日历、回忆上周客流,凭直觉拍脑袋定个数。偶尔准,更多时候差得离谱。 智能电网的调度员,其实和老王做着同一件事:预测明天的用电负荷。电网几乎不能储存大量电能,发电必须紧跟用电,而发电机组从启动到满负荷需要几十分钟甚至几小时。如果预测不准,电发多了是浪费,发少了就得拉闸限电。只不过,调度员面对的是一口“超级大锅”——千万用户的用电曲线。他们需要一个比“拍脑袋”可靠得多的“客流水晶球”。这篇文章,就来讲讲这个水晶球是怎么造出来的:收集数据、清洗数据、提炼特征、训练模型、量化误差,最后把预测变成调度台上的决策。

岗位关联

负荷预测是智能电网调度的“地基工程”,掌握它意味着你理解了能源 AI 最核心的一环——预测精度每提升 1%,都可能为电网节省巨额调节成本,这是 AI 从业者在能源行业最直接的价值体现。

目录
  1. 可视化演示
  2. 负荷预测意义:为什么老王要先估客流
  3. 数据预处理:把糊掉的账本重新誊清
  4. 特征工程:给模型配一副好眼镜
  5. 深度学习模型:招一个会记笔记的 AI 学徒
  6. 多尺度预测:三张便利贴,三种准备
  7. 不确定性量化:敢说“上下浮动”才是真本事
  8. 调度决策应用:预测落地变成明天的采购单
  9. 评估与优化:打烊后的那笔对账
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

负荷预测意义:为什么老王要先估客流

老王打烊后必做一件事:盘算明天能来多少客人。这事干得好,面备得刚够,臊子新鲜,伙计不闲也不忙;干得差,不是客人在门口排队骂娘,就是晚上剩了半锅汤。他常说,这口锅就是他的“小电网”——不能多煮,也不能少煮。对电网来说,这个道理一模一样。

电网和面馆一样,电力这种商品几乎无法大规模储存,发多少就必须用多少,用多少就得发多少。而发电机组从接到调度指令到满负荷运转,快的要几十分钟,慢的要几个小时。所以调度员必须提前预测未来一段时间的用电负荷,就像老王必须提前备菜、排班、采购。

预测精度直接影响三个层面。调度基础上,预测是机组启停和检修安排的输入;运行效率上,预测偏差会造成频繁调峰,加剧设备磨损;经济成本上,预测低了要临时高价购电,预测高了则白白浪费燃料。衡量调度难度的一个关键指标是峰谷差:

理解了峰谷差,老王就明白了自己那口“锅”的道理:如果客流总是忽多忽少,他就必须准备更多灵活的人手和原料。负荷预测的意义,就是提前看见那条曲线的高低起伏,让调度从容不迫。

ΔP=Pmax⁡−Pmin⁡\displaystyle \Delta P = P_{\max} - P_{\min}
峰谷差:一天中负荷最高点与最低点的差值。差值越大,说明负荷“忽高忽低”,对调度越不友好。
  1. P_max 与 P_min 的含义分别表示一天中负荷的最大值和最小值,例如上午十点的用电高峰与凌晨三点的用电低谷。
    Pmax⁡=max⁡t=124pt,Pmin⁡=min⁡t=124pt\displaystyle P_{\max} = \max_{t=1}^{24} p_t,\quad P_{\min} = \min_{t=1}^{24} p_t
  2. 相减得到峰谷差最大值减最小值,用来衡量一天负荷波动的剧烈程度。
    ΔP=Pmax⁡−Pmin⁡\displaystyle \Delta P = P_{\max} - P_{\min}

数据预处理:把糊掉的账本重新誊清

老王的账本记了十年,可他心里清楚:账本不能直接用。有时候墨水洇了,某天客流没记上;有时候他记岔了,把周日的人流量写到了周一;有时候隔壁老李来帮忙,记的单位是“碗数”,和他自己的“客人数”对不上。要预测,先得对账。

电网的数据中心也是一样。用电采集器可能断线、掉包、被电磁干扰,历史负荷数据里天然带着三种“脏”:缺失(某小时没采到)、异常(数值忽大忽小甚至为负)、量纲不统一(温度和负荷不是一个单位)。这些脏数据不处理,模型就会学进错误模式。

对应有三件事要做。缺失值填补用相邻时刻或历史同期的均值、插值补上空洞;异常值检测用阈值法或统计法(比如超过三倍标准差)找出并修正离谱的点;数据归一化让所有特征落到相近尺度,避免量纲差异主导梯度下降。此外还要做时间对齐,把不同来源的时间戳统一到同一个时钟上。最常用的归一化是 Z-score 标准化:

老王把账本重新誊了一遍:糊掉的日子用前后几天平均补上,记错的挪回正确位置,“碗数”统统换算成“客人数”。账本干净了,预测才有地基。

x′=x−μσ\displaystyle x' = \frac{x - \mu}{\sigma}
Z-score 标准化:把原始数据减去均值、除以标准差,让数据变成“以 0 为中心、以 1 为标准单位”的分布,方便神经网络稳定收敛。
  1. 分子中心化原始值 x 减去均值 μ,让整个数据分布的对称中心移到 0 点。
    x−μ\displaystyle x - \mu
  2. 分母缩放除以标准差 σ,把数据的离散程度压缩到统一的“单位尺度”。
    x′=x−μσ\displaystyle x' = \frac{x - \mu}{\sigma}

特征工程:给模型配一副好眼镜

光有干净的历史账本还不够。老王发现,同样的客流,在雨天、周末、学校放暑假时完全不同。他会看明天的天气预报、翻日历,甚至留意隔壁商场有没有促销——这些“旁敲侧击”的信号,就是他的备菜依据。

对负荷预测来说,特征决定了模型的“视野”。常用特征分三类:时序特征(历史负荷的滞后值、滑动平均、当前时刻)、气象因素(温度、湿度、风速)、节假日效应(工作日、周末、节假日的标记,春节和国庆这类大节更是特例)。还有一个容易被忽略的:温度滞后——连续高温几天后,建筑物的热量不断累积,空调负荷会逐日爬升。温度对负荷的影响总是“慢半拍”的。

滞后特征是最直接的时序特征构造法:用过去若干时刻的负荷值作为当前时刻的输入。这样模型看到的不再是一个孤零零的数字,而是一小段“历史回放”。

老王把“明天天气、周几、有没有促销、上周同时段客流”写在便利贴上,贴在收银台。模型也一样:把所有相关信号装进特征向量,眼界越宽,预测越准。

Xt=[xt−1, xt−2, …, xt−24]\displaystyle X_t = [x_{t-1},\ x_{t-2},\ \dots,\ x_{t-24}]
滑动窗口:把过去 24 小时的负荷排成一个向量,作为预测第 t 时刻负荷的输入特征。
  1. X_t 的含义第 t 时刻模型的输入特征向量,由过去 24 小时的负荷值拼接而成。
    Xt∈R24\displaystyle X_t \in \mathbb{R}^{24}
  2. 窗口长度选择24 小时覆盖“昨天同一时刻”的信息,让模型能捕捉到日周期性。
    xt−1, xt−2, …, xt−24\displaystyle x_{t-1},\ x_{t-2},\ \dots,\ x_{t-24}

深度学习模型:招一个会记笔记的 AI 学徒

老王攒了一手好“直觉”,但他知道自己不可能记住三年每一天的客流细节。于是他想,能不能找个“AI 学徒”帮自己盯数据?这个学徒要有个本事:既能记住很久以前的规律(比如去年同期),又不会被上周某个异常的周一带偏。

这正是循环神经网络家族的本行。LSTM(长短期记忆网络)通过一种叫“门”的结构,决定记忆什么、忘记什么——本质上是一个会自己整理笔记的学徒。近年来,Transformer 和注意力机制也被引入负荷预测,让模型能直接“回看”任意距离的关键历史时刻,而残差连接则帮助网络在堆得更深时依旧稳定训练。

以 LSTM 的遗忘门为例,它决定了上一步的记忆要保留多少:

这个 AI 学徒刚来时只会在纸上画葫芦,但经过几千次“对账纠错”(训练),它慢慢学会了老王的节奏:知道早晨该上多少面,天冷了客人要多点热汤。深度模型,本质上是把经验内化成了参数。

ft=σ(Wf⋅[ht−1, xt]+bf)\displaystyle f_t = \sigma(W_f \cdot [h_{t-1},\ x_t] + b_f)
遗忘门:输出一个 0 到 1 之间的系数,1 表示“全部记住”,0 表示“全部忘掉”,由当前输入和上一步的隐状态共同决定。
  1. f_t 的含义第 t 步遗忘门的输出,数值在 0 到 1 之间,代表对旧记忆的保留比例。
    ft∈[0,1]\displaystyle f_t \in [0, 1]
  2. 输入拼接把上一步的隐状态 h_{t-1} 与当前输入 x_t 拼在一起,作为门的“素材”。
    [ht−1, xt]\displaystyle [h_{t-1},\ x_t]
  3. 线性变换加偏置权重矩阵 W_f 和偏置 b_f 把拼接素材压缩成一个标量分数。
    Wf⋅[ht−1, xt]+bf\displaystyle W_f \cdot [h_{t-1},\ x_t] + b_f
  4. 激活函数σ(sigmoid)把任意实数压到 0 到 1 区间,形成“保留比例”。
    σ(z)=11+e−z\displaystyle \sigma(z) = \frac{1}{1 + e^{-z}}

多尺度预测:三张便利贴,三种准备

老王的预测分三种:明天的客流决定备菜量;下周的客流决定要不要临时招工;下个月的客流决定要不要添置新灶台。同一个面馆,三个时间尺度的预测,用途完全不同。

电网也是一样。短期预测(未来几小时到一天)支撑日前调度与实时平衡;中期预测(未来几天到几周)安排机组检修和燃料采购;长期预测(未来数月到数年)指导电网规划与新能源并网。不同尺度对数据长度、刷新频率和模型复杂度要求各不相同。

一个常用做法是把负荷序列看作多个成分叠加:长期趋势、周期波动和随机残差。把它们拆开分别建模再合成,比直接硬拟合更容易抓住规律。

老王把三种预测写成三张便利贴:明天的贴在案板前,下周的贴在招工启事旁,下个月的贴在银行申请单上。多尺度预测不是选择题,而是三件套。

P(t)=T(t)+S(t)+R(t)\displaystyle P(t) = T(t) + S(t) + R(t)
时间序列分解:总负荷 = 长期趋势 + 季节周期 + 随机残差。三部分各司其职,预测时分别处理再相加。
  1. T(t) 趋势项负荷随年份、经济增长缓慢变化的“大方向”。
    T(t)=长期趋势\displaystyle T(t) = \text{长期趋势}
  2. S(t) 周期项以天、周、年为周期的规律性波动,比如每日早晚双峰和周末低谷。
    S(t)=周期波动\displaystyle S(t) = \text{周期波动}
  3. R(t) 残差项剔除趋势和周期后剩余的随机波动,是预测中最难啃的部分。
    P(t)=T(t)+S(t)+R(t)\displaystyle P(t) = T(t) + S(t) + R(t)

不确定性量化:敢说“上下浮动”才是真本事

老王和客人闲聊时会说:“明天大概 80 桌,上下浮动 10 桌。”客人笑他啰嗦,但他心里清楚:报一个“80 桌”听起来干脆,却更容易误事。真正管用的,是那个“浮动”。

负荷预测也一样。出于天气突变、社会事件、设备故障等随机因素,单点预测注定会偏。与其假装精确,不如给出区间预测:例如“明天下午两点负荷为 9500 万千瓦,95% 置信区间为 9200 到 9800 万千瓦”。调度员按区间上沿安排备用,才敢睡个安稳觉。

实现区间预测的常用工具是分位回归。它不直接学“平均值”,而是学“某个分位数”(比如下 5% 分位和上 95% 分位),两个分位合起来就围成了一个区间。训练时用分位损失(Pinball Loss)来衡量偏差:

老王那句“上下浮动 10 桌”,其实就是他的 95% 分位区间。小本经营,宁可多备一点菜,也不能让客人干等。预测带有多宽,决定了面馆和电网的底气。

ρq(u)=max⁡(qu, (q−1)u),u=y−y^\displaystyle \rho_q(u) = \max(q u,\ (q-1) u),\quad u = y - \hat{y}
分位损失:当预测低于真实值时按 q 惩罚,高于真实值时按 q-1 惩罚。调整 q 就能教会模型“往高处偏”还是“往低处偏”。
  1. u 表示偏差真实值减预测值。u 为正说明预测偏低,为负说明预测偏高。
    u=y−y^\displaystyle u = y - \hat{y}
  2. 不对称权重q 和 q-1 分别惩罚两种方向的误差,q 越大模型越倾向于高估。
    q⋅u,(q−1)⋅u\displaystyle q \cdot u,\quad (q-1) \cdot u
  3. 取最大值max 保证两种惩罚中较大的那一项生效,构成一个凸的分段函数。
    ρq(u)=max⁡(qu, (q−1)u)\displaystyle \rho_q(u) = \max(q u,\ (q-1) u)

调度决策应用:预测落地变成明天的采购单

预测不是摆着好看的,最终要变成“明天怎么干”。老王对完账后,会写下明天的采购单和排班表:采购多少斤面,几点让伙计到岗。预测的价值,在第二天那锅面刚好够的那一刻才兑现。

电网调度员拿到负荷预测后,下达的是机组组合指令:明天哪些机组开、哪些机组停、各自带多少负荷,用最低的成本满足预测负荷。此外还有需求响应:预测到尖峰负荷时,提前向大用户发出“错峰用电”邀约,把峰值削下去;以及备用容量:预留一定比例的可调电力,用来应对预测偏差和突发故障。

机组组合本质上是一个优化问题:

老王看着预测单下单、排班,把浮动区间变成采购的余量。预测的真正价值,不在于图纸上的曲线,而在于第二天锅里的面刚好够、伙计刚好不闲不忙。

min⁡∑i=1NciPi,s.t. ∑i=1NPi=Pforecast\displaystyle \min \sum_{i=1}^{N} c_i P_i,\quad \text{s.t.}\ \sum_{i=1}^{N} P_i = P_{\text{forecast}}
机组组合:在满足总负荷等于预测值的前提下,让所有开机机组的发电成本之和最小。
  1. 目标函数 c_i P_i第 i 台机组的单位发电成本乘以其出力,再对所有机组求和,得到总成本。
    ∑i=1NciPi\displaystyle \sum_{i=1}^{N} c_i P_i
  2. 等式约束所有机组出力之和必须等于预测负荷,这是电网安全运行的红线。
    ∑i=1NPi=Pforecast\displaystyle \sum_{i=1}^{N} P_i = P_{\text{forecast}}
  3. 预测值的枢纽作用P_forecast 是预测环节的输出,也是决策环节的输入,把两篇文章串成一个故事。
    Pforecast\displaystyle P_{\text{forecast}}

评估与优化:打烊后的那笔对账

打烊后,老王会拿出今天的实际客流,和昨天预测的数字对一对:差多少?总是高估还是低估?哪个环节出了问题?这一笔账,他记了一整本。没有对账,就没有进步。

对预测模型的“对账”同样重要。常用指标有 MAE(平均绝对误差)、RMSE(均方根误差,对大误差更敏感)和 MAPE(平均绝对百分比误差)。其中 MAPE 最直观,因为结果就是“百分之几”,管理层一看就懂。

评估之后是优化。误差分析找出模型在哪些时段系统性偏差(比如总是低估晚高峰),超参优化用网格搜索或贝叶斯优化调整窗口长度、层数、学习率,在线更新随着新数据不断微调模型,让它跟上季节和用户习惯的变化。老王发现自己的账本越记越准,因为每次对完账,他都会把经验升级。评估不是终点,而是下一次预测的起点。

MAPE=1n∑i=1n∣yi−y^iyi∣×100%\displaystyle \text{MAPE} = \frac{1}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| \times 100\%
MAPE:每个样本的绝对百分比误差取平均,衡量预测整体偏离真实值几个百分点。
  1. 单个样本的误差比真实值减预测值的绝对值,除以真实值,消除量纲影响。
    ∣yi−y^iyi∣\displaystyle \left| \frac{y_i - \hat{y}_i}{y_i} \right|
  2. 求和取平均n 个样本的误差比加总后除以 n,得到平均偏离比例。
    1n∑i=1nΔi\displaystyle \frac{1}{n} \sum_{i=1}^{n} \Delta_i
  3. 换算成百分比乘以 100%,变成直观的百分数,方便不同量级的负荷之间比较。
    ×100%\displaystyle \times 100\%

AI 应用场景

电网调度中心的日前机组组合

阶段:预测输出 → 决策优化

解决的问题:过去调度员靠经验口头预估次日负荷,缺乏量化误差概念,机组启停频繁、燃料成本高。AI 负荷预测模型给出次日 96 点负荷曲线与置信区间,优化引擎据此安排机组组合,降低煤耗。

具体案例:某省级调度中心使用 LSTM 加分位回归模型,次日负荷预测 MAPE 稳定在 2% 以内。调度台将预测曲线输入机组组合优化器,低谷时段关停两台机组,仅此一项全年节省燃料成本上千万元。

需求响应与错峰管理

阶段:预测预警 → 用户侧激励

解决的问题:尖峰负荷高企时,传统做法是直接拉闸限电。利用短期预测提前识别尖峰时段,向签约用户推送错峰补偿邀约,把部分负荷从尖峰“搬”到低谷。

具体案例:夏季连续高温日,预测模型提前三天报警“负荷将刷新纪录”,运营商向储能电站和工业用户发放需求响应邀约,顺利转移负荷 50 万千瓦,避免了一次大规模有序用电。

备用容量动态调整

阶段:区间预测 → 安全校核

解决的问题:单点预测无法回答“万一预测错了怎么办”。利用区间预测的置信上界确定备用容量,既不过度预留造成浪费,也不留太少导致风险。

具体案例:某地区风电占比高、负荷波动大,调度中心按 90% 置信区间的上沿动态预留旋转备用,使备用购买成本下降 15%,系统可靠性指标不降反升。

Python 演示

python64 行
import numpy as np def make_load_data(days=30):    # 生成 days 天的每小时负荷模拟数据    hours = days * 24    t = np.arange(hours) / 24.0    trend = 50 + 2 * np.sin(2 * np.pi * t / 7)    daily = 15 * np.sin(2 * np.pi * t - np.pi / 2)    noise = np.random.RandomState(42).normal(0, 2, hours)    return trend + daily + noise def make_features(x, window=24):    # 滑动窗口构造特征矩阵 X 和目标 y    n = len(x)    X = np.zeros((n - window, window))    y = np.zeros(n - window)    for i in range(window, n):        X[i - window] = x[i - window:i]        y[i - window] = x[i]    return X, y class MiniMLP:    def __init__(self, d_in, d_hidden=16, seed=0):        rng = np.random.RandomState(seed)        self.w1 = rng.randn(d_in, d_hidden) * 0.1        self.b1 = np.zeros(d_hidden)        self.w2 = rng.randn(d_hidden, 1) * 0.1        self.b2 = np.zeros(1)     def train(self, X, y, epochs=200, lr=0.01):        for _ in range(epochs):            h = np.tanh(X @ self.w1 + self.b1)            pred = h @ self.w2 + self.b2            loss = np.mean((pred - y) ** 2)            d_pred = 2 * (pred - y) / len(y)            self.b2 -= lr * np.sum(d_pred, axis=0)            self.w2 -= lr * h.T @ d_pred            d_h = d_pred @ self.w2.T * (1 - h ** 2)            self.b1 -= lr * np.sum(d_h, axis=0)            self.w1 -= lr * X.T @ d_h     def predict(self, X):        h = np.tanh(X @ self.w1 + self.b1)        return (h @ self.w2 + self.b2).ravel() def main():    raw = make_load_data(days=60)    mu, sigma = raw.mean(), raw.std()    data = (raw - mu) / sigma    X, y = make_features(data, window=24)    split = int(len(X) * 0.8)    X_tr, X_te = X[:split], X[split:]    y_tr, y_te = y[:split], y[split:]    model = MiniMLP(d_in=24)    model.train(X_tr, y_tr, epochs=300)    pred = model.predict(X_te) * sigma + mu    true = y_te * sigma + mu    mape = np.mean(np.abs((true - pred) / true)) * 100    print("测试集 MAPE: %.2f%%" % mape)    for i in range(6):        print("真实 %.1f | 预测 %.1f" % (true[i], pred[i])) if __name__ == "__main__":    main()
目的:用合成负荷数据完整跑一遍“标准化 → 滑动窗口特征 → 神经网络训练 → MAPE 评估”的负荷预测流水线。
  1. data = (raw - mu) / sigmaZ-score 标准化,把负荷归一到同尺度,对应“清洁账本”的归一化环节。
  2. X[i - window] = x[i - window:i]滑动窗口特征,用过去 24 小时预测当前时刻,对应特征工程中的滞后值。
  3. split = int(len(X) * 0.8)按时间顺序 8:2 切分训练集和测试集,绝不随机打乱,防止未来信息泄露。
  4. h = np.tanh(X @ self.w1 + self.b1)隐藏层激活,相当于模型的“学徒笔记”。
  5. mape = np.mean(np.abs((true - pred) / true)) * 100计算 MAPE,对应老王打烊后的那笔对账。

常见误区

误区我一直以为负荷预测的目标是把误差做到 0,只要模型够复杂、数据够多,就能准确猜中每一小时的负荷。

正解负荷本身包含大量不可约的随机成分:天气突变、大型赛事、设备故障。预测的世界里没有“水晶球”,只有“更窄的区间”。与其追求误差归零,不如把不确定性量化出来并纳入调度决策。就像老王不会保证“正好 80 桌”,而是说“80 桌上下浮动 10 桌”。

为何常见:初学者容易把预测理解成“猜谜”,而忽略了负荷本质上是一个随机过程,任何预测都只能逼近其条件期望。

误区深度学习听起来更高级,所以负荷预测模型无脑选 LSTM 就对了,传统统计方法早就过时了。

正解模型选择取决于数据量、任务尺度和部署约束。当历史数据只有几个月、序列比较平稳时,ARIMA 这类线性模型不仅训练快,还可能更稳;LSTM 需要大量数据“喂”出非线性模式,数据不足时反而容易过拟合。多尺度预测中,不同尺度甚至应配不同模型,就像老王预测明天客流靠直觉,预测下个月客流反而要看日历和天气的统计规律。

为何常见:“越复杂越先进”的直觉,加上技术文章常以 SOTA 模型为卖点,让人忽略了泛化与稳定性的实际代价。

误区训练样本和测试样本之间没什么关系,随机打乱划分才能保证两边的分布一致。

正解时序数据有一个致命属性:未来信息不可见。随机打乱会把“明天的数据”泄露给“昨天的模型”,使评估结果虚高。正确做法是按时间顺序切分,训练集永远在测试集之前。可以类比老王对账:你不能先看了明天的客流量,再回头说是靠昨天的账本预测出来的。

为何常见:初学者把机器学习通用的随机划分习惯直接套到时序任务上,忽视了时间依赖是负荷预测的根基。

误区把能想到的特征全塞给模型:天气预报、温度、湿度、风速、日照、PM2.5……塞得越多,模型学到的东西越多。

正解特征越多,数据维度越高,模型越容易记住噪声而不是规律,这就是过拟合。特征工程的核心是“选对准信号”:对负荷而言,历史负荷滞后值、温度(含滞后效应)、节假日标记往往比几十个气象变量更有用。少而准的特征,配上足量的数据,才是实战中的制胜组合。老王只看天气、日历和上周客流,从不关心抖音热搜。

为何常见:“多多益善”的直觉,加上特征工程缺少即时反馈,让人难以看到维度诅咒的代价。

面试题

Q1. 智能电网负荷预测最核心的意义是?

单选题 · easy

  • A.指导发电系统提前规划← 正确答案
  • B.让电表读数变得更精确
  • C.减少用户用电的费用
  • D.增加电网设备的使用寿命

答案:A。负荷预测是调度决策的起点,就像老王开店前先估客流。B 是计量问题,C 是电价政策问题,D 是设备运维问题,都不是预测本身的核心意义。

Q2. 对缺失的历史负荷数据,下列哪种处理最合理?

单选题 · easy

  • A.直接删除整条数据记录
  • B.用相邻时刻均值填补← 正确答案
  • C.用一个随机数填充
  • D.把缺失值统一改成零

答案:B。相邻时刻均值属于插值法,能保住时序连续性。删除整条会丢掉相邻关系,随机数和无脑填零会注入假模式。就像老王把糊掉的账页直接撕掉或乱填,都会让账本失真。

Q3. 对输入特征做 Z-score 标准化的主要目的是?

单选题 · easy

  • A.让不同量纲处于相近尺度← 正确答案
  • B.减少训练样本的总数量
  • C.把数据转换成文本格式
  • D.消除数据中的缺失值

答案:A。温度(℃)和负荷(MW)量纲差异大,会让梯度更新失衡;标准化后各特征同尺度,模型收敛更快更稳。B、C、D 分别把标准化说成了采样、转格式和补缺失,都属于张冠李戴。

Q4. LSTM 网络中的“遗忘门”主要负责?

单选题 · mid

  • A.抑制梯度消失问题的出现
  • B.决定要丢弃哪些历史信息← 正确答案
  • C.将输出结果映射到概率
  • D.增加模型自身的参数总量

答案:B。遗忘门输出 0 到 1 的系数,决定旧记忆保留多少,像学徒判断上一条笔记还值不值得留。A 是整个 LSTM 的贡献之一但并非遗忘门的职责,C 是 softmax 的事,D 是误解。

Q5. 进行时序数据训练集测试集划分时,正确的做法是?

单选题 · mid

  • A.随机洗牌后再划分两集
  • B.按数据的时间顺序切分← 正确答案
  • C.按负荷数值从大到小排
  • D.把最大的一周放进测试

答案:B。按时间切分才能保证未来信息不泄露。随机洗牌会把未来的负荷泄给训练集,导致评估虚高,相当于先看了答案再做卷子。C 和 D 都破坏了时序的天然顺序。

Q6. 分位回归损失(Pinball Loss)常用于?

单选题 · mid

  • A.训练区间预测模型← 正确答案
  • B.提升模型训练的速度
  • C.消除特征间的相关性
  • D.压缩模型的存储大小

答案:A。分位损失不对称地惩罚高估和低估,通过设置不同分位 q 训练出一组分位模型,合起来就是区间预测,就像老王说“80 桌上下浮动 10 桌”。B、C、D 与区间预测无关。

Q7. 关于居民负荷曲线的“双峰”现象,下列说法正确?

多选题 · mid

  • A.早晚用电高峰所致← 正确答案
  • B.与居民作息规律相关← 正确答案
  • C.属于数据采集异常
  • D.只出现在节假日

答案:AB。双峰对应早、晚两个用电高峰,根源是居民作息规律——早起上班、下班做饭。这是正常负荷规律而非采集异常,也不是节假日专属(节假日双峰反而更平缓)。这提醒我们做特征工程时要加入时段和作息信息。

Q8. 关于温度滞后效应,下列说法正确?

单选题 · hard

  • A.气温变化实时影响当前负荷
  • B.连续高温会累积推高负荷← 正确答案
  • C.温度与负荷完全线性关系
  • D.低温对负荷没有任何影响

答案:B。建筑物有热惯性和热储存能力,连续高温使室内热量逐日累积,空调负荷随之爬升,所以温度对负荷的影响是“慢半拍”的。A 忽略了滞后,C 忽略了非线性,D 明显错误。建模时常构造 2 到 6 小时的温度滞后特征。

Q9. 以下哪些属于数据预处理步骤?

多选题 · hard

  • A.缺失值用插值法填补← 正确答案
  • B.检测并修正异常值← 正确答案
  • C.对数据做标准化缩放← 正确答案
  • D.将数据集部署到云端

答案:ABC。缺失填补、异常修正和标准化都属于预处理,目的是把“脏账本”誊成干净账本;部署到云端是工程环节,不是预处理。模型只对干净数据负责,预处理的质量直接决定预测上限。

Q10. 关于负荷预测的不确定性量化,下列说法正确?

多选题 · extreme

  • A.区间预测给出可能范围← 正确答案
  • B.分位回归可构造置信区间← 正确答案
  • C.不确定性来源包括随机波动← 正确答案
  • D.预测误差可以完全消除

答案:ABC。区间预测给出可能范围,分位回归通过多个分位构造置信区间,随机波动(天气突变、社会事件)是不确定性的天然来源之一。D 错误——误差不可能完全消除,只能被度量并纳入调度决策。预测的目标不是“绝对准”,而是“知道有多不准”。