基于机器学习的水厂短期供水量预测模型构建
2022-08-18周伏虎
徐 东,张 曾,周 迅,周伏虎
(中国水利水电第七工程局有限公司,成都,610213)
随着信息技术的蓬勃发展,智慧城市理念的提出,智慧水务已成为智慧城市建设的重要一环[1],其要求建设精细化、动态化、高效化的水务系统。短期供水量的精准预测可为科学供水提供指导,提高资源利用率。在市政管网中不利点水压达标的前提下,通过模型预测的供水量数据对供水模式进行优化。使得泵组在总功率相对较小的工况下工作,实现节能降耗的目的。目前,已有不少学者在此领域引入人工智能模型。如高赫余等[2]基于时间、气象、节假日等多种维度使用Adaboost技术来训练短期供水量预测模型;王盼等[3]考虑了产业结构、人口、GDP等数据,使用随机森林相关技术来对城市需水量进行预测;郭冠呈等[4]使用了BiLSTM神经网络进行了常州市15分钟粒度的供水量预测;王圃等[5]在BP神经网络的基础上,提出了多分辨BP神经网络的建模新思路;鞠佳伟等[6]基于多元线性回归法进行日供水量预测模型的构建。以上各种方案也取得了较好的预测效果。然而,由于气象差异、地域用水习惯差异等客观条件,上述解决方案无法直接推广应用。为更好地对时供水量进行预测,本文尝试使用ARIMA、随机森林、XGBoost、LSTM等算法进行建模,应用四川省乐山市夹江县城区小时粒度供水量数据对模型的推理能力进行验证。对物联网采集到的数据进行预处理,并从天气、日期、统计等角度进行人工特征的构造,使得模型具备良好的泛化能力。
1 试验材料和方法
1.1 数据描述
本文供水量数据来源于中电建夹江青衣水厂,自2020年07月25日-2021年08月21日共10160条时数据。其中,粒度为小时,每天从0时-23时共24条数据。青衣水厂的供水量日变化曲线如图1所示。
图1 日供水量曲线
城市供水主要是自来水厂为城市的正常运转提供必要的水资源。由图1可见,水厂每日供水量有着明显的变化。时供水量有明显的周期性变化(早高峰、晚高峰),且与天气状况、节假日等诸多因素密切相关[7]。供水量的变化大致有周、季节、年的一些时序性规律。同时,由于一些极端天气、大型活动、社会热点事件等状况的发生,供水量也有一些随机的波动。
原始数据只包括供水总量及对应的时间戳,特征比较单薄。本文对初始特征进行了相应的特征变换。对时间戳数据按照峰、平、谷、节假日等维度进行特征扩展。另外,使用网络爬虫爬取了对应时间段的气象数据,并构建特征作为补充。
1.2 异常数据的处理方法
由于网络原因、在线仪表维护和检修等原因,水厂生产数据或多或少都会存在一些异常,如果直接使用这些数据会严重干扰模型的预测结果,因此,有必要对相关数据进行识别并处理。
1.2.1 异常数据识别
异常值检测方法有很多,如周志华团队提出的孤立森林法、3倍标准差检测法、箱线图法等[8]。孤立森林属于无监督学习范畴,它将所有数据按照某个特征的随机值划分为两部分,对于每棵子树来说,针对数据集的不同特征值,会随机挑选特征值取值范围就可以逐渐将正常值和异常值分开。3倍标准差检测法是假定数据服从高斯分布,通常将3倍标准差的误差认为是数据的极限误差,因其理论简单和可靠的校验结果被广泛应用。本文主要采用3倍标准差的思路来对异常值进行识别。
1.2.2 异常数据处理
分析水厂的供水历史数据发现,产生供水量数据共10160条,存在着73条缺失数据,主要体现在2020年08月11日、19日、20日、10月15日、10月17日。对于异常数据,采用如下处理方法:一是如果某一小时数据出现缺失或异常,使用该时间节点前后两天所对应小时的平均值来进行填充;二是如果某小时前后两天对应小时水量差距很大,则使用滑动均值来对异常数据进行替换。其处理逻辑是将滑动窗口大小设置为72h(周期为3d),使用最近3d数据的加权平均值来替换当前时刻的异常值。
2 模型介绍
本文用ARIMA、随机森林、XGBoost、LSTM长短期记忆神经网络四种预测模型来对夹江水厂供水量进行预测并比较结果。
2.1 ARIMA
ARIMA(差分自回归移动平均模型),它是一种时间序列模型[9]。该技术要求数据序列是平稳的,且输入的数据是单变量序列。
2.2 随机森林
随机森林是一种集成算法,它由多个弱学习器组成。归功于随机的数据抽取和特征抽取,该算法有很强的泛化能力。
它的主要步骤如下:
(1)使用自助抽样法对原始数据集进行数据的抽取。
(2)无放回地随机抽取一定数量的特征,并在这些特征中选择最佳的分割[10]。自上而下地生成决策树并重复多次类似的操作。
(3)最终使用投票法决定决策结果。
(4)使用袋外理论来评估误差[10]。
2.3 XGBoost
XGBoost是由陈天奇提出的一种分布式的算法框架。它是对传统的梯度提升算法的一个改良,核心思想是基于残差的训练[11]。
XGBoost有如下优点:①对于缺失数据采用稀疏感知策略可以直接处理;②对训练的每个特征排序并且以块的结构存储在内存中,方便后面的重复利用;③算法自带了L1和L2正则项,可以有效防止过拟合;④损失函数包括了一阶导数和二阶导数;⑤在每次节点分裂前进行列随机采样,降低过拟合风险。
2.4 LSTM神经网络
LSTM神经网络是RNN的一个变种,RNN与传统的神经网络相比,它最大的优势是带有动态的记忆性。它的结构如图2所示。
图2 RNN结构示意
RNNs在训练时采用了反向传播算法。在遇到长序列时,信息和残差在RNN神经元中传递会随时间逐步损耗而造成梯度消失。为此,人们在RNN的基础上提出了LSTM神经网络。该算法的结构如图3所示。
图3 LSTM结构示意
LSTM主要引入了三个经典的门结构,分别为遗忘门、输入门和输出门[12]。相对于RNN它有如下优点:具有长期记忆能力、改善RNN中的长时依赖问题,能够缓解梯度消失的情况。
3 供水量预测模型构建
3.1 特征构造
数据和特征对模型的预测能力有着直接的影响。如何将原始数据衍生出多种维度,进而提高模型对未知数据的预测精度至关重要。
因此,对于时供水量预测问题,本文引入特征工程相关技术,分别从日期、气候、历史数据统计这几个维度进行特征构建。
3.1.1 挖掘日期信息
日期的变化、四季的更替都和供水量息息相关[13]。例如夏季气温普遍较高,生活用水激增,而冬季的用水量会相对较少;在春节、国庆等长假中,由于人们的出行习惯等因素的影响,也会对用水量产生较大的波动。因此,对日期信息做了进一步细化,得出日期所属的季节、月份、年内第几天、月内第几天、周内第几天等信息。
日期按照类型又可分为节假日、双休日、调休日和工作日。日期的不同,居民的用水习惯会有所差异。为了使日期类型作为模型的输入项,需要对这几种不同的日期类型进行处理并转化为数值类型。由于春节、端午、中秋节等节假日的特殊性,会给传统的时间序列算法预测精度造成很大影响。因此,本文采用将不同节假日打不同标签的方法,这样的处理方法可以提高供水量预测的精度。
用水量峰、平、谷的变化和时间因素密切相关。通过分析数据发现,可按时段分为早高峰、晚高峰、平谷、低谷时段。并且有较强的周期,与居民的活动有较强的相关性。在早晚时间段,用水量会出现用水高峰。而在午夜后,会出现低谷期。基于建模的需要,本文对早高峰、晚高峰、平谷及低谷等时段进行数据映射。
3.1.2 挖掘气象数据
气候因素也会在很大程度上影响用户的用水行为。其中温度的影响最为突出。如遇到持续的高温天气会导致用水量的加大[14]。另外,还要考虑天气状况,风力大小也会影响到城市的生产生活。本文将天气状况按照晴天、阴天、降雨级别等维度进行分解。将气温按照多个区间进行分箱。
3.1.3 挖掘统计特征
由于城市供水是一个持续不断的过程,过往一段时间的供水量会对当前的供水量产生一定影响。为了深入挖掘时序变化所引起的供水量变化,笔者将上周同一天同一小时、昨天同一小时、最近一天平均供水量、最近三小时平均供水量等统计特征加入到模型之中。
综上所述,本节主要目标是建立时供水量预测模型,根据预测结果指导供水调度。所以有必要找出对供水量有影响的因素。本文考虑了季节、月份、星期、高峰、低谷、平谷、时间、平均气温、天气状况、风力、节假日等因素。同时,对供水量数据进行了统计特征的构造,经过对日期信息的特征扩展,可以得出该日期所属周的第几天、月的第几天、年的第几天等信息。通过以上的特征扩展,将原始数据构造出多维特征。
3.2 评价标准
模型构建完成后,需要对它的推理能力做出评估。如果经过评估后达不到预期效果,还需要对模型进行不断迭代优化。对于本文中的时供水量预测模型,主要采用平均绝对百分比误差(MAPE)和平均绝对误差(MAE)作为评估依据,数学定义如式(1)和(2)。
(1)
(2)
3.3 Pearson相关系数
本文构建出了如3.1所述的多维特征。但并不是需要将每个特征都要加入模型,大量的特征加入既会耗费大量的资源、又会影响模型的最终效果。因此,在建模时需要对特征进行筛选。
特征选择的方法有多种多样,如PCA、特征重要度排序、相关系数法、方差法。本文采用方差法结合Pearson相关系数来进行特征的初步筛选。首先将方差接近于零的变量进行过滤,在此基础上使用相关系数进行变量的二次过滤。如果变量之间相关系数的绝对值太小,则认为它们之间相关性较弱,本文将阈值设定在0.15。图4展示了各特征之间的相关性矩阵。
图4 各指标参数间的相关性矩阵
3.4 超参数优化
为了尽可能地让机器学习模型有更好的效果,有必要对超参数进行调优,不同的调参策略会使得模型的训练和预测效果不尽相同。常见的调参方式主要有手工调参、网格搜索、随机搜索、贝叶斯优化法[15]。
手动调参相对原始,需要人工大量的尝试,进而消耗宝贵的时间,且很难得到最佳的超参数。而网格搜索会穷举每一种可能的超参数组合来寻找最优值,调参过程也相对缓慢。随机搜索是一种随机采样的调参方式,往往可以获得近似最优解。贝叶斯优化可以用非常少的步数就能找到比较好的超参数组合。本文采用python结合相应的bayes_opt包来完成超参数的调优。
4 结果与讨论
本文首先将历史数据集进行划分。其中,2020年7月25日到2021年6月30日为训练集,2021年7月1日到2021年8月21日为测试集。分别使用传统的ARIMA、基于树的集成学习相关模型,以及神经网络技术进行时供水量预测模型的构建。表1为模型在测试集的预测效果。
表1 模型预测效果对比
如表1所示,在同样的测试集上,使用XGBoost模型误差评估值MAPE为4.7,MAE为82.1,远低于其他几个模型,与其他模型相比预测效果有较大的提升。采用不同模型对时供水量的预测效果见图5-图8。
图5 采用ARIMA对时供水量的预测效果
图6 采用随机森林对时供水量预测的效果
图7 采用XGBoost对时供水量预测的效果
图8 采用LSTM对时供水量预测的效果
供水量预测建模采用特征工程、相关性分析和模型训练三大步骤。其中,特征工程构建了与天气状况、日期、时间等与供水量息息相关的因子。在此基础上,描述了用时间序列模型ARIMA、随机森林、XGBoost、长短期记忆神经网络LSTM四种算法对夹江城区供水量进行一个小时的短期预测。模型具有自动、实时、准确、方便等优点,与其他模型对比后发现使用XGBoost模型进行短时供水量预测有明显优势。XGBoost模型在数据集上有最高的精度,而其他几种模型的预测效果相对较差。
在对四种算法进行比较之后选择基于XGBoost算法建立水厂的短时供水量预测模型。将天气、日期等数据传入模型后,模型可以将数据进行特征扩充并快速、准确推理未来一小时的供水量。依据模型的推理结果,再结合调度人员的历史经验对城区的供水量进行合理调度,达到用科学技术提高管理经验的目的,实现节能降耗、减少水量损失的效果。