¿Hay alguna forma de deshabilitar la función de ajuste de parámetros (cuadrícula) en CARET?

15

CARET utilizará automáticamente una cuadrícula de ajuste preespecificada para construir varios modelos antes de seleccionar un modelo final y luego entrenar el modelo final en los datos de entrenamiento completos. Puedo suministrar mi propia cuadrícula de ajuste con solo una combinación de parámetros. Sin embargo, incluso en este caso, CARET "selecciona" el mejor modelo entre los parámetros de ajuste (aunque solo hay uno en este caso), y luego ajusta el modelo final a todos los datos de entrenamiento. Este es un paso adicional que me gustaría evitar.

¿Cómo puedo simplemente saltear el paso de búsqueda de modelos a través de variaciones en la cuadrícula de ajuste y forzar a CARET a construir sobre todos los datos de entrenamiento (aparte de llamar directamente a la biblioteca de modelos subyacente)?

Ram Ahluwalia
fuente
1
La pregunta no es clara, lo que probablemente explica por qué ha recibido respuestas respondiendo preguntas diferentes, a saber: 1) ¿Cómo le digo a Caret que omita la validación y ajuste del modelo? y 2) ¿Cómo desactivo solo el ajuste del modelo?
Johan Larsson

Respuestas:

17

Puedes especificar method="none"en trainControl. Por ejemplo:

train(Species ~ ., data=iris, method="rf", tuneGrid=data.frame(mtry=3),
  trControl=trainControl(method="none"))

No estoy seguro de cuándo se implementó esto.

Peyton
fuente
9

La mejor manera sería suministrar explícitamente el marco de datos tuneGrid. Por ejemplo, el bosque aleatorio tiene solo un parámetro de ajuste, 'mtry', que controla el número de características seleccionadas para cada árbol.

Para establecer mtry en un valor específico, puede elegir el valor predeterminado randomForest (? RandomForest) haga esto:

model <- train(x = X, y = Y, method = 'rf', tuneGrid = data.frame(.mtry = M))

donde M es el único valor del parámetro de ajuste que desea usar.

para múltiples parámetros de ajuste, haga esto:

tuneGrid = data.frame(.par1 = P1, .par2 = P2, .par3 = P3)
Brent
fuente
Bienvenido a nuestro sitio, Brent! Gracias por seguir con esta vieja pregunta.
whuber
44
La sugerencia a continuación method="none"es la mejor solución.
topepo
1

No creo que sea posible (al menos no era posible desde hace unas pocas versiones). Se puede reducir el impacto en el rendimiento configurando una sola partición de remuestreo en los datos de entrenamiento (pero caret aún entrenaría un modelo dos veces)

Esto suena como una característica útil para tener, así que haría ping al autor del paquete.

Yevgeny
fuente
Lo siento, esta respuesta es obsoleta ahora
smci