r - 在 R 中使用支持向量机 (SVM) 进行时间序列预测

标签 r time-series svm forecasting

我尝试过搜索,但找不到此问题的具体答案。到目前为止,我已经意识到可以使用 SVM 进行时间序列预测。我浏览了几篇执行相同操作的论文/文章,但没有提到任何代码,而是解释了算法(我不太明白)。有些人已经使用 python 完成了。 我的问题是:我有一个公司 2010 年到 2017 年的销售数据(比如单变量)。我需要使用 R 中的 SVM 来预测 2018 年的销售值。 您能用一个小例子简单地介绍和解释执行相同操作的 R 代码吗? 我非常感谢您的投入和努力! 谢谢!!!

最佳答案

假设您有每月数据,例如源自航空乘客数据集的数据。您不需要时间序列类型的数据,只需要包含时间步长和值的数据框。我们将它们命名为 x 和 y。接下来,您开发一个 svm 模型,并指定需要预测的时间步长。使用预测函数计算给定时间步长的预测。就是这样。然而,支持向量机通常不被认为是时间序列预测的最佳方法,特别是对于长序列数据。它可以在未来的一些观察中表现良好,但我不希望预测有好的结果,例如。明年一整年的每日数据(但这显然取决于数据)。基于 SVM 的预测的简单 R 代码:

# prepare sample data in the form of data frame with cols of timesteps (x) and values (y)  
data(AirPassengers) 
monthly_data <- unclass(AirPassengers)
months <- 1:144
DF <- data.frame(months,monthly_data)
colnames(DF)<-c("x","y")

# train an svm model, consider further tuning parameters for lower MSE
svmodel <- svm(y ~ x,data=DF, type="eps-regression",kernel="radial",cost=10000, gamma=10)
#specify timesteps for forecast, eg for all series + 12 months ahead
nd <- 1:156
#compute forecast for all the 156 months 
prognoza <- predict(svmodel, newdata=data.frame(x=nd))

#plot the results
ylim <- c(min(DF$y), max(DF$y))
xlim <- c(min(nd),max(nd))
plot(DF$y, col="blue", ylim=ylim, xlim=xlim, type="l")
par(new=TRUE)
plot(prognoza, col="red", ylim=ylim, xlim=xlim)

see plot of the forecasted values

关于r - 在 R 中使用支持向量机 (SVM) 进行时间序列预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49081801/

相关文章:

不完整时间序列数据的运行平均值

neural-network - 深度学习和时间序列 : Varying Vector Lengths

python - sklearn 管道模型预测所有输入的相同结果

r - Kernlab 疯狂 : inconsistent results for identical problems

ROC 曲线看起来不正确

r - 当我的 aes 函数中没有提到 XXX 时,geom_text 返回 "object XXX not found"错误

Python:带有 Pandas 的时间序列

r - 如何在 R 中获取 SVM 模型的系数和 p 值

r - 在带有 extrafont 包的 .eps 图中使用 Arial 时出错

r - 绘图区域颜色是否有 `par()` 设置?