Как я могу построить границу решения для многоуровневой задачи SVM с помощью каретки в R - PullRequest
1 голос
/ 27 мая 2019

Я построил модель SVM с использованием пакета каретки R:

set.seed(1234567)


SVM_caret <- train(x = x_train, y = y_train$label, 
               method = "svmLinear", tuneGrid = expand.grid(
              C = c(0.001, 0.01, 0.1, 1)),
              metric = "ROC",
              trControl = trainControl(method = "cv", number = 3, classProbs = T),
              maxit = 100)

Я пытался реализовать этот код, чтобы построить границы решения для моей модели, но я получаю несколько ошибок. Это матрица путаницы модели:

Confusion Matrix and Statistics

          Reference
Prediction class_1 class_2 class_3 class_4
   class_1       9       0       0       0
   class_2       0       7       0       0
   class_3       3       0       6       0
   class_4       0       0       0       7

Overall Statistics

               Accuracy : 0.9062          
                 95% CI : (0.7498, 0.9802)
    No Information Rate : 0.375           
    P-Value [Acc > NIR] : 5.706e-10       

                  Kappa : 0.8743          

 Mcnemar's Test P-Value : NA              

Statistics by Class:

                     Class: class_1 Class: class_2 Class: class_3 Class: class_4
Sensitivity                  0.7500         1.0000         1.0000         1.0000
Specificity                  1.0000         1.0000         0.8846         1.0000
Pos Pred Value               1.0000         1.0000         0.6667         1.0000
Neg Pred Value               0.8696         1.0000         1.0000         1.0000
Prevalence                   0.3750         0.2188         0.1875         0.2188
Detection Rate               0.2812         0.2188         0.1875         0.2188
Detection Prevalence         0.2812         0.2188         0.2812         0.2188
Balanced Accuracy            0.8750         1.0000         0.9423         1.0000

Есть 4 класса, чтобы предсказать, я не знаю, возможно ли действительно построить этот сюжет, но я не мог понять, как это сделать. Есть ли функция или способ визуализации этой границы принятия решения?

Поскольку я не могу просто скопировать и вставить свои данные здесь, я добавлю ссылку на них на диске Google, чтобы вы могли скачать и воспроизвести проблему, не беспокойтесь о ее размере, поскольку он действительно легкий.

Вот ссылки:

train_data

train_labels

Большое спасибо заранее за помощь.

1 Ответ

2 голосов
/ 27 мая 2019

Как указано в комментариях:

Вы можете визуализировать границы решений только на двухмерном графике, если у вас есть два предиктора.Однако вы используете 10 предикторов, что означает, что каждая точка существует в 10-мерном пространстве, и это не может быть построено так, как вы собираетесь.

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

Если вы определенно хотите визуализироватьНабор правил принятия решений вы можете сделать дерево решений.


dtree <- train(x = svm_data[,-1], y = svm_labels$label, 
                   method = "rpart",
                   metric = "Accuracy",
                   trControl = trainControl(method = "cv", number = 3, classProbs = T),
                   cp = 0.005,
                   maxdepth = 3)



plot(dtree$finalModel, margin = 0.2)
text(dtree$finalModel)

enter image description here

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