Spark上的时间序列预测

时间:2016-02-06 12:46:03

标签: apache-spark machine-learning time-series apache-spark-mllib apache-spark-ml

因此我尝试使用Apache Spark进行时间序列数据的功耗预测。数据样本是:

03.01.15;22:30;236,25
03.01.15;22:15;240
04.01.15;16:00;243,775
等等两年。我每15分钟观察一次

预测功耗的最佳方法是什么?

我尝试LinearRegressionDecision trees等等。我总是得到巨大的MSE(788)。 我尝试将月,日,小时,分钟作为OneHotEncoder。我尝试只做几周的预测等。

数据的方式yearmonthday

[2014.3996710526321,5.726973684210525,15.713815789473673]

数据的变化yearmonthday

[0.2403293809070049,10.218579294199253,77.46326844706495]

测试均方误差

788.2397552290726

如果我像LabeledPoint(236.25, 2015.0,1.0,3.0,22.0,30.0))那样直接传递值,则MSE会升至1280.8。如果我传递给模型,那么每天只有一次观察,这是最大值,这对它没有帮助。

但是如果我使用KNIME并尝试时间序列的例子,但是我的数据并没有考虑日期和时间,而是他们滞后于每次观察的功耗。

我看到Cloudera有Time Series的库,但我不明白为什么需要它。

有人可以描述对时间序列数据进行良好预测的过程吗?最后,我想输入日期和时间并进行预测。

1 个答案:

答案 0 :(得分:0)

我对您的问题有多个问题,但让我尝试使用您给我的内容。

首先,让我们概括一下这个问题。

您的数据格式为<timestamp>, <value>。鉴于数据每15分钟收集2年,您的样本大小为(4 x 24 x 365 x 2) 70080 观察(行)

让我们说你想开发一个回归模型来预测它的行为。

首先,您需要将数据集划分为训练和测试集。您使用训练集开发模型,并在测试集上测试模型。我会建议9:1分裂。

<强> Q1。这是你采取的那种方法吗?

使用预测值与测试集中的实际值计算MSE。

<强> Q2。你提到了一个MSE - 我不知道如何计算(只提供3个数据点)或你正在使用的值范围。您能否确认您的错误计算方式以及最小化标准是什么?

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