技术文章和通讯

数据驱动与MATLAB分析见解:能源负荷预测的案例研究

赛斯迪兰和亚当Filion MathWorks


能源生产商,电网运营商,交易员必须做出决定基于估计未来的电网上的负载。因此,准确的预测能源负载都是必要性和业务优势。

今天的大量数据使它可以创建高度准确的预测模型。挑战在于开发数据分析工作流程,可以将这些原始数据转化为可操作的见解。一个典型工作流程包括四个步骤,每一个都带来了自己的挑战:

  1. 进口来自异类数据源的数据,如web档案,数据库和电子表格
  2. 清洗去除离群值的数据,和噪声,结合数据集
  3. 开发一个精确的预测模型的基础上,使用机器学习技术聚合数据
  4. 部署模型作为一个应用程序在生产环境中

在本文中,我们将使用MATLAB®完成整个数据分析工作流为负荷预测应用程序。使用这个应用程序,实用程序分析师可以选择任何地区在纽约州的一块过去能源负载和预测未来负荷(图1)。他们可以使用结果来了解天气能源负荷的影响,并确定多大的权力来生成或购买。鉴于纽约州仅消耗几个每年数十亿美元的电力,结果为发电企业有重要的影响。

图1所示。到纽约的MATLAB程序对能源需求预测。
图1所示。到纽约的MATLAB程序对能源需求预测。

导入和探索数据

这个案例研究中使用了两个数据集:能源负载数据纽约独立系统运营商(普及)的网站,天气特别的温度和露水从国家气候数据中心。

普及发布月度能源数据在一个ZIP文件,其中包含一个单独的逗号分隔值(CSV)文件每一天。典型的方法处理数据分布在多个文件下载示例文件,探索确定要分析的数据值,然后导入这些值的完整数据集。

导入工具MATLAB让我们选择列一个CSV文件并将选中的数据导入各种MATLAB数据结构,包括向量,矩阵,细胞数组和表。能量负载CSV包含一个时间戳,一个地区的名字,该地区的负荷。CSV文件导入工具,我们选择列和一个目标格式。我们可以直接从示例文件导入数据或生成一个进口的MATLAB函数相匹配的所有文件的格式示例文件(图2)。后来我们可以编写一个脚本,该脚本调用这个函数以编程方式导入所有数据从我们的来源。

图2(上)。选择导入CSV数据。
图2(底部)。一个自动生成的MATLAB函数导入数据。
图2。上图:选择导入CSV数据。下:一个自动生成的MATLAB函数导入数据。

一旦数据被导入,我们生成初步的情节来确定趋势,重新格式化日期和时间戳,并执行转换为例,通过交换数据表中的行和列。

清洁和聚合数据

最真实的数据包含缺失或错误的价值观,和之前的数据可以探索,这些必须被识别并解决。重新格式化和策划NYISO数据之后,我们发现在负载峰值超出正常需求的周期性起伏(图3)。我们必须决定是否这些峰值异常和可以忽略的数据模型,或者他们是否显示模型应该考虑的一个现象。我们选择只检查正常的周期性行为;我们可以解决峰值后如果我们决定,我们的模型需要考虑这种行为。

图3。的情节能源负载显示异常激增的需求。
图3。的情节能源负载显示异常激增的需求。

有几种方法可以自动识别的峰值。例如,我们可以应用一个平滑样条和精确的峰值计算平滑和原始曲线之间的差异(图4)。

图4。:情节的实际负荷和平滑负荷异常环绕。底部:情节的实际和平滑值之间的差异。
图4。:情节的实际负荷和平滑负荷异常环绕。底部:情节的实际和平滑值之间的差异。

删除后的异常点数据,我们必须决定如何处理他们删除丢失的数据点。我们可以简单地忽略它们;这个的优点是减少数据集的大小。或者,我们可以用近似代替插值或使用MATLAB中的遗漏值的可比数据从另一个示例,注意不要偏差数据。对于估计负载的目的,我们将忽略缺失值。我们仍然有足够的“好”数据创建精确的模型。

清洗后的温度和露点数据使用相似的技术,我们总两个数据集。这两个数据集存储在MATLAB表数据类型。我们应用MATLAB通过调用表加入outerjoin函数。结果是一个表给我们简单的访问负载,温度和露点为每个时间戳。

建立预测模型

MATLAB建模提供了很多技术数据。如果我们知道不同的参数如何影响能源负荷,我们可能使用统计数据或曲线拟合工具与线性或非线性回归模型的数据。如果有许多变量,底层系统特别复杂,或控制方程是未知的,我们可以使用机器学习技术,如决策树和神经网络。

从负荷预测和许多变量被认为涉及到复杂的系统,我们将选择机器learning-specifically,监督式学习。在监督学习中,模型基于历史输入数据(温度)和输出数据(能源负载)。模型训练后,它是用来预测未来的行为。对能源负荷预测,我们可以使用神经网络和神经网络工具箱™来完成这些步骤。工作流程如下:

  1. 使用MATLAB中的神经拟合程序:

    1. 指定我们相信相关的变量在预测负载,包括小时的天,天的星期,温度和露点
    2. 选择滞后指标,比如负载从之前的24小时
    3. 指定目标,或者我们想要的变量来预测这种情况下,负载的能量
  2. 选择要使用的数据集来训练模型,以及一个数据集,我们准备测试。

在这个例子中,我们选择了一个模型。对于大多数实际应用程序,你会尝试几种不同的机器学习模型和评估他们的表现在训练和测试数据。统计和机器学习工具箱™提供各种各样的机器学习方法,所有使用类似的调用语法,因此很容易尝试不同的方法。工具箱还包括分类学习者应用交互式培训监督学习模型。

培训完成后,我们可以使用测试数据来看看模型执行新数据(图5)。

图5。上图:情节测量负载和负载预测的神经网络。底部:情节比较测量和预测价值。
图5。上图:情节测量负载和负载预测的神经网络。底部:情节比较测量和预测价值。

自动化的步骤设置、培训和测试我们使用神经的神经网络拟合程序生成MATLAB代码,我们可以从一个脚本调用。

测试训练模型,我们对我们持有储备的数据运行它并比较其预测与实际测量数据。结果表明,该神经网络模型有一个平均绝对百分比误差(日军)不到2%的测试数据。

当我们第一次运行我们的模型对测试数据集,我们注意到一些实例模型的预测分歧明显与实际负载。在假期,例如,我们看到偏离预测的行为。我们也注意到,模型的预测负荷10月29日,2012年,在纽约的数千兆瓦(图6)。一个快速的互联网搜索显示,飓风在这个日期桑迪扰乱了整个地区的电网。调整模型来处理是有意义的假期,因此常规和可预见的事件,但这样的风暴桑迪是一次性事件,因此很难解释。

图6。块测量负载和负载预测纽约市10月29日,2012年。
图6。块测量负载和负载预测纽约市10月29日,2012年。

开发、测试和改进一个预测模型通常需要大量的迭代。训练和测试时间可以减少通过使用并行计算工具箱™多个处理器上同时运行几个步骤。规模非常大的数据集可以由许多计算机上运行的步骤与MATLAB并行服务器™。

部署应用程序模型

一旦模型精度符合我们的需求,最后一步就是将它移动到一个生产系统。我们有几个选项。用MATLAB编译器™我们可以生成一个独立的应用程序或电子表格插件。用MATLAB编译器SDK我们可以生成。net和Java™®组件。用MATLAB生产服务器™我们可以直接在生产环境中部署应用程序能够同时为大量用户服务。

对于我们的负载预测工具,我们在MATLAB开发的数据分析可以通过RESTful API,它返回数值预测和情节都可以包含在应用程序或报告。我们指定的生产服务器编译器应用MATLAB函数,我们想要部署。应用程序自动执行和包依赖关系分析必要的文件到一个可部署的组件。用MATLAB生产服务器部署组件处理引擎,使分析对网络上的任何软件或设备可用,包括web应用程序,其他服务器和移动设备(图7)。

图7。数据分析在MATLAB部署在生产环境中使用Apache Tomcat和MATLAB生产服务器。
图7。数据分析在MATLAB部署在生产环境中使用Apache Tomcat和MATLAB生产服务器。

下一个步骤

这里开发的能源负荷预测模型提供了高度准确的预测,可以通过决策者通过web前端。因为模型验证了几个月的测试数据,我们有信心能够给一个24小时的预测在实际载荷的2%。

模型可以扩展到包含额外的数据来源,如假日日历和灾害性天气警报。因为整个数据分析工作流是在MATLAB代码,其他来源的数据可以很容易地与现有的数据,合并和重新训练模型。一旦新MATLAB模型部署到生产服务器,负荷预测应用程序背后的算法自动updated-end用户甚至不需要刷新web页面。

2015 - 92308 v00出版

查看相关文章的能力

为相关行业观点文章