SVM con cross-validazione in R, con accento circonflesso

Mi è stato detto di usare il cursore del pacchetto per eseguire la Macchina di Vettore di Sostegno di regressione con 10 fold cross validation su un set di dati che ho. Sto tracciando la mia variabile di risposta contro 151 variabili. Ho fatto la seguente:-

> ctrl <- trainControl(method = "repeatedcv", repeats = 10)
> set.seed(1500)
> mod <- train(RT..seconds.~., data=cadets, method = "svmLinear", trControl = ctrl)

in cui ho avuto

C    RMSE  Rsquared  RMSE SD  Rsquared SD
  0.2  50    0.8       20       0.1        
  0.5  60    0.7       20       0.2        
  1    60    0.7       20       0.2   

Ma voglio essere in grado di dare un’occhiata al mio pieghe, e per ciascuno di essi come chiudere i valori stimati sono stati i valori effettivi. Come faccio a guardare questo?

Inoltre, si dice che:-

RMSE was used to select the optimal model using  the smallest value.
The final value used for the model was C = 0.

Mi stavo chiedendo che cosa questo significa e che cosa C sta per la tabella di cui sopra?

RT (seconds)    76_TI2  114_DECC    120_Lop 212_PCD 236_X3Av
38  4.086   1.2 2.322   0   0.195
40  2.732   0.815   1.837   1.113   0.13
41  4.049   1.153   2.117   2.354   0.094
41  4.049   1.153   2.117   3.838   0.117
42  4.56    1.224   2.128   2.38    0.246
42  2.96    0.909   1.686   0.972   0.138
42  3.237   0.96    1.922   1.202   0.143
44  2.989   0.8 1.761   2.034   0.11
44  1.993   0.5 1.5 0   0.102
44  2.957   0.8 1.761   0.988   0.141
44  2.597   0.889   1.888   1.916   0.114
44  2.428   0.691   1.436   1.848   0.089

Questo è un snipet del mio set di dati. Sto cercando di pentola RT secondi contro i 151 variabili.

Grazie

 

One Reply
  1. 19

    Devi salvare il tuo CV previsioni tramite “savePred” nel trainControl oggetto. Io non sono sicuro di quello che il pacchetto “cadetti”, i dati, ma qui è un banale esempio di utilizzo di iris:

    > library(caret)
    > ctrl <- trainControl(method = "cv", savePred=T, classProb=T)
    > mod <- train(Species~., data=iris, method = "svmLinear", trControl = ctrl)
    > head(mod$pred)
            pred        obs      setosa  versicolor   virginica rowIndex   .C Resample
    1     setosa     setosa 0.982533940 0.009013592 0.008452468       11 0.25   Fold01
    2     setosa     setosa 0.955755054 0.032289120 0.011955826       35 0.25   Fold01
    3     setosa     setosa 0.941292675 0.044903583 0.013803742       46 0.25   Fold01
    4     setosa     setosa 0.983559919 0.008310323 0.008129757       49 0.25   Fold01
    5     setosa     setosa 0.972285699 0.018109218 0.009605083       50 0.25   Fold01
    6 versicolor versicolor 0.007223973 0.971168170 0.021607858       59 0.25   Fold01

    EDIT: Il “C” è uno dei parametri di ottimizzazione per il vostro SVM. Controllare la guida per la ksvm funzione kernlab pacchetto per ulteriori dettagli.

    EDIT2: Banale esempio di regressione

    > library(caret)
    > ctrl <- trainControl(method = "cv", savePred=T)
    > mod <- train(Sepal.Length~., data=iris, method = "svmLinear", trControl = ctrl)
    > head(mod$pred)
          pred obs rowIndex   .C Resample
    1 4.756119 4.8       13 0.25   Fold01
    2 4.910948 4.8       31 0.25   Fold01
    3 5.094275 4.9       38 0.25   Fold01
    4 4.728503 4.8       46 0.25   Fold01
    5 5.192965 5.3       49 0.25   Fold01
    6 5.969479 5.9       62 0.25   Fold01
    • Ciao, grazie per la risposta. Ho cambiato il bit in trainControl solo, e ho incluso parte del dataset sto guardando (cadetti set di dati). Non so come modificare la testa(mod$pred) po ‘ in modo che io possa guardare alla RT (secondi) che sono stati previsti dal modello ho appena creato come sto modellazione RT secondi contro i 151 descrittore di variabili. Come posso fare in questo caso? Spero che questo ha senso
    • Non è necessario modificare il mod$pred parte. Il “mod” l’oggetto è il tuo punto di inserimento del modello che è una lista che contiene un elemento denominato “pred” contenente il tuo CV previsioni.
    • Io continuo a ricevere in cambio NULL ogni volta che cerco di fare ciò che tuttavia. Non è mod$pred utilizzato per la classificazione? Sto cercando di fare di regressione che può spiegare perché questo sta accadendo
    • No, se stai ricevendo NULL, quindi non è stato incluso il savePred=T nel trainControl oggetto. Ho aggiunto un edit che lo dimostra con un esempio di regressione.
    • Ah sei un risparmiatore di vita, grazie!

Lascia un commento