1 votos

Paquete Caret - ¿Es posible calcular predicciones para modelos no óptimos?

No estoy seguro de si este post pertenece aquí o si stack overflow sería más apropiado.

Estoy empezando a familiarizarme con el paquete caret en R, que parece muy potente para optimizar y aplicar diversos métodos de aprendizaje automático. Según tengo entendido, la idea clave del paquete es entrenar un modelo a través de diferentes conjuntos de parámetros y métodos de remuestreo y seleccionar la calibración óptima basada en una determinada medida de rendimiento. Este modelo optimizado puede utilizarse posteriormente para calcular predicciones sobre los datos de prueba.

¿Permite también el paquete calcular predicciones para todos los modelos entrenados que no sean el modelo óptimo?

Si esto es posible, un ejemplo mínimo de trabajo estaría bien, pero no es esencial.

El motivo de mi pregunta es que me interesa comprobar el rendimiento predictivo del modelo óptimo en relación con los demás modelos entrenados en los datos de prueba. Además, me gustaría evaluar el rendimiento de los esquemas de combinación de predicciones basados en múltiples calibraciones de modelos.

2voto

Onur Yıldırım Puntos 5566

No, en el devuelto model caret sólo proporciona finalModel como la mejor parametrización determinada entrenado de nuevo con todos los datos de entrenamiento sin remuestreo o similares. . De este modo, el entrenamiento final es el mismo que si se hubiera entrenado esta parametrización con trainControl(method='none') .

Por lo tanto, lo que puede hacer: entrenar a mano las parametrizaciones que desee para obtener un rendimiento del conjunto de pruebas, utilizando trainControl(method='none') y todos los datos de entrenamiento. A continuación, podría aplicar todos esos modelos a su conjunto de prueba utilizando predict(model, ...) . Pero tenga en cuenta que no debe comparar varios modelos basándose únicamente en el rendimiento del conjunto de pruebas.

Actualización: caret proporciona una buena explicación sobre cómo comparar varios modelos con partición + remuestreo. Esto podría reducirse a algo como:

library(caret)
set.seed(123456)
training_indexes <- createDataPartition(y = iris$Species, p = 0.8, list = F)
training <- iris[training_indexes,]
testing <- iris[-training_indexes,]
# 2 example models
models <- list()
models$knn <- train(training[,1:4], training[,5], method='knn', tuneGrid=expand.grid(k=1:5), trControl = trainControl(method = 'repeatedcv', 10, 20, savePredictions = T))
models$lda2 <- train(training[,1:4], training[,5], method='lda2', tuneGrid=expand.grid(dimen=1:5), trControl = trainControl(method = 'repeatedcv', 10, 20, savePredictions = T))
# compare models by results of partition+repearts
results <- resamples(x = models)
bwplot(results)

Models performance

# example of resampling performance of your chosen model in more detail
confusionMatrix(data = models$knn$pred$pred, reference = models$knn$pred$obs)
# your chosen model on test set
confusionMatrix(data = predict(models$knn, newdata = testing[,1:4]), testing[,5])

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X