【问题标题】:cross-validate predictions for caret and svm地毯和支持向量机的交叉验证预测
【发布时间】:2017-05-01 11:05:37
【问题描述】:

调整模型时产生的 ROC/Sens/Spec 与模型在同一数据集上做出的实际预测之间似乎存在差异。我正在使用使用 kernlab 的 ksvm 的插入符号。我没有遇到 glm 的这个问题。

data(iris)
library(caret)
iris <- subset(iris,Species == "versicolor" | Species == "setosa") # we need only two output classess
iris$noise <- runif(nrow(iris)) # add noise - otherwise the model is too "perfect"
iris$Species <- factor(iris$Species)
fitControl <- trainControl(method = "repeatedcv",number = 10, repeats = 5, savePredictions = TRUE, classProbs = TRUE, summaryFunction = twoClassSummary)

ir <- train(Species ~ Sepal.Length + noise, data=iris,method = "svmRadial", preProc = c("center", "scale"), trControl=fitControl,metric="ROC")
confusionMatrix(predict(ir), iris$Species, positive = "setosa")
getTrainperf(ir) # same as in the model summary

这种差异的根源是什么?哪些是“真实的”、交叉验证后的预测?

【问题讨论】:

    标签: r machine-learning svm r-caret kernlab


    【解决方案1】:

    似乎函数getTrainPerf 给出了在重复交叉验证折叠中平均的最佳调整参数的平均性能结果。

    getTrainPerf 的工作原理如下:

    getTrainPerf(ir) 
    #  TrainROC TrainSens TrainSpec    method
    #1   0.9096     0.844     0.884 svmRadial
    

    通过以下方式实现:

    ir$results
    #      sigma    C    ROC  Sens  Spec      ROCSD    SensSD    SpecSD
    #1 0.7856182 0.25 0.9064 0.860 0.888 0.09306044 0.1355262 0.1222911
    #2 0.7856182 0.50 0.9096 0.844 0.884 0.08882360 0.1473023 0.1218229
    #3 0.7856182 1.00 0.8968 0.836 0.884 0.09146071 0.1495026 0.1218229
    ir$bestTune
    #      sigma   C
    #2 0.7856182 0.5
    merge(ir$results, ir$bestTune)
    #      sigma   C    ROC  Sens  Spec     ROCSD    SensSD    SpecSD
    #1 0.7856182 0.5 0.9096 0.844 0.884 0.0888236 0.1473023 0.1218229
    

    这也可以从交叉验证折叠的性能结果中获得(10 折叠,5 次重复,10*5=50 每个性能测量的总值)。

    colMeans(ir$resample[1:3])
    #     ROC   Sens   Spec 
    #  0.9096 0.8440 0.8840 
    

    因此,getTrainPerf仅给出了在不同时间(而不是在整个训练数据集上)使用最佳调整参数(sigma,C)进行验证的数据折叠的交叉验证性能摘要。

    但如果您想在整个训练数据集上进行预测,则需要将predict 函数与调整后的模型一起使用。

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 2018-07-04
      • 2012-03-18
      • 2016-06-02
      • 2019-01-23
      • 1970-01-01
      • 2018-07-31
      • 2018-04-10
      • 2017-12-03
      相关资源
      最近更新 更多