如何使用R中的支持向量回归预测未来值
我试图预测一个周期性位置的未来值,它依赖于时间(x~time),使用支持向量回归进行单变量预测。该模型在列车数据上拟合良好,但在测试数据上进行评估时,该模型会沿着直线运行。在下面的代码中,我使用50个观察值进行训练(红色周期曲线的前半部分,SVR完美拟合),50个观察值进行测试(红色曲线的后半部分,SVR无法预测)如何使用R中的支持向量回归预测未来值,r,time-series,svm,forecasting,periodicity,R,Time Series,Svm,Forecasting,Periodicity,我试图预测一个周期性位置的未来值,它依赖于时间(x~time),使用支持向量回归进行单变量预测。该模型在列车数据上拟合良好,但在测试数据上进行评估时,该模型会沿着直线运行。在下面的代码中,我使用50个观察值进行训练(红色周期曲线的前半部分,SVR完美拟合),50个观察值进行测试(红色曲线的后半部分,SVR无法预测) 库(lubridate) 图书馆(purrr) 图书馆(GG2) 图书馆(指标) 图书馆(插入符号) 图书馆(dplyr) 图书馆(e1071) #列车数据有50个观测值 #评估数据
库(lubridate)
图书馆(purrr)
图书馆(GG2)
图书馆(指标)
图书馆(插入符号)
图书馆(dplyr)
图书馆(e1071)
#列车数据有50个观测值
#评估数据有100个观测值(前半部分是列车数据)
func您可以使用caretForecast
包。您可以使用caret
支持的任何ML模型,包括SVM
要安装软件包:devtools::install\u github(“Akai01/caretForecast”)
示例代码
库(caretForecast)
图书馆(预测)
培训数据错误:未能从GitHub安装“caretForecast”:(从警告转换而来)无法删除先前安装的包“rlang”@IsmailE.Dawoodjee。显然,无法安装包rlang
。您能否尝试安装.packages(“rlang”,dependencies=TRUE)
?然后devtools::install\u github(“Akai01/caretForecast”)
Ok软件包现在可以工作了。我设法做出了预测,并尝试了一些调整。
library(lubridate)
library(purrr)
library(ggplot2)
library(Metrics)
library(caret)
library(dplyr)
library(e1071)
# train_data has 50 observations
# eval_data has 100 observations (the first half is train_data)
func <- x ~ abs_time # position x dependent on time
svr_model <- svm(func, train_data, type = "eps-regression",
kernel="radial", gamma=13, cost=10, epsilon = 0.01)
k_hat <- predict(svr_model, eval_data)
plot(x = eval_data$abs_time, y = eval_data$x, type = "l", col="red") # true position
points(x = eval_data$abs_time, y = k_hat, col = "blue") # SVR predicted position
library(caretForecast)
library(forecast)
training_data <- window(AirPassengers, end = c(1960, 1))
testing_data <- window(AirPassengers, start = c(1960, 2))
fit <- ARml(training_data, maxlag = 12, caret_method = "svmLinear",
lambda = "auto")
forecast(fit, h = length(testing_data), level = NULL)-> fc
accuracy(fc, testing_data)
fc_plot(fc) +
autolayer(testing_data, series = "testing_data")
get_var_imp(fc)
get_var_imp(fc, plot = F)