使用支持向量回归的时间序列预测

Posted

技术标签:

【中文标题】使用支持向量回归的时间序列预测【英文标题】:Time series prediction using support vector regression 【发布时间】:2013-03-24 10:23:36 【问题描述】:

我一直在尝试使用 Python 语言中的支持向量回归来实现时间序列预测工具。我使用 scikit-learn 的 SVR 模块进行非线性支持向量回归。但是我对未来事件的预测有严重的问题。回归线非常适合原始函数(来自已知数据),但是一旦我想预测未来的步骤,它就会从最后一个已知步骤返回值。

我的代码如下所示:

import numpy as np
from matplotlib import pyplot as plt
from sklearn.svm import SVR

X = np.arange(0,100)
Y = np.sin(X)

svr_rbf = SVR(kernel='rbf', C=1e5, gamma=1e5)
y_rbf = svr_rbf.fit(X[:-10, np.newaxis], Y[:-10]).predict(X[:, np.newaxis])

figure = plt.figure()
tick_plot = figure.add_subplot(1, 1, 1)
tick_plot.plot(X, Y, label='data', color='green', linestyle='-')
tick_plot.axvline(x=X[-10], alpha=0.2, color='gray')
tick_plot.plot(X, y_rbf, label='data', color='blue', linestyle='--')
plt.show()

有什么想法吗? 提前致谢, 汤姆

【问题讨论】:

【参考方案1】:

您并没有真正进行时间序列预测。您试图从 X 的单个元素预测 Y 的每个元素,这意味着您只是在解决标准的核化回归问题。

另一个问题是当在向量[[0],[1],[2],...] 的范围内计算 RBF 内核时,您将沿着内核矩阵的对角线得到一个正值带,而远离对角线的值将接近于零。内核矩阵的测试集部分远离对角线,因此非常接近于零,这将导致所有 SVR 预测都接近偏差项。

对于时间序列预测,我建议将训练测试集构建为

 x[0]=Y[0:K]; y[0]=Y[K]
 x[1]=Y[1:K+1]; y[1]=Y[K+1]
 ...

也就是说,尝试从先前元素的窗口中预测序列的未来元素。

【讨论】:

非常感谢,这真的很有帮助! T. @user1149913,亲爱的,如果你能帮我解决这个问题,我将不胜感激。 ***.com/questions/40357805/….

以上是关于使用支持向量回归的时间序列预测的主要内容,如果未能解决你的问题,请参考以下文章

使用支持向量回归的预测

R语言独立成分分析fastICA谱聚类支持向量回归SVR模型预测商店销量时间序列可视化

LSSVM回归预测基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测含Matlab源码 2213期

反向支持向量机:计算预测

LSSVM回归预测基于matlab天鹰算法优化最小二乘支持向量机AO-LSSVM数据回归预测含Matlab源码 1848期

LSSVM回归预测基于matlab天鹰算法优化最小二乘支持向量机AO-LSSVM数据回归预测含Matlab源码 1848期