Tengo un conjunto de datos con N ~ 5000 y falta aproximadamente 1/2 en al menos una variable importante. El principal método analítico será el riesgo proporcional de Cox.
Planeo usar la imputación múltiple. También me dividiré en un tren y un set de prueba.
¿Debo dividir los datos y luego imputarlos por separado, o imputar y luego dividir?
Si es importante, lo usaré PROC MI
en SAS
.
cross-validation
survival
multiple-imputation
train
Peter Flom - Restablece a Monica
fuente
fuente
Respuestas:
Debes dividir antes de preprocesar o imputar.
La división entre entrenamiento y conjunto de prueba es un intento de replicar la situación en la que tiene información pasada y está creando un modelo que probará en información futura aún desconocida: el conjunto de entrenamiento toma el lugar del pasado y el conjunto de prueba toma el lugar del futuro, por lo que solo puede probar su modelo entrenado una vez.
Teniendo en cuenta la analogía pasado / futuro, esto significa cualquier cosa que haga para preprocesar o procesar sus datos, como imputar valores perdidos, debe hacer solo en el conjunto de capacitación. Luego puede recordar lo que le hizo a su conjunto de entrenamiento si su conjunto de prueba también necesita preprocesamiento o imputación, de modo que lo haga de la misma manera en ambos conjuntos.
Agregado de los comentarios: si usa los datos de la prueba para afectar los datos de entrenamiento, entonces los datos de la prueba se están utilizando para construir su modelo, por lo que deja de ser datos de prueba y no proporcionará una prueba justa de su modelo. Corre el riesgo de sobreajustar, y fue para desalentar esto que separó los datos de prueba en primer lugar
fuente
Creo que será mejor que te separes antes de imputar. Para los casos, es posible que desee imputar los valores faltantes con la media de la columna. En este caso, si se imputa primero con el conjunto de datos válidos tren + y luego se divide, entonces ha utilizado el conjunto de datos de validación antes de construir su modelo, que es la forma en que aparece un problema de fuga de datos.
Pero puede preguntar, si imputo después de dividir, puede ser demasiado tedioso cuando necesito hacer una validación cruzada. Mi sugerencia para eso es usar sklearn pipeline. Realmente simplifica su código y reduce la posibilidad de cometer un error. Ver tubería
fuente
Solo para agregar lo anterior, también favorecería la división antes de la imputación o cualquier tipo de preprocesamiento. Nada de lo que haga con los datos de entrenamiento debe ser informado por los datos de la prueba (la analogía es que el futuro no debería afectar el pasado). Luego puede recordar lo que le hizo a su conjunto de entrenamiento si su conjunto de prueba también necesita preprocesamiento o imputación, de modo que lo haga de la misma manera en ambos conjuntos (la analogía es que puede usar el pasado para ayudar a predecir el futuro) .
Si utiliza los datos de prueba para afectar los datos de entrenamiento de alguna manera, entonces los datos de prueba se están utilizando para construir su modelo, por lo que deja de ser datos de prueba y no proporcionará una prueba justa de su modelo. ¡Corre el riesgo de un ajuste excesivo, y fue para desalentar esto que separó los datos de prueba en primer lugar!
Creo que el paquete caret en r es muy útil en ese entorno. En particular, encontré que la publicación es extremadamente útil https://topepo.github.io/caret/model-training-and-tuning.html
fuente