使用 libsvm 具有滞后时间序列的多元回归
Posted
技术标签:
【中文标题】使用 libsvm 具有滞后时间序列的多元回归【英文标题】:Multiple regression with lagged time series using libsvm 【发布时间】:2012-08-25 18:56:05 【问题描述】:我正在尝试开发一种电力消耗预测器。所以我想使用一整年的每日数据进行回归。我的数据集有几个特征。谷歌搜索我发现我的问题是Multiple regression 问题(如果我弄错了,请纠正我)。
我想要做的是训练一个svm
用于回归,其中包含多个自变量和一个具有 n 滞后天数的因变量。这是我的自变量的一个样本,我实际上有大约 10 个。(我们使用PCA
来确定哪些变量与我们的问题有一定的相关性)
Day Indep1 Indep2 Indep3
1 1.53 2.33 3.81
2 1.71 2.36 3.76
3 1.83 2.81 3.64
... ... ... ...
363 1.5 2.65 3.25
364 1.46 2.46 3.27
365 1.61 2.72 3.13
而自变量1实际上是我未来的因变量。因此,例如,对于 p=2(滞后天数),我希望我的 svm
使用所有三个独立变量的前 2 个时间序列进行训练。
Indep1 Indep2 Indep3
1.53 2.33 3.81
1.71 2.36 3.76
因变量的输出值为“1.83”(时间 3 上的独立变量 1)。
我的主要问题是我不知道如何正确训练。我所做的只是将所有 features-p 放入我的“x”变量和“y”变量的数组中,我只是将我的自变量放在 p+1 上,以防我想预测第二天的功耗。
培训示例。
x with p = 2 and 3 independent variables y for next day
[1.53, 2.33, 3.81, 1.71, 2.36, 3.76] [1.83]
我尝试将 x 作为一个二维数组,但是当你将它组合几天后它变成了一个 3d 数组,libsvm
说它不可能。
也许我应该从libsvm
更改为另一个工具,或者只是我训练不正确。
感谢您的帮助, 阿尔多。
【问题讨论】:
【参考方案1】:让我用 python / numpy 表示法回答。
假设具有列 (Indep1, Indep2, Indep3, ...) 的原始时间序列数据矩阵是一个形状为 (n_samples, n_variables)
的 numpy 数组 data
。让我们为这个例子随机生成它:
>>> import numpy as np
>>> n_samples = 100, n_variables = 5
>>> data = np.random.randn(n_samples, n_variables)
>>> data.shape
(100, 5)
如果您想使用 2 个时间步长的窗口大小,则可以按如下方式构建训练集:
>>> targets = data[2:, 0] # shape is (n_samples - 2,)
>>> targets.shape
(98,)
>>> features = np.hstack([data[0:-2, :], data[1:-1, :]]) # shape is (n_samples - 2, n_variables * 2)
>>> features.shape
(98, 10)
现在您有了 2D 输入数组 + 1D 目标,您可以将它们提供给 libsvm 或 scikit-learn。
编辑:很可能会提取更多面向时间序列的特征,例如移动平均值、移动最小值、移动最大值、移动差异(信号的基于时间的导数)或 @ 987654322@ 可能会帮助您的 SVM 模式做出更好的预测。
【讨论】:
您是说训练将在时间 +2 时与目标一起发生?如何使用滞后天数? (使用 p days * n_features 计算某一天的训练/预测)。 没关系,我完成了对您的建议的理解/测试。我的数据非常相似,但训练中发生了一些奇怪的事情。在进行验证时,它总是给我相同的输出,我正在改变我的目标。 您需要对参数的最佳值进行网格搜索(例如,具有高斯核的 SVR 模型的 C 和 gamma)。请参阅 libsvm 或 scikit-learn 的文档了解更多详细信息。以上是关于使用 libsvm 具有滞后时间序列的多元回归的主要内容,如果未能解决你的问题,请参考以下文章
使用 python 的 libsvm 支持具有高维输出的向量回归
使用 sklearn - python 具有分类特征的多元线性回归
如何在 Python Pandas 回归模型中使用滞后时间序列变量?
Python使用matplotlib可视化时间序列自回归ACF图和偏自回归PACF图ACF图显示了时间序列与其自身滞后的相关性PACF显示了任何给定的滞后(时间序列)与当前序列的自相关性