首页 > 解决方案 > 如何使用 R 中的插入符号绘制多标签 SVM 问题的决策边界

问题描述

我已经使用 R 的 caret 包构建了一个 SVM 模型:

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 drive 上添加一个链接,这样你就可以下载并重现问题,不用担心大小,因为它真的很轻。

以下是链接:

火车数据

train_labels

非常感谢您的帮助。

标签: rmachine-learningplotsvmr-caret

解决方案


如评论中所述:

当您有两个预测变量时,您只能在二维图中可视化决策边界。但是,您正在使用 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)

在此处输入图像描述


推荐阅读