Tengo un conjunto de datos en el que estoy trabajando que tiene algún cambio de covariable entre el conjunto de entrenamiento y el conjunto de prueba. Estoy tratando de construir un modelo predictivo para predecir un resultado, utilizando el conjunto de entrenamiento. Hasta ahora mi mejor modelo es un bosque aleatorio.
¿Cómo puedo hacer frente a las distribuciones desplazadas en el conjunto de entrenamiento frente al de prueba? Me he encontrado con 2 posibles soluciones que he podido implementar yo mismo:
- Eliminar las variables desplazadas. Esto es subóptimo, pero ayuda a evitar que mi modelo se ajuste en exceso al conjunto de entrenamiento.
- Utilice una regresión logística para predecir si una determinada observación pertenece al conjunto de pruebas (después de equilibrar las clases), prediga las "probabilidades del conjunto de pruebas" para el conjunto de entrenamiento y, a continuación, realice un muestreo boostrap del conjunto de entrenamiento, utilizando las probabilidades para el muestreo. A continuación, ajuste el modelo final en el nuevo conjunto de entrenamiento.
Tanto el 1 como el 2 son bastante fáciles de implementar, pero ninguno me satisface, ya que el 1 omite variables que podrían ser relevantes, y el 2 utiliza una regresión logística, cuando mi modelo final está basado en un árbol. Además, el #2 requiere unos cuantos párrafos de código personalizado, y me preocupa que mi implementación no sea correcta.
¿Cuáles son los métodos estándar para tratar el desplazamiento de las covariables? ¿Existen paquetes en R (u otro lenguaje) que implementen estos métodos?
/edit: Parece que el "kernel mean matching" es otro enfoque que podría adoptar. He encontrado muchos artículos académicos sobre el tema, pero nadie parece haber publicado ningún código. Voy a intentar implementar esto por mi cuenta, y publicaré el código como respuesta a esta pregunta cuando lo haga.