асимметрия c стоимость SVM в R - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь оценить линейную модель классификации SVM, где ложные срабатывания имеют в 3 раза больший вес, чем ложноотрицательные. Вот воспроизводимый пример данных, которые я использую:

library(tidyverse)
library(C50)
library(e1071)
library(caret)

# set up data set
data <- iris %>% 
  filter(Species %in% c("setosa", "versicolor")) %>% 
  mutate(Species = case_when(Species == "setosa" ~ 0,
                             Species == "versicolor" ~ 1),
         Species = factor(Species, 
                          levels = c(0, 1), 
                          labels = c("Setosa", "Versicolor"))
  )

# train / test split
indx <- createDataPartition(y = data$Species, p = 0.8, list = FALSE)
train <- data[indx, ]
test <- data[-indx, ]

Ранее я делал нечто подобное с пакетом C5.0, где все выглядело так:

# set up cost matrix
cost_matrix <- matrix(c(0, 3, 1, 0),
                   nrow = 2,
                   dimnames = list("Predicted" = c("Setosa", "Versicolor"),
                                   "Actual" = c("Setosa", "Versicolor")))

# estimate C5.0 tree model
tree_fit <- C5.0(Species ~ ., 
                 data = train,
                 costs = cost_matrix)
# predict Species
tree_pred <- predict(tree_fit, test)

Я сейчас пытаясь сделать это с помощью SVM, независимо от того, сделано ли это в e1071 или в интерфейсе каретки.

# estimate SVM Model
svm_fit <- svm(Species ~ ., 
               data = train,
               kernel = 'linear')
# predict Species
svm_pred <- predict(svm_fit, test)

Как я могу включить матрицу затрат, как описано? Я уже консультировался с этой веткой здесь Asymmetri c назначение стоимости для SVM , но надлежащего ответа нет, и ссылка больше никуда не ведет.

Спасибо за вашу помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...