【问题标题】:Obtaining Cross validated Probability predictions in tune svm (e1071)在 Tune svm (e1071) 中获得交叉验证的概率预测
【发布时间】:2017-04-13 08:45:59
【问题描述】:

我正在使用 svm 使用 R 中的 e1071 包进行多类分类。

我想要对训练集中的每个类和每个数据点进行交叉验证的概率预测。即我想要 N x K 交叉验证概率矩阵。

谁能告诉我怎么做?

【问题讨论】:

    标签: r svm


    【解决方案1】:

    几点:

    (1) 通过交叉验证,您可以在保留数据集上测量模型(在训练数据集上训练)的准确性,而不是在整个数据集上。

    (2) 在计算矩阵之前,您需要选择超参数(C,gamma)的值。

    (3) 您可以使用 caret 包来计算所需的概率矩阵,但由于它是多类分类问题,您需要在计算矩阵之前选择要计算概率的类。

    在 iris 上使用以下代码,它有 150 个数据点,其中 15 个点将被随机选择作为每个折叠的验证数据。让我们找到预测类别为 setosa 的概率并计算 150x11 矩阵,其中最后一列是二进制列,表示数据点的实际类别是否为 setosa。

    K <- 10 # number of folds        
    set.seed(123)        
    library(caret)
    library(reshape2)  
    trctl <- trainControl(method = "cv", number = K, savePredictions = TRUE, classProbs = TRUE)
    res <- train(Species ~ ., data = iris, method="svmRadial", trControl = trctl)
    res.C1 <- subset(res$pred, C==1)
    head(res.C1) 
    
           pred        obs        setosa  versicolor   virginica rowIndex    sigma C Resample
    31     setosa     setosa 0.980011940 0.009115859 0.010872201       17 1.421405 1   Fold01
    32     setosa     setosa 0.872285443 0.051664831 0.076049726       23 1.421405 1   Fold01
    33     setosa     setosa 0.983836684 0.007452339 0.008710978       35 1.421405 1   Fold01
    34     setosa     setosa 0.956874365 0.018767699 0.024357936       38 1.421405 1   Fold01
    35     setosa     setosa 0.979355342 0.009425609 0.011219049       39 1.421405 1   Fold01
    36 versicolor versicolor 0.009445829 0.935110658 0.055443514       55 1.421405 1   Fold01
    
    cbind.data.frame(round(dcast(res.C1, rowIndex~Resample, value.var = 'setosa'),2), setosa=res.C1$obs=='setosa')
    
        rowIndex Fold01 Fold02 Fold03 Fold04 Fold05 Fold06 Fold07 Fold08 Fold09 Fold10 setosa
    1          1     NA     NA     NA     NA     NA     NA     NA     NA     NA   0.99   TRUE
    2          2     NA     NA     NA     NA     NA     NA     NA     NA   0.98     NA   TRUE
    3          3     NA     NA     NA     NA     NA   0.98     NA     NA     NA     NA   TRUE
    4          4     NA     NA     NA     NA     NA     NA   0.98     NA     NA     NA   TRUE
    5          5     NA     NA     NA   0.99     NA     NA     NA     NA     NA     NA   TRUE
    6          6     NA   0.98     NA     NA     NA     NA     NA     NA     NA     NA  FALSE
    7          7     NA     NA     NA     NA   0.97     NA     NA     NA     NA     NA  FALSE
    8          8     NA     NA   0.99     NA     NA     NA     NA     NA     NA     NA  FALSE
    9          9     NA   0.96     NA     NA     NA     NA     NA     NA     NA     NA  FALSE
    10        10     NA   0.98     NA     NA     NA     NA     NA     NA     NA     NA  FALSE
    #         ...   ...
    145      145     NA     NA     NA     NA     NA     NA     NA     NA   0.01     NA  FALSE
    146      146     NA     NA     NA   0.01     NA     NA     NA     NA     NA     NA  FALSE
    147      147     NA     NA     NA   0.01     NA     NA     NA     NA     NA     NA  FALSE
    148      148     NA     NA     NA     NA     NA     NA     NA     NA     NA   0.01  FALSE
    149      149     NA     NA     NA     NA     NA     NA     NA     NA   0.02     NA  FALSE
    150      150     NA     NA     NA     NA     NA     NA     NA   0.01     NA     NA  FALSE
    

    【讨论】:

    • 您是否注意到预测概率与 SVM 的类别标签相比有任何不一致?我发现了一些不一致的地方,尤其是当预测概率接近 0.5 时。请检查这个问题:stackoverflow.com/questions/63749263/…
    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 2013-05-22
    • 2018-09-05
    • 2020-04-08
    • 2013-09-11
    • 2019-10-19
    • 2014-04-02
    • 2016-12-11
    相关资源
    最近更新 更多