7 votos

Corrección del desplazamiento de las covariables: ¿implementación estándar en R?

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:

  1. Eliminar las variables desplazadas. Esto es subóptimo, pero ayuda a evitar que mi modelo se ajuste en exceso al conjunto de entrenamiento.
  2. 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.

3voto

RoMa Puntos 401

No conozco ninguna función empaquetada para realizar la corrección del desplazamiento covariable, pero aquí hay algo que podría funcionar.

Se podría construir un clasificador de bosque aleatorio entre el conjunto de entrenamiento y el de prueba (para estimar las probabilidades del conjunto de prueba). A continuación, puede aprender un bosque aleatorio en el conjunto de entrenamiento mediante el muestreo de acuerdo con las probabilidades estimadas del conjunto de prueba. Esto aliviará su preocupación número 2, al permitir un aprendiz de función no lineal. (Por cierto, también puedes probar el paquete mboost, que tiene implementados varios tipos de boosting y es mucho más rápido que randomForest).

La concordancia de medias del kernel puede funcionar, pero no sería necesariamente mejor que cualquier otro clasificador no lineal que produzca probabilidades de clase, y además requiere elegir el kernel y sus hiperparámetros.

0voto

Shea Parkes Puntos 2014

Echa un vistazo a la twang en CRAN. Plantea el problema en términos de estudios observacionales y puntuación de propensión, pero la aplicación es la misma. Lea el artículo académico principal para obtener muchos más detalles y discusión: "Propensity Score Estimation with Boosted Regression for Evaluating Adolescent Substance Abuse Treatment".

Sin embargo, es un área realmente complicada. Si hay un solapamiento prueba/tren, entonces twang ( [ ]

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