R 预测误差。回归的svm方法?

R 预测误差。回归的svm方法?,r,svm,predict,R,Svm,Predict,我使用以下GDP从“e1071”包中创建了一个svm公式: library(e1071) set.seed(100) x <- seq(0.1, 5, by = 0.05) w <- runif(x, min = 5, max = 6) y <- log(x) + w ^ 2 + rnorm(x, sd = 0.2) dt <- as.data.frame(cbind(y,x,w)) dt_train <- dt[(1:(length(x)-1)),] dt

我使用以下GDP从“e1071”包中创建了一个svm公式:

library(e1071)

set.seed(100)
x <- seq(0.1, 5, by = 0.05)
w <- runif(x, min = 5, max = 6)
y <- log(x) + w ^ 2 + rnorm(x, sd = 0.2)

dt <- as.data.frame(cbind(y,x,w))

dt_train <- dt[(1:(length(x)-1)),]

dt_test <- dt[length(x),]

model <- svm(y ~ ., data = dt_train, type = "eps-regression", kernel =
    "radial", gamma = 1, cost = 1, epsilon = 0.1)
28.13943

更改dt_测试时:

dt_test[1,] <- 100:102
predict(model, newdata = dt_test)

dt_测试[1,]TL/DR:您的测试数据与您的培训数据距离太远

查看培训数据与测试数据的分布情况

(M = sapply(dt, mean))
        y         x         w 
31.204838  2.550000  5.517325 
(S = sapply(dt, sd))
       y        x        w 
3.131271 1.436141 0.262107 

(100:102 - M)/S
        y         x         w 
 21.97036  68.55178 368.10419 
(c(0,78,1000) - M)/S
         y          x          w 
  -9.96555   52.53664 3794.18628 
(rnorm(3) - M)/S
         y          x          w 
 -9.118284  -1.747814 -15.895867 
您的第一个数据点距离平均值有368个标准偏差。
第二个数据点与平均值的标准偏差为3794。
您的第三个数据点与平均值仅相差16个标准差。
这些点本质上是无穷大的


您发现,您的模型预测的是一个常数,而不是训练数据。但是,如果从训练数据中获取小于3个标准差的数据点,您会发现模型不是恒定的。

TL/DR:您的测试数据与训练数据距离太远

查看培训数据与测试数据的分布情况

(M = sapply(dt, mean))
        y         x         w 
31.204838  2.550000  5.517325 
(S = sapply(dt, sd))
       y        x        w 
3.131271 1.436141 0.262107 

(100:102 - M)/S
        y         x         w 
 21.97036  68.55178 368.10419 
(c(0,78,1000) - M)/S
         y          x          w 
  -9.96555   52.53664 3794.18628 
(rnorm(3) - M)/S
         y          x          w 
 -9.118284  -1.747814 -15.895867 
您的第一个数据点距离平均值有368个标准偏差。
第二个数据点与平均值的标准偏差为3794。
您的第三个数据点与平均值仅相差16个标准差。
这些点本质上是无穷大的

您发现,您的模型预测的是一个常数,而不是训练数据。但是,如果从训练数据中获取小于3个标准差的数据点,则会发现模型不是常数

dt_test[1,] <- rnorm(3)
predict(model, newdata = dt_test)
(M = sapply(dt, mean))
        y         x         w 
31.204838  2.550000  5.517325 
(S = sapply(dt, sd))
       y        x        w 
3.131271 1.436141 0.262107 

(100:102 - M)/S
        y         x         w 
 21.97036  68.55178 368.10419 
(c(0,78,1000) - M)/S
         y          x          w 
  -9.96555   52.53664 3794.18628 
(rnorm(3) - M)/S
         y          x          w 
 -9.118284  -1.747814 -15.895867