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

6
我尝试搜索,但无法找到这个问题的具体答案。到目前为止,我能够意识到使用SVM进行时间序列预测是可能的。我阅读了一些论文/文章,他们执行了相同的操作,但没有提到任何代码,而是解释了算法(我没有完全理解)。有些人使用Python完成了这项工作。
我的问题在于:我有一家公司的数据(例如单变量),从2010年到2017年的销售额。我需要使用R中的SVM预测2018年的销售价值。
您能否简单地呈现和解释使用小例子执行相同操作的R代码?
我真的很感激您的意见和努力!
谢谢!
1个回答

8
假设您有月度数据,例如来自Air Passengers数据集。您不需要时间序列类型的数据,只需包含时间步长和值的数据框。让我们将它们命名为x和y。接下来,您开发一个svm模型,并指定需要预测的时间步长。使用predict函数计算给定时间步长的预测结果。就是这样。然而,支持向量机通常不被视为时间序列预测的最佳方法,特别是对于长时间序列数据。它可以在几个观察值前表现良好,但我不会期望它能为整个下一年的每日数据进行良好的预测(但这显然取决于数据)。以下是基于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


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