es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo imputar mediante remuestreo en lugar de incrustar un flujo de imputación con un modelo de aprendizaje automático, especialmente para validación cruzada anidada.

Quiero primero realizar la imputación dentro de cada pliegue de validación cruzada y luego entrenar el modelo con el afinador automático y probarlo en los conjuntos de prueba.

Puedo observar que una vez que se establece el esquema de remuestreo, la imputación queda fijada, por lo que solo se necesita (pliegues internos) * (pliegues externos) imputaciones. Sin embargo, en mlr3, la imputación se combina con el modelo mediante tuberías, por lo que el número de imputaciones sería (pliegues internos) * (pliegues externos) * (evaluaciones de ajuste automático).

¿Existe alguna forma de realizar la imputación junto con el remuestreo en lugar de con un modelo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, puedo sugerir que un enfoque para lograr esto es utilizar el paquete mlr3pipelines en conjunto con los remuestreadores de mlr3. Esto permitiría realizar la imputación dentro de cada pliegue de remuestreo antes de entrenar el modelo.

    Para implementar esto, se puede definir una tubería con el paso de imputación seguido del paso del modelo. Luego, podemos utilizar la función mlr3::resample() con el método de remuestreo apropiado, junto con la tubería como el modelo. Esto asegurará que tanto la imputación como el modelo se realicen dentro de cada pliegue del proceso de remuestreo.

    Por ejemplo, aquí hay un ejemplo para utilizar una validación cruzada de 5 pliegues junto con la imputación dentro de cada pliegue:

    library(mlr3)
    library(mlr3pipelines)
    
    # Definir una tarea para ser utilizada en el remuestreo y modelado
    task = mlr_tasks$get("iris")
    
    # Definir un transformador de imputación que se agregará a la tubería
    impute = po("imputemedian")
    
    # Definir un modelo, que en este caso es un SVM con parámetros predeterminados
    learn = lrn("classif.svm")
    
    # Encadenar la imputación y el modelo en una tubería
    pipe = impute %>>% learn
    
    # Definir una estrategia de remuestreo (por ejemplo, validación cruzada de 5 pliegues)
    resampling = rsmp("cv", folds = 5)
    
    # Utilizar la función mlr3::resample con la tubería como modelo
    result = mlr3::resample(task, pipe, resampling)
    

    En este ejemplo, el paso de imputación se realiza dentro de cada pliegue del procedimiento de validación cruzada de 5 pliegues y luego se utiliza el conjunto de datos resultante para entrenar el modelo. Este enfoque asegura que la imputación se realice de forma independiente para cada pliegue, lo que lo hace más robusto y menos propenso al sobreajuste u otros problemas que puedan surgir con la imputación en todas las observaciones.

Comments are closed.