Spark 上的时间序列预测

4

我正在尝试使用Apache Spark对时间序列数据进行功耗预测。数据样本如下:

03.01.15;22:30;236,25
03.01.15;22:15;240
04.01.15;16:00;243,775

我已经观察了两年,每15分钟记录一次。

预测能源消耗的最佳方法是什么?

我尝试了线性回归、决策树等方法,但总是得到巨大的MSE(788)。我尝试将月份、日期、小时和分钟作为OneHotEncoder传递。我尝试只对每周进行预测等。

数据的平均值为yearmonthday

[2014.3996710526321,5.726973684210525,15.713815789473673]

数据的方差
[0.2403293809070049,10.218579294199253,77.46326844706495]

测试均方误差

788.2397552290726

如果我直接传递值,例如LabeledPoint(236.25, 2015.0,1.0,3.0,22.0,30.0)),均方误差将上升至1280.8。 如果我每天只向模型传递一个观测值,而这是最大值,那么这并没有起到帮助的作用。
但如果我使用KNIME,并尝试时间序列的示例,但使用我的数据时,它们不考虑日期和时间,而是将每个观测值的功耗延迟。
我看到Cloudera有一个关于时间序列的库,但我不明白为什么需要它。
能否有人描述一下在时间序列数据上进行良好预测的过程?最终我想输入日期和时间,并获得预测。

你看过arima和holt-winters吗? - Sergei Rodionov
嘿,Sergei,你能再详细解释一下吗? - Jorge Machado
@JorgeMachado Jorge,我也想使用ARIMA模型来预测事物。如果你解决了问题,能帮帮我吗? - Anshul Kalra
嗨,到目前为止,你需要传递过去七天的使用情况来更新你的实际使用情况。要预测接下来的几天,只需将最后一天作为特征传递即可。我仍在努力,但它并没有像我预期的那样工作。 - Jorge Machado
1个回答

0

我有多个关于你的问题,但让我试着用你给我的信息来解决。

首先,我们要概括一下问题。

你有一个数据集,格式为<时间戳>, <数值>。假设这个数据集是每15分钟收集一次,持续2年,那么你就有了一个样本量为(4 x 24 x 365 x 2) 70080个观测值(行)。

假设你想开发一个回归模型来预测它的行为。

首先,你需要将数据集分成训练集和测试集。你使用训练集开发模型,并在测试集上测试模型。我建议采用9:1的比例。

Q1. 这是你采取的方法吗?

MSE是通过将测试集中的预测值与实际值进行比较计算得出的。

Q2. 你提到了MSE - 我不知道如何计算它(只提供了3个数据点),也不知道你所使用的数值范围。请确认一下你的误差是如何计算的以及最小化标准是什么?

如果线性回归失败(无法成功预测运动),可能是因为您的模型过于简单 - 尝试使用MLP或将回归模型与贝叶斯模型相结合(因为功耗是一个连续函数)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接