Page 89 - 《软件学报》2026年第2期
P. 89
568 软件学报 2026 年第 37 卷第 2 期
0.40
0.40 预测值 原始序列预测值
真实值 0.35 间隔插入序列预测值
0.35
0.30 真实值
0.30 0.25
输出值 0.25 输出值 0.20
0.20 0.15
0.10
0.15
0.05
0.10 0
0 10 20 30 40 0 10 20 30 40
时间步 时间步
图 4 预测峰值幅度不足、增减趋势相反和 图 5 间隔插入扩展序列与原始序列预测结果对比
预测值偏移
将该序列构建方法称为横向扩展, 其核心目的是通过延展输入序列的方式, 增强原始序列中的局部依赖信息.
图 6 展示了横向拓展序列构建的过程. 设输入历史窗口为 X = {x 1 , x 2 ,..., x T }, 插入间隔为 k, 则扩展后的序列长度
T ne 为:
w
⌊ ⌋
T −1
T new = T + (3)
k
定义扩展后的序列为 }, 其中 y i 的值为:
X HE = {y 1 ,y 2 ,...,y T new
⌊ ⌋
j−1
x j , i = j+ , j = 1,2,...,T
k
y i = ⌊ ⌋ (4)
1 ∑ jk j−1 T −1
x m , i = j+ , j = 1,2,...,
k m=(j−1)k+1 k k
原始序列 横向扩展 横向扩展序列
图 6 横向扩展序列构建
(2) 横向收缩
原始序列中包含大量的细粒度波动信息, 这些信息可能源于正常的序列波动, 也可能由噪声引起, 而后者会干
扰模型对整体趋势的判断. 为此, 本文设计方法引导模型捕捉序列的整体变化趋势, 避免过度拟合局部波动.
将该序列构建方法称为横向收缩, 方法通过最大值下采样压缩序列长度, 突出原始序列中与趋势变化相关的
关键信息, 减少模型对细粒度波动的关注. 横向收缩序列构建的过程如图 7 所示. 设输入历史窗口为 X = {x 1 , x 2 ,...,
x T }, 分组大小为 N = ⌊T/g⌋, 则每个完整分组序列为:
g, 完整分组数量
G i = {x (i−1)g+1 , x (i−1)g+2 ,..., x ig }, i = 1,2,...,N (5)
对于每个完整分组, 取组内最大值:
M i = max(G i ) (6)
对于剩余序列 G rem , 同样取序列内最大值:
M rem = max(G rem ) (7)
最终得到横向收缩序列 X H 为:
C
X HC = {M 1 , M 2 ,..., M N , M rem } (8)
(3) 纵向扩展
原始序列中的趋势变化可能幅度较小, 导致模型在预测时难以准确识别和响应这些变化, 从而出现预测峰值
幅度不足问题. 从图 5 中可以看出, 虽然扩展序列预测值在预测序列增减变化趋势上表现良好, 但对于增减幅度的

