技术领域
[0001] 本发明涉及一种基于长短期记忆神经网络的工程造价智能预测方法及装置,属于电网工程造价数据处理技术领域。
相关背景技术
[0002] 随着电力市场的发展和电网建设的推进,电网项目的投资额不断增加,这使得电网项目的造价管理变得更加复杂和关键。并且电网项目的规模大型化、技术复杂化等新特点也增加了工程造价的不确定性,使得风险管理成为一个重要课题。在电网工程中,各种风险因素与工程的整体造价密切相关,识别这些风险因素并分析其与造价的关系对于精准造价至关重要。
[0003] 目前进行造价预测的方法,主要是通过输入历史造价数据,通过算法直接计算工程总投资。这种方法称为历史数据算法,是一种基于历史数据和统计算法的传统预测方法。历史数据算法使用历史项目的造价数据作为输入,通过统计分析和算法计算,得出工程的总投资。这种方法简单直接,适用于某些相对简单、规模较小的工程。
[0004] 但是,现有造价预测方法存在以下缺点:1.无法体现市场环境和新技术的变化:历史数据算法主要依赖于历史造价数据,无法充分考虑市场环境的变化和新技术的应用。随着时间的推移,市场价格、材料费用、劳动力成本等都可能发生变化,这些因素无法在历史数据算法中得到有效反映。2.计算结果仅包含总投资:现有技术下的造价预测计算结果通常仅包含工程的总投资,缺乏对工程分项投资的详细分析。这种情况下,管理者难以了解造价的具体构成,无法针对性地进行成本控制和优化。3.以概算数据为基础:当前造价预测多数以概算数据为基础,这些概算数据往往是初步估算,难以代表工程最终的实际投资。因此,计算结果与实际情况可能存在较大偏差,影响了预算的准确性和可靠性。
具体实施方式
[0068] 为能更清楚地说明本发明方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。
[0069] 如图1所示,本发明实施例提供的一种基于长短期记忆神经网络的工程造价智能预测方法,包括如下步骤:
[0070] 步骤S1,获取电网项目的工程造价数据,进行标准化后将工程造价数据分为训练集和验证集,所述工程造价数据包括工程结算数据、物料询价数据、工程造价预测需求的周期新和频率;
[0071] 步骤S2,对训练集进行基于变分模态分解,得到若干阶的造价模态分量;
[0072] 步骤S3,基于需要预测的工程造价的周期性和频率构建时间窗口,将若干阶的造价模态分量基于所述时间窗口进行时间序列化,得到输入向量;
[0073] 步骤S4,构建长短期记忆神经网络模型,将输入向量分别从正反两个方向通过预设的LSTM层,得到正向的隐藏状态序列和反向的隐藏状态序列,并将正向和反向的隐藏状态序列拼接,得到输出序列;
[0074] 步骤S5,初始化长短期记忆神经网络模型,并利用训练集进行模型训练,不断调整模型参数的进行优化迭代,当上一次迭代与当前迭代的输出序列的变化差小于预设的迭代终止值或达到最大迭代次数时,终止迭代,得到最终的工程造价预测模型;
[0075] S6,将待预测的工程造价数据输入工程造价预测模型,得到多个不同频率的预测序列,将多个不同频率的预测序列可视化为时间曲线,得到工程造价预测结果。
[0076] 作为本实施例一种可能的实现方式,在步骤S1中,通过采用均值标准化将与工程造价相关的工程结算数据和物料询价数据进行标准化处理,所述标准化处理的过程为:
[0077] 首先计算数据的均值,然后计算数据的特征,最后结合均值和特征进行均值标准化:
[0078]
[0079] 式中,yi为经过标准化后的第i个工程造价数据,xi为第i个工程造价数据,n为工程造价数据总量。
[0080] 作为本实施例一种可能的实现方式,所述步骤S2,对训练集进行基于变分模态分解,得到若干阶的造价模态分量,包括如下步骤:
[0081] 将训练集的工程造价数据表示为一维时间序列y(t)=[y1,y2,y3……yN],其中N为时间序列的长度;
[0082] 根据工程造价预测需求的周期新和频率设置模态分量的数量,并映入正则化参数;
[0083] 初始化每个模态分量的频率核心函数和中心频率;
[0084] 执行交替优化步骤,迭代优化频率核心函数和中心频率,直到收敛或达到预设的迭代次数,得到最终的模态分量。
[0085] 作为本实施例一种可能的实现方式,所述根据工程造价预测需求的周期新和频率设置模态分量的数量,并映入正则化参数,包括如下步骤:
[0086] 分析工程造价数据的周期性和频率特征;
[0087] 根据预测需求和数据特性,估计需要捕捉的主要频率分辨率;
[0088] 根据预测需求和估计的频率分辨率,选择合适的K;
[0089] 设置一个正则化参数,将模态分量映入正则化参数。
[0090] 作为本实施例一种可能的实现方式,在执行交替优化步骤过程中,目标函数为:
[0091]
[0092] 式中,s.t.∑B表示满足条件B时使A达到最小的解;δ(n)为迪利克雷函数;σn{·}为对xi(n)进行希尔伯特变化得到的单边频谱;{xi}和{ωi}表示模态分量及对应的中心频率的集合,分解尺度为K,即分解得到的分量数;*表示卷积;∑ixi表示所有模态分量的和;表示梯度平方范数,j为虚部,n为工程造价数据数量,x(n)为数据分量;
[0093] 去除约束条件后的目标函数为:
[0094]
[0095] 式中,L({Bk},{Ak},σ)为非约束变分模型,G(t)为原始输入信号,σ(t)为拉格朗日乘子,α为惩罚因子;
[0096] 收敛条件为:
[0097]
[0098] 式中, 是 的傅里叶变换, 为更新模态,m为迭代次数。
[0099] 作为本实施例一种可能的实现方式,所述步骤S3,基于需要预测的工程造价的周期性和频率构建时间窗口,将若干阶的造价模态分量基于所述时间窗口进行时间序列化,得到输入向量,包括如下步骤:
[0100] 确定时间窗口的长度和滑动步长:根据工程造价数据的周期性和预测需求,确定时间窗口的长度,同时,定义时间窗口的滑动步长;
[0101] 提取时间窗口内的模态分量:对于每个时间窗口,从已经得到的若干阶造价模态分量中提取对应窗口内的数据;
[0102] 时间序列化处理:对于每个时间窗口内的模态分量数据,按照时间顺序进行排列,形成时间序列化的数据;
[0103] 构建输入向量:将时间序列化后的数据作为输入向量。
[0104] 作为本实施例一种可能的实现方式,所述步骤S4,构建长短期记忆神经网络模型,将输入向量分别从正反两个方向通过预设的LSTM层,得到正向的隐藏状态序列和反向的隐藏状态序列,并将正向和反向的隐藏状态序列拼接,得到输出序列,包括如下步骤:
[0105] 根据之前步骤中生成的时间序列化的输入向量,作为LSTM模型的输入,每个输入向量包含若干时间窗口内的模态分量数据;
[0106] 将输入向量分别输入到预设的正向(forward)和反向(backward)的LSTM层中,正向LSTM层处理输入向量的数据时,按照时间顺序进行;而反向LSTM层则按照相反的时间顺序处理输入向量的数据;
[0107] 正向LSTM层和反向LSTM层分别计算出其隐藏状态序列;
[0108] 将正向LSTM层和反向LSTM层计算得到的隐藏状态序列按时间步进行拼接,将每个时间步上正向LSTM层的隐藏状态向量和反向LSTM层的隐藏状态向量连接在一起,形成一个更长的隐藏状态序列;
[0109] 拼接后的隐藏状态序列作为最终的输出序列。
[0110] 作为本实施例一种可能的实现方式,所述LSTM层的公式为:
[0111]
[0112] 式中,it、ft、at分别为输入门、输出门和遗忘门;ct为细胞状态表征长期记忆、η和tanh为激活函数,ht‑1为上一阶段的输出,wix、wfx、wcx、wax、wih、wfh、wch、wah皆为对应的待训练的权重,bi、bf、bc、ba为偏置项。
[0113] 作为本实施例一种可能的实现方式,所述将多个不同频率的预测序列可视化为时间曲线,得到工程造价预测结果,包括如下步骤:
[0114] 使用周期性分析方法检测每条曲线中的周期性成分;
[0115] 通过预测误差、拟合度对比不同曲线的性能;
[0116] 结合工程造价预测的实际业务背景和需求,选择最适合的工程造价时间曲线作为最终的预测依据并进行造价预测,得到工程造价预测结果。
[0117] 如图2所示,本发明实施例提供的一种基于长短期记忆神经网络的工程造价智能预测装置,包括:
[0118] 数据采集模块,用于获取电网项目的工程造价数据,进行标准化后将工程造价数据分为训练集和验证集,所述工程造价数据包括工程结算数据、物料询价数据、工程造价预测需求的周期新和频率;
[0119] 模态分解模块,用于对训练集进行基于变分模态分解,得到若干阶的造价模态分量;
[0120] 时间序列化模块,用于基于需要预测的工程造价的周期性和频率构建时间窗口,将若干阶的造价模态分量基于所述时间窗口进行时间序列化,得到输入向量;
[0121] 模型构建模块,用于构建长短期记忆神经网络模型,将输入向量分别从正反两个方向通过预设的LSTM层,得到正向的隐藏状态序列和反向的隐藏状态序列,并将正向和反向的隐藏状态序列拼接,得到输出序列;
[0122] 模型训练模块,用于初始化长短期记忆神经网络模型,并利用训练集进行模型训练,不断调整模型参数的进行优化迭代,当上一次迭代与当前迭代的输出序列的变化差小于预设的迭代终止值或达到最大迭代次数时,终止迭代,得到最终的工程造价预测模型;
[0123] 造价预测模块,用于将待预测的工程造价数据输入工程造价预测模型,得到多个不同频率的预测序列,将多个不同频率的预测序列可视化为时间曲线,得到工程造价预测结果。
[0124] 采用本发明审核装置进行审核输变电工程分部结算的具体过程如下。
[0125] S1,获取工程造价数据,并进行标准化,将工程造价数据分为训练集和验证集。
[0126] 所述工程造价数据包括工程结算数据、物料询价数据、工程造价预测需求的周期新和频率。
[0127] 通过采用均值标准化将与工程造价相关的工程结算数据、物料询价数据进行标准化处理,所述标准化处理的具体过程如下:
[0128] 首先计算数据的均值,然后计算数据的特征,最后结合均值和特征进行均值标准化;
[0129] 所述均值标准化的计算公式如下:
[0130]
[0131] 式中,yi为经过标准化后的第i个工程造价数据,xi为第i个工程造价数据,n为数据总量。
[0132] S2,将训练集基于变分模态分解,得到若干阶的造价模态分量。
[0133] 变分模态分解(VMD)是一种信号处理技术,用于将复杂的非线性和非平稳信号分解成多个模态分量(IMFs),每个模态分量都具有特定的频率和振幅特征。与传统的傅里叶变换或小波变换不同,VMD能够自适应地调整每个模态分量的中心频率和带宽,以更好地适应信号的频率变化。通过交替优化频率和振幅的分解过程,VMD能够有效地提取信号中的周期性成分和随时间变化的模态特征,广泛应用于信号处理、生物医学工程、图像处理等领域。
[0134] 具体地,
[0135] 将训练集的工程造价数据表示为一维时间序列y(t)=[y1,y2,y3……yN],其中N为时间序列的长度。
[0136] 根据工程造价预测需求的周期新和频率设置模态分量的数量,并映入正则化参数;
[0137] 初始化每个模态分量的频率核心函数和中心频率;
[0138] 执行交替优化步骤,迭代优化频率核心函数和中心频率,直到收敛或达到预设的迭代次数,得到最终的模态分量。
[0139] 所述根据工程造价预测需求的周期新和频率设置模态分量的数量,并映入正则化参数,具体为:
[0140] 分析工程造价数据的周期性和频率特征。例如,是否存在年度季节性变化、长期趋势、还是其他周期性成分;
[0141] 根据预测需求和数据特性,估计需要捕捉的主要频率分辨率;较高的频率分辨率需要更多的模态分量来表征;
[0142] 根据预测需求和频率分辨率估计,选择合适的K。通常情况下,K的选择可以通过经验和频谱分析来初步确定,以确保能够捕捉主要的周期性成分。
[0143] 正则化参数控制了模态分量之间的平滑度和影响力。较大的正则化参数会促使模态分量更加平滑和简单,而较小的正则化参数λ则会允许更多细节和噪声。
[0144] 在设置过程中,进行反复实验和优化,通过交叉验证或预测误差的评估来调节模态分量和正则化参数的组合,以获得最佳的预测性能和模型解释能力。
[0145] 目标函数的具体计算公式如下:
[0146]
[0147] 式中,s.t.∑B表示满足条件B时使A达到最小的解;δ(n)为迪利克雷函数;σn{·}为对xi(n)进行希尔伯特变化得到的单边频谱;{xi}和{ωi}表示模态分量及对应的中心频率的集合,分解尺度为K,即分解得到的分量数;*表示卷积;∑ixi表示所有模态分量的和;表示梯度平方范数,j为虚部,n为数据数量,x(n)为数据分量。
[0148] 去除约束条件后的目标函数的具体计算公式为:
[0149]
[0150] 式中,L({Bk},{Ak},σ)为非约束变分模型,G(t)为原始输入信号,σ(t)为拉格朗日乘子,α为惩罚因子。
[0151] 收敛条件为:
[0152]
[0153] 式中, 是 的傅里叶变换, 为更新模态,m为迭代次数。
[0154] 所述初始化每个模态分量的频率核心函数和中心频率,具体为:
[0155] 选择核心函数:核心函数决定了每个模态分量的频率响应特性,本文使用高斯函数、Mexican hat函数。选择核心函数需要考虑数据的周期性和频率分布特征。
[0156] 中心频率是每个模态分量在频率域中的中心点,决定了模态分量的主导频率。中心频率的设置应该基于频谱分析或领域知识,以确保能够捕捉到重要的周期性成分。
[0157] 对于每个模态分量,需要初始化核心函数的参数,如宽度(对于高斯函数)、方差等。这些参数影响了核心函数在频率域中的展宽程度和形状。
[0158] 通过交替优化的方式,迭代地调整每个模态分量的核心函数和中心频率,以最大化模态分解的能量集中在主要的周期性成分上。这个过程可以是一个非凸优化问题,使用迭代优化算法(梯度下降法)来进行参数调整。
[0159] 当模态分解的结果收敛条件(能量捕获率达到设定阈值或迭代次数达到预设值)时,停止优化过程,得到最终的模态分量。
[0160] S3,基于需要预测的工程造价的周期性和频率构建时间窗口,将若干阶的造价模态分量基于所述时间窗口,将选定的模态分量进行时间序列化,得到输入向量。
[0161] 确定时间窗口的长度和滑动步长:首先,根据工程造价数据的周期性和预测需求,确定时间窗口的长度。时间窗口的长度应该能够捕捉到数据中重要的周期性变化,例如季节性变化或其他周期性成分的周期长度。
[0162] 同时,定义时间窗口的滑动步长,即每次滑动窗口向前移动的间隔。步长的选择应考虑到需要充分覆盖数据的周期性特征,同时避免窗口之间过于重叠或不重叠导致信息重复或遗漏。
[0163] 提取时间窗口内的模态分量:对于每个时间窗口,从已经得到的若干阶造价模态分量中提取对应窗口内的数据。
[0164] 每个时间窗口内的数据可以是原始数据在该窗口内的一部分,或者是模态分解后得到的模态分量在该窗口内的部分。
[0165] 时间序列化处理:对于每个时间窗口内的模态分量数据,按照时间顺序进行排列,形成时间序列化的数据。
[0166] 时间序列化可以简单地将每个时间窗口内的数据按时间顺序排列成一个向量或矩阵,以便于后续的时间序列建模或深度学习模型输入。
[0167] 构建输入向量:将时间序列化后的数据作为输入向量。每个时间窗口对应一个输入向量,这些向量将被用作长短期记忆神经网络(LSTM)模型的输入。
[0168] 输入向量的维度取决于所选择的模态分量的数量和每个时间窗口内的数据量,通常可以将多个模态分量的数据堆叠在一起形成更高维度的输入向量,以更好地捕捉复杂的周期性变化。
[0169] S4,构建长短期记忆神经网络模型:将输入向量分别从正反两个方向通过预设的LSTM层,得到正向的隐藏状态序列和反向的隐藏状态序列,最后将正向和反向的隐藏状态序列拼接,得到输出序列。
[0170] 首先,根据之前步骤中生成的时间序列化的输入向量,作为LSTM模型的输入。每个输入向量包含若干时间窗口内的模态分量数据;
[0171] 将输入向量分别输入到预设的正向(forward)和反向(backward)的LSTM层中。
[0172] 正向LSTM层处理输入向量的数据时,按照时间顺序进行;而反向LSTM层则按照相反的时间顺序处理输入向量的数据。
[0173] 正向LSTM层和反向LSTM层分别计算出其隐藏状态序列。每个LSTM层的隐藏状态序列是一个时间序列,其中每个时间步都有一个隐藏状态向量。
[0174] 将正向LSTM层和反向LSTM层计算得到的隐藏状态序列按时间步进行拼接。具体地,将每个时间步上正向LSTM层的隐藏状态向量和反向LSTM层的隐藏状态向量连接在一起,形成一个更长的隐藏状态序列。
[0175] 拼接后的隐藏状态序列作为最终的输出序列。这个序列综合考虑了正向和反向LSTM层的信息,从而能够更全面地捕捉输入向量中的时间依赖关系和周期性特征。
[0176] 所述LSTM层的公式如下:
[0177]
[0178] 式中,it、ft、at分别为输入门、输出门和遗忘门;ct为细胞状态表征长期记忆、η和tanh为激活函数,ht‑1为上一阶段的输出,wix、wfx、wcx、wax、wih、wfh、wch、wah皆为对应的待训练的权重,bi、bf、bc、ba为偏置项。
[0179] S5,初始化长短期记忆神经网络模型,将训练集通过初始化的长短期记忆神经网络模型进行模型训练,不断调整参数的进行优化迭代,当上一次迭代与当前迭代的输出序列的变化差小于预设的迭代终止值或达到最大迭代次数时,终止迭代得到最优的工程造价预测模型。
[0180] S6,将待预测的工程造价数据输入工程造价模型,得到多个不同频率的预测序列,将多个不同频率的预测序列可视化为时间曲线。
[0181] S7,对比多个所述的时间曲线,选取最适合造价预测需求的曲线进行造价预测。
[0182] 使用周期性分析方法(如傅里叶变换或自相关函数)检测每条曲线中的周期性成分;
[0183] 通过预测误差、拟合度对比不同曲线对应的预测模型性能;
[0184] 综合上述分析结果,结合工程造价预测的实际业务背景和需求选择最适合的工程造价时间曲线作为最终的预测依据并进行造价预测,获得工程造价预测结果。
[0185] 本发明具有以下特点:
[0186] 适应周期性和频率变化:VMD(变分模态分解)能够有效地将复杂的工程造价数据分解成多个模态分量,每个分量具有不同的频率和振幅特征;这使得模型能够更好地适应数据中的周期性变化,包括季节性、长期趋势等。
[0187] 数据的多尺度表示:VMD通过优化分解过程,可以在不同的频率分辨率上捕获数据的重要成分。这种多尺度的表示有助于更全面地理解数据的结构和动态变化。
[0188] 模型的灵活性和可解释性:通过设置合适的模态分量数量K和正则化参数,可以控制模型的复杂度和解释能力。较小的K可能会更强调数据中的主要频率成分,而较大的KKK则可以提供更详细的频率分解。
[0189] 减少信息冗余和噪声干扰:VMD在分解过程中考虑了正则化参数λ,这有助于减少模型对噪声和不必要的细节的敏感性,提高了预测模型的稳健性和鲁棒性。
[0190] 预测精度的提升:通过有效地提取和表示周期性成分,VMD可以为后续的预测模型提供更具信息量的输入特征。这有助于提高工程造价预测的准确性和预测能力。
[0191] 科学和工程实践的验证:VMD作为一种基于信号处理理论的技术,已经在许多工程和科学领域得到验证和应用。其优点包括对信号特征的良好提取能力,以及对实际数据变化模式的有效建模。
[0192] 选择核心函数(如高斯函数和Mexican hat函数)的优点主要体现在以下几个方面:
[0193] 频率响应特性的灵活性:核心函数可以根据数据的频率分布特征来选择。例如,高斯函数在频谱中具有较宽的响应特性,适合捕捉较宽范围的频率成分;而Mexican hat函数则更适合捕捉局部的高频和低频成分。选择适当的核心函数可以有效地提取数据中不同频率的信息,从而更好地表征原始数据的周期性变化。
[0194] 适应性强:不同的核心函数适用于不同类型的数据和周期性特征。例如,如果数据存在多个明显的频率成分或频率变化较大的情况下,可以选择高斯函数来涵盖更广泛的频率范围;而在需要更精细的频率分辨率时,Mexican hat函数可以更好地捕捉局部的频率细节。
[0195] 数据平滑性和分辨率:核心函数的选择也会影响到模态分量的平滑性和分辨率。高斯函数通常会产生较为平滑的模态分量,适合于较平稳的周期性成分;而Mexican hat函数则更倾向于捕捉尖锐的变化和局部的频率波动,能够提供更高的频率分辨率。
[0196] 理论支持和实践经验:高斯函数和Mexican hat函数作为常用的核心函数,已经在信号处理和频谱分析中得到了广泛的应用和验证。它们不仅有坚实的理论基础支持,而且在实际应用中已被证明可以有效地处理各种类型的频率分布和周期性特征。
[0197] 因此,选择适当的核心函数对于变分模态分解(VMD)或类似的频谱分解方法至关重要,它直接影响了模型在提取和分解原始数据中周期性和频率信息的能力,从而为后续的时间序列分析和预测建模提供了良好的基础。
[0198] 基于周期性和频率构建时间窗口将模态分量进行时间序列化的过程具有以下优点:
[0199] 捕捉周期性特征:时间窗口的设置可以有效地捕捉工程造价数据中的周期性特征,例如季节性变化、长期趋势等。通过调整时间窗口的长度和滑动步长,可以灵活地适应不同的周期性变化。
[0200] 减少数据维度和复杂度:将模态分量在每个时间窗口内进行时间序列化处理,有助于降低数据的维度和复杂度。这样处理后的数据可以更容易地用于建模和分析,减少了原始数据的复杂性,同时保留了重要的周期性信息。
[0201] 提高模型预测精度:时间序列化后的数据可以更好地适应时间序列模型的需求,例如LSTM等深度学习模型。这些模型能够利用时间序列中的时间依赖性和周期性特征,从而提高预测精度和模型的泛化能力。
[0202] 增强模型的解释性:模态分解和时间序列化过程能够帮助理解工程造价数据中不同周期性成分的贡献和影响。通过对每个时间窗口内的模态分量进行分析,可以更清晰地解释工程造价变化的原因和趋势。
[0203] 适应不同的预测需求:时间窗口的长度和滑动步长可以根据预测需求和数据的特性进行调整和优化。这种灵活性使得方法可以应对不同频率和周期性的数据变化,从而更好地适应实际工程造价预测的需求。
[0204] 综上所述,基于周期性和频率构建时间窗口,并对模态分量进行时间序列化处理,不仅可以有效地提取和利用工程造价数据中的周期性信息,还能够为后续建模和预测提供更可靠和有效的数据输入,从而增强预测模型的准确性和实用性。
[0205] 需要说明的是长短期记忆神经网络(LSTM)是一种特殊类型的循环神经网络(RNN),专门设计用来处理和预测时间序列数据。相比于传统的RNN,LSTM通过引入门控机制(如输入门、遗忘门和输出门),能够有效地解决传统RNN中的梯度消失和梯度爆炸问题,从而更好地捕捉和长期记忆时间序列中的依赖关系。LSTM网络结构中的记忆单元可以在长时间范围内保持信息,使其在处理长序列和学习时间依赖性方面表现优异,因此广泛应用于语音识别、自然语言处理、时间序列预测等领域。
[0206] 最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解,依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。