Prendo parte al corso di Apprendimento automatico della macchina di Coursera e il corso richiede la costruzione di modelli predittivi utilizzando questo dataset. Dopo suddividere i dati in training
e testing
set di dati, sulla base del risultato di interesse (la presente etichettati y
, ma in realtà la variabile classe
nell'insieme di dati):Perché i risultati utilizzando caret :: train (..., method = "rpart") differiscono da rpart :: rpart (...)?
inTrain <- createDataPartition(y = data$y, p = 0.75, list = F)
training <- data[inTrain, ]
testing <- data[-inTrain, ]
Ho provato 2 diversi metodi:
modFit <- caret::train(y ~ ., method = "rpart", data = training)
pred <- predict(modFit, newdata = testing)
confusionMatrix(pred, testing$y)
vs.
modFit <- rpart::rpart(y ~ ., data = training)
pred <- predict(modFit, newdata = testing, type = "class")
confusionMatrix(pred, testing$y)
mi potrebbe supporre che darebbe identici o molto sI risultati milar, poiché il metodo iniziale carica il pacchetto 'rpart' (suggerendomi di usare questo pacchetto per il metodo). Tuttavia, i tempi (caret
molto più lento) & risultati sono molto diversi:
Method 1 (caret)
:
Confusion Matrix and Statistics
Reference
Prediction A B C D E
A 1264 374 403 357 118
B 25 324 28 146 124
C 105 251 424 301 241
D 0 0 0 0 0
E 1 0 0 0 418
Method 2 (rpart)
:
Confusion Matrix and Statistics
Reference
Prediction A B C D E
A 1288 176 14 79 25
B 36 569 79 32 68
C 31 88 690 121 113
D 14 66 52 523 44
E 26 50 20 49 651
Come si può vedere, il secondo approccio è un classificatore meglio - il primo metodo è molto povero per le classi D & E.
Mi rendo conto che questo potrebbe non essere il posto più appropriato per porre questa domanda, ma apprezzerei davvero una maggiore comprensione di questo e dei problemi correlati. caret
sembra un ottimo pacchetto per unificare i metodi e chiamare la sintassi, ma ora sono riluttante a usarlo.
Grazie a @Peyton per la risposta, questo spiega e aiuta molto! –