Настройка параметров 'svr' - PullRequest
0 голосов
/ 26 февраля 2019

Как я могу использовать функцию настройки с опорным вектором REGRESSION, а не классификацией, как когда я пытался использовать «svr» в качестве первого аргумента функции, она не работала, и я не смог найти ни одного примера настройки для регрессии,Вот код, который я выполнил с помощью пакета e1071:

tuneSVR <- tune(svm, 
                train.x = train_[, -which(names(train) %in% c("Identifier", "Sales"))],
                train.y = train$Sales,
                data = train,
                ranges = list(epsilon = seq(0,1,0.1), cost = 2^(seq(0.5,8,.5))))

Это неправильно, потому что моя проблема регрессионная?и нормально ли, что эти строки кода занимают долгие часы?и как я могу рассчитать R Squared для SVR?

1 Ответ

0 голосов
/ 26 февраля 2019

В e1071::svm() тип задачи автоматически выводится из переменной ответа, но может быть перезаписан с помощью параметра type.Функция tune() и ее оболочка для svm ведут себя аналогично:

library( e1071 )

# Option 1: using the wrapper
tuneSVR1 <- tune.svm( mtcars[,c("drat","wt")], mtcars$mpg )

# Option 2: using the base function
tuneSVR2 <- tune( svm, mpg~drat+wt, data=mtcars )

# In both cases, the methods correctly infer that the task is regression
tuneSVR2$best.model

# Call:
# best.tune(method = svm, train.x = mpg ~ drat + wt, data = mtcars)
# 
# Parameters:
#    SVM-Type:  eps-regression 
#  SVM-Kernel:  radial 
#        cost:  1 
#       gamma:  0.5 
#     epsilon:  0.1 
# 
# Number of Support Vectors:  28

Поскольку R-квадрат между двумя векторами является просто квадратом их корреляции Пирсона , вы можете вычислить его непосредственно как

ypred <- predict( tuneSVR2$best.model, mtcars[,c("drat","wt")] )
cor( ypred, mtcars$mpg )^2
# [1] 0.8325807
...