例1-用能耗数据进行单变量时间序列预测
在本例中,将解决一个回归域问题。我们将要研究的数据集是测量一个家庭在一段时间内的用电量的概要。我们可以推断,这种行为可以很容易地遵循某种模式(当人员使用微波来准备早餐,早上起床1小时内用电量会增加,而在下午可以减少一点,然后晚上打开所有的灯再增加,从午夜到次日醒来这段时间用电量将减少到零)。我们试着在当前样本情况下对这种行为建模。
看一下这个图(第一个1500个样本)我们看到了一个初始的瞬态状态,很可能是在测量就位的时候,然后是一个明显的高消耗和低消耗的循环。
通过简单的观察,我们还发现每个循环大约有100个样本,非常接近这个数据集每天96个样本。数据集预处理为了保证反向传播更好的收敛,需要对输入数据进行规范化处理。因此,使用经典的缩放和中心化技术,减去平均值,并按最大值的下限缩放。为了获得所需的值,我们使用pandas的describe()方法。
模型结构这里将简洁描述尝试模拟电力消耗变化的模型结构:由此产生的模型基本上由10个成员串行连接的LSTM单元组成,通过一个给定的历史值(在本例中必须输入过去的5个值来预测下一个),模型在结尾有线性回归或变量,结尾将单元线性阵列的结果输出转换到最后的一个实数。
下图显示了主要块,后面的补充了learn模块,可以在输出之前看到RNN阶段、优化器和最终的线性回归。
在这张图中,我们看一下RNN阶段,在那里我们可以观察到单个lstm单元的级联,通过输入挤压,以及learn包增加的所有互补操作。
然后我们用回归方程来完成模型的定义:损失函数对于损失函数,经典回归参数均方误差为:收敛测试这里我们将运行当前模型的fit函数:将获得以下错误率(非常好!)。可以做的一个避免对数据进行规范化的练习,看看平均误差是否相同(不同,反而更糟)这是得到的控制台输出:MSE:0.001139这是生成的loss/mean图,它告诉我们错误是如何随着每次迭代而衰减的:
结果分析现在可以得到真实测试值和预测值的图表,在这里我们可以看到平均误差表明我们的循环模型有很好的预测能力:
领取专属 10元无门槛券
私享最新 技术干货