发明内容
为了解决上述问题,本发明提供一种基于机器学习的智慧水务日用水量预测方法。
一种基于机器学习的智慧水务日用水量预测方法,包括以下步骤:
S1、获取日期、气候数据和历史用水量数据,对数据进行预处理,得到预处理后的日期、气候数据和历史用水量数据;
S2、将预处理后的历史用水量数据输入时间卷积神经网络TCN预测模型提取城市日用水时间序列中的混沌信息和隐藏特征,并根据混沌信息和隐藏特征进行预测,得到TCN预测结果,即基于历史用水量数据的下一天用水量预测结果;
S3、通过日期和气候数据对TCN预测结果进行矫正:将TCN预测结果与日期、气候数据一同作为特征输入机器学习模型中进行再次训练,得到矫正后的下一天用水量预测结果。
进一步的,所述预处理包括:异常值处理:重新赋值/均值填充;
缺失值处理:均值插入/线性插值处理;
非数值数据处理:one-hot离散处理;
数值数据处理:归一化处理,归一化表达式如下:
其中,x′表示归一化之后的数据,σ表示数值型数据的标准差,
表示数值型数据的平均值。
进一步的,TCN预测模型采用时间卷积神经网络,TCN预测模型的结构包括输入层、4个隐藏层、输出层,各个隐藏层之间采用残差连接,每一个隐藏层中包含两个一维扩张因果卷积和一个1*1卷积。
进一步的,TCN预测模型的具体结构包括:使用一维因果卷积和扩张卷积作为标准卷积层,将每两个标准卷积层恒等映射封装为一个残差模块,由残差模块堆叠起深度网络,在最后几层使用全卷积层代替全连接层;最后一层为输出层,输出层用于将隐藏层最后一个维度的输出做一个线性回归,输出结果。
进一步的,TCN预测模型的中间处理过程包括:
S21、将预处理后的历史用水量数据直接作为模型的输入,经过时间卷积神经网络TCN预测模型的4个隐藏层,在每一个隐藏层中,输入数据首先经过两个一维扩张因果卷积,每个扩张因果卷积之后先使用WeightNorm对模型的权重进行权重正则化,其次使用ReLU非线性函数作为激活函数,再添加Dropout实现正则化;输入数据经过两次扩张因果卷积之后,得到扩张因果卷积后的结果,将输入数据输入一个1*1卷积,得到1*1卷积结果;将1*1卷积结果与扩张因果卷积后的结果相加,得到一个隐藏层提取的特征;在在一个隐藏层进行特征提取时,通过残差连接块把下层特征拿到高层增强准确率;
S22、在经过4个隐藏层之后,将隐藏层最后一层输出的最后一维做线性回归,得到下一天的日用水量预测结果,计算预测结果与真实数据的RMSE,若RMSE的值小于RMSE阈值,则说明TCN预测模型训练完毕,得到训练好的TCN预测模型。
进一步的,所述机器学习模型包括4个基模型,分别是:RandomForest、Xgboost、Lasso、LinearRegression。
进一步的,以3个基模型RandomForest、Xgboost、Lasso作为初级学习器,每个基模型RandomForest、Xgboost、Lasso之后连接平均模型AverageModel,平均模型AverageModel的作用是对基模型的多次预测结果求平均。
进一步的,LinearRegression模型为次级学习器,将RandomForest、Xgboost、Lasso通过学习后生成的新数据集,用于训练次级学习器LinearRegression,训练完毕后得到StackModel。
进一步的,机器学习模型的工作流程包括:
S31、将训练数据集分别输入每个初级学习器中,初级学习器根据训练数据分别进行多次预测,得到多次预测的结果,分别对每个初级学习器的多次预测的结果求平均,得到初级学习器的最终预测值;
S32、得到初级学习器的最终预测值后,将所有初级学习器的最终预测值进行拼接,并生成一个新的数据集输入次级学习器LinearRegression中进行数据拟合,得到次级学习器LinearRegression的输出结果;
S33、将三个初级学习器的输出结果和次级学习器LinearRegression的输出结果输入平均模型AverageModel求平均,得到的平均值作为平均模型AverageModel的最终输出值;
S34、通过LinearRegression对三个初级学习器的最终预测值进行融合处理,得到StackModel融合模型结果;
S35、通过融合层对RandomForest、Xgboost、AverageModel的输出以及StackModel融合模型结果再次进行融合,得到用于下一天日用水量预测的最终结果,融合公式如下:sum=0.25*RandomForest+0.25*Xgboost+0.25*StackModel+0.25*AverageModel。
本发明的有益效果:
本发明将机器学习与城市日需水量预测相结合,准确预测城市日需水量,促进水资源的更经济利用,保证供水系统的可持续性。本发明的一种基于机器学习的智慧水务预测日用水量,在考虑气候变量和每日耗水量的影响的基础上,建立了多模型融合的模型,能够较准确预测下一天的用水量,辅助城市用水的调度,发挥数据价值,给用户提供更加精准的服务。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种基于机器学习的智慧水务日用水量预测方法,包括但不限于以下步骤:
S1、获取日期、气候数据和历史用水量数据,对数据进行预处理,得到预处理后的日期、气候数据和历史用水量数据。
所述预处理包括:异常值处理(重新赋值/均值填充)、缺失值处理(均值插入/线性插值)、非数值数据处理(one-hot离散处理)、数值数据处理(归一化处理),具体描述如下:
(1)异常值处理:针对数据中存在未知的异常值,如风力的等级一般都是1~9级,但是数据存在着一些数据为微风,小于3级,4~5级这种不规则数据,对于这种数据采用重新赋值,赋值为一个合理的范围。还有观察异常数据,发现在某几天,用水数据非常大,采用前一天和后一天的数据均值填充。
(2)缺失值处理:对于降雨量的缺失,根据当天的天气状态,取相同天气日降雨量均值插入。对于日用水量的缺失,采用线性插值的方法。还有小部分气候数据缺失均采用线性插值的方法。
(3)非数值数据处理:天气、风向、周末、月份变量进行one-hot离散处理。
(4)数值数据处理:对数值型数据进行归一化处理。
归一化处理的公式如下:
其中,x′表示归一化之后的数据,σ表示数值型数据的标准差,
表示数值型数据的平均值。
S2、将预处理后的历史用水量数据输入训练好的时间卷积神经网络TCN预测模型提取混沌信息和隐藏特征,并根据混沌信息和隐藏特征进行预测,得到TCN预测结果,即基于历史用水量数据的下一天用水量预测结果。
TCN预测模型如图2所示,TCN预测模型采用时间卷积神经网络,TCN预测模型包括输入层、4个隐藏层、输出层,各个隐藏层之间采用残差连接,每一个隐藏层中包含两个一维扩张因果卷积和一个1*1卷积。
在一个优选实施例中,TCN预测模型中的卷积层均采用一维卷积,channel size为25,TCN的结构中隐藏层的参数kernel size设置为3,dilations设置依次为[1,2,4,8],层数为4层,每个batch size设置为30,epochs为50,padding的依次为(Kernel size-1)*dilation。
TCN的卷积层结合了扩张卷积与因果卷积两种结构。
TCN的卷积和普通1D卷积最大的不同就是用了扩张卷积(dilatedconvolutions),越到上层,卷积窗口越大,而卷积窗口中的“空孔”越多,这样设置隐藏层参数的目的是为了让TCN预测模型的输入输出是同样大小的序列,例如网络输入x0,...,xT的时序数据,输出的预测结果也是一样大小的序列y0,...,yT。此外,扩张卷积可以做到每一层隐层都和输入序列大小一样,并且计算量降低,感受也足够大。使用因果卷积的目的是为了保证前面时间步的预测不会使用未来的信息,因为时间步t的输出只会根据t-1及之前时间步上的卷积运算得出。
为了提高准确率,TCN加入了残差卷积的跳层连接,以及1×1的卷积操作,TCN的残差模块内有两层扩张卷积和ReLU非线性函数,且卷积核的权重都经过了权重归一化。此外TCN在残差模块内的每个空洞卷积后都添加了Dropout以实现正则化。残差卷积把下层特征拿到高层增强准确率;1×1卷积用来降维。直接把较下层的特征图跳层连接到上层,对应的每个Cell的特征图数量(也就是通道数channel)不一致,导致不能直接做类似Resnet的跳层特征图加和操作,于是,为了两个层加和时特征图数量吻合,用1×1卷积做了一个降维的操作。总结来讲,TCN是:同时用到一维因果卷积和扩张卷积作为标准卷积层,并将每两个这样的标准卷积层恒等映射封装为一个残差模块(包含了relu函数),再由残差模块堆叠起深度网络,并在最后几层使用全卷积层代替全连接层;最后一层为输出层,输出层用于将隐藏层最后一个维度的输出通过一个线性回归,输出结果。
残差连接的实现方式包括:构建一个残差块(上述的残差模块)来代替一层的1×1的卷积。一个残差块包含两层的卷积和非线性映射,在每层中还加入了WeightNorm和Dropout来正则化网络。残差连接是训练深层网络的有效方法,它使得网络可以以跨层的方式传递信息。
TCN预测模型的输入采用的是当前日期前30天的日用水量,TCN预测模型的输出是基于历史用水量数据的下一天用水量预测结果。TCN预测模型的中间处理过程包括:
1、输入变量为与预测当天相关性较大的历史30天的用水量数据。网络产生与输入长度相同的输出,以及未来不会泄漏到过去的事实。为了完成第一点(输出与输入长度相同),TCN预测模型使用1D全卷积网络(FCN)架构,其中每个隐藏层的长度与输入层相同,并且添加长度(kernel size-1)零填充以保持后续层与前一层的长度相同。为了实现第二点(未来不会泄漏到过去的事实),TCN使用因果卷积,在这种卷积中,时间输出仅与前一层中的时间和更早的元素卷积。
2、一个简单的因果卷积只能回顾一个网络深度的线性规模的历史,这使得将上述因果卷积应用于序列任务,特别是那些需要较长历史的任务具有挑战性。本发明的解决方案是使用扩张卷积使感受野成倍增大,一个扩张的卷积可以简化为一个正则卷积。使用更大的扩容使顶层的输出能代表更大范围的输入,从而有效地扩展了卷积神经网络的接受域。因此,本发明可以采用两种增加TCN接受场的方法:选择更大的过滤器尺寸k或者增加膨胀系数d,其中一个这样的层的有效历史是(k-1)d。随着网络深度指数地增加d(即在网络的第i层d=O(2i)),确保了在有效历史记录中有一些过滤器能够获取每个输入,同时还允许使用深度网络生成非常大的有效历史记录,图2所示中提供了一个说明。
3、由于TCN的接受域依赖于网络深度n、滤波器大小k和扩张因子d,因此,更深更大的TCNs的稳定变得重要。每一层都包含多个用于特征提取的过滤器。因此,在通用TCN模型设计中使用通用残差模块来代替卷积层,TCN具有两层扩张的因果卷积和非线性,使用整流线性单元ReLU。对卷积滤波器应用权值归一化进行归一化。此外,在每次扩张卷积后都加入一个空间遗漏进行正则化:在每一步训练时,将整个通道归零。在TCN中,输入和输出可以有不同的宽度。为了考虑输入-输出宽度的差异,我们额外使用1x1卷积来确保元素加法⊕接收到相同形状的张量。
如图3所示,在TCN预测模型的每一个隐藏层中,输入数据首先经过两个一维扩张因果卷积,每个扩张因果卷积之后先使用WeightNorm对模型的权重进行权重正则化,其次使用ReLU非线性函数作为激活函数,再添加Dropout实现正则化;输入数据经过两次扩张因果卷积之后,得到扩张因果卷积后的结果,将输入数据输入一个1*1卷积,得到1*1卷积结果;将1*1卷积结果与扩张因果卷积后的结果相加,得到一个隐藏层提取的特征;在在一个隐藏层进行特征提取时,通过残差连接块把下层特征拿到高层增强准确率。
4.在经过4层隐藏层之后,将隐藏层最后一层输出的最后一维做线性回归,得到下一天的日用水量预测结果,计算预测结果与真实数据的RMSE(均方根误差),若RMSE的值小于RMSE阈值,则说明TCN预测模型训练完毕,得到训练好的TCN预测模型,否则继续训练TCN预测模型。
TCN直接利用卷积强大的特性跨时间步提取特征,通过TCN预测模型可以提取城市日用水时间序列中的混沌信息和隐藏特征,省去了手工提取特征的麻烦。
S3、结合日期和气候数据对TCN预测结果进行矫正,具体地,将TCN预测结果与日期、气候数据作为特征一同输入机器学习模型中进行再次训练,得到矫正后的下一天用水量预测结果。
在机器学习模型中,先用初级学习器对数据进行学习预测,然后根据初级学习器的预测结果生成新数据集输入到次级学习器中进行再次预测,得到次级学习器的预测结果,然后通过融合层对初级学习器的预测结果和次级学习器的预测结果进行融合,得到矫正后的预测结果。
所述机器学习模型包括:初级学习器、次级学习器以及融合层,具体描述如下:
初级学习器:以3个基模型RandomForest、Xgboost、Lasso作为初级学习器,每个基模型RandomForest、Xgboost、Lasso之后连接平均模型AverageModel;平均模型AverageModel的作用是对初级学习器的多次预测结果求平均,得到一个平均结果,因此连接在每个基模型之后。
次级学习器:采用LinearRegression模型。通过简单的LinearRegression对三个初级学习器的最终预测值和元模型的拟合结果进行融合处理,得到StackModel融合模型结果;
第三层:融合层:将初级学习器RandomForest、初级学习器Xgboost、平均模型AverageModel的输出以及StackModel融合模型结果进行融合,得到融合结果,所述融合结果即是矫正后的下一天日用水量预测的最终结果。
训练数据为TCN预测结果、日期以及气候数据,采用5折验证的方式划分训练数据,将80%数据作为训练集,20%数据作为测试集。以RMSE作为评判标准,计算表达式为:
y
i为日用水量真实值,
为日用水量预测值,m为训练集中数据个数。真实数据减去预测数据。RMSE值越小,说明模型的预测效果越好。
在一个优选实施例中,通过多次试验结果分析得知,RMSE值在0.003-0.004之间该TCN预测模型能够实现准确的预测。
如图4所示,机器学习模型包括基模型和元模型,在一个优选实施例中,选用3个基模型RandomForest、Xgboost、Lasso作为初级学习器,选用基模型LinearRegression为元模型,LinearRegression也作为次级学习器。
在机器学习模型中,先用单模型对数据进行拟合,然后对单模型拟合进行融合,最后加权求和,得到矫正后的预测结果。具体地机器学习模型的工作流程包括:
1.每个初级学习器根据训练数据分别进行多次预测(每个初级学习器进行训练时采用完整训练集),得到多次预测的结果,分别对每个初级学习器的多次预测的结果求平均,得到各个初级学习器的输出结果(即各个初级学习器的最终预测值)。
在初级学习器中,将完整训练数据集分别输入RandomForest基模型、Xgboost基模型和Lasso基模型中,针对各个基模型分别进行5次训练,每次训练保留1/5的样本用作训练时的检验,训练完成后对测试数据进行预测,一个模型会对应5个预测结果,将这5个结果取平均,分别得到这三个初级学习器的最终预测值。
2.得到初级学习器的最终预测值后,将所有初级学习器的最终预测值进行拼接,并生成一个新的数据集输入元模型LinearRegression中进行数据拟合,得到元模型的拟合结果,即LinearRegression的输出结果。所述新数据集用于训练次级学习器LinearRegression,在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记,如图6所示。
3.将三个初级学习器的输出结果和次级学习器LinearRegression的输出结果输入平均模型AverageModel求平均,得到的平均值作为平均模型AverageModel的最终输出值,如图5所示。
4.通过简单的LinearRegression对三个初级学习器的最终预测值和元模型的拟合结果进行融合处理,得到StackModel融合模型结果。
5.综上所述,共得到6个预测结果,分别是:4个单模型RandomForest、Xgboost、Lasso、LinearRegression的预测结果,平均模型AverageModel的结果和Stackmodel的结果。最后通过融合层对RandomForest、Xgboost、AverageModel、Stackmodel的预测结果再次进行融合,得到融合结果,该融合结果即用于下一天日用水量预测的最终结果。
融合公式如下:sum=0.25*RandomForest+0.25*Xgboost+0.25*StackModel+0.25*AverageModel。
将融合结果与真实的数据做对比,具体地,TCN预测模型采用RMSE(均方根误差)对预测结果进行评价,均方根误差计算表达式如下:
若RMSE值小于特定RMSE阈值,则输出预测结果,至此,已得到精确拟合数据的结果。
本发明提供的一种基于机器学习的智慧水务预测日用水量,首先通过TCN提起了历史日水量数据中的混沌特性,然后再用气候、日期数据对预测结果进行矫正,对矫正模型采用提升特征相关性的模型集成,从而保证模型的有效性,最终等到了一个比较好的预测效果,从而达到了预测城市未来用水量的结果,发挥了数据的价值,给城市规划的决策者提供了准确的信息。
当介绍本申请的各种实施例的元件时,冠词“一”、“一个”、“这个”和“所述”都意图表示有一个或多个元件。词语“包括”、“包含”和“具有”都是包括性的并意味着除了列出的元件之外,还可以有其它元件。
需要说明的是,本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-0nly Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
以上所述仅是本申请的具体实施方式,应当指出,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。