Bosque aleatorio en datos multinivel / estructurados jerárquicamente

13

Soy bastante nuevo en el aprendizaje automático, las técnicas de CART y similares, y espero que mi ingenuidad no sea demasiado obvia.

¿Cómo maneja Random Forest estructuras de datos jerárquicas o de niveles múltiples (por ejemplo, cuando la interacción entre niveles es de interés)?

Es decir, conjuntos de datos con unidades de análisis en varios niveles jerárquicos ( por ejemplo , estudiantes anidados dentro de las escuelas, con datos sobre los estudiantes y las escuelas).

Solo como ejemplo, considere un conjunto de datos de niveles múltiples con individuos en el primer nivel ( por ejemplo , con datos sobre el comportamiento de votación, demografía, etc.) anidados dentro de los países en el segundo nivel (con datos a nivel de país; por ejemplo , población):

ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54

Digamos que esa votedes la respuesta / variable dependiente y las otras son predictoras / variables independientes. En este tipo de casos, los márgenes y los efectos marginales de una variable (dependencia parcial) para alguna variable de nivel superior ( por ejemplo , population) para diferentes variables de nivel individual, etc., podrían ser muy interesantes. En un caso similar a este, glmpor supuesto , es más apropiado, pero cuando hay muchas variables, interacciones y / o valores faltantes, y / o conjuntos de datos a gran escala, etc., glmno es tan confiable.

Preguntas secundarias: ¿Puede Random Forest manejar explícitamente este tipo de estructura de datos de alguna manera? Si se usa independientemente, ¿qué tipo de sesgo introduce? Si Random Forest no es apropiado, ¿existe algún otro método de tipo conjunto?

(Pregunta El bosque aleatorio en datos agrupados es quizás similar, pero realmente no responde a esto).

Mikael Poul Johannesson
fuente
Hola @MikaelAndersson, ¿encontraste una solución a las preguntas que planteaste? Estoy enfrentando una situación similar y espero escuchar tu experiencia. Gracias.
NoviceProg

Respuestas:

4

Los bosques aleatorios funcionarían bien, pero debe tener mucho cuidado al ajustar los hiperparámetros (especialmente si desea una medida realista del rendimiento de generalización). Las estimaciones de error OOB tradicionales serán muy optimistas ya que hay un "hermanamiento" desenfrenado en sus datos.

Para obtener estimaciones de sintonización y generalización adecuadas, debe comprender cuáles son las características de los datos nuevos que espera encontrar. Si desea extrapolar a nuevos países, deberá configurar algún tipo de ajuste basado en re-muestreo (como la validación cruzada de k-fold) que muestre el muestreo estratificado por país.

También debe tener cuidado de cómo codificar los datos en un bosque aleatorio. Parece que countryes una variable categórica. Introducirlo como un valor numérico sería un poco tosco, pero no desesperado (especialmente si ordenó las ID por algo útil).

Shea Parkes
fuente
¿Podría ampliar un poco sobre por qué las estimaciones de error OOB serán demasiado optimistas?
dmartin
2
Supongo que su optimismo depende de cómo se vean los nuevos datos. Si los nuevos datos provienen de otros condados, entonces este bosque aleatorio probablemente no funcionaría tan bien como indican los errores OOB. Esto se debe a que los errores OOB todavía provienen de muestras del mismo conjunto de condados, por ejemplo.
Shea Parkes
3

De hecho, estoy trabajando en un paquete R que ejecuta randomForest como el clasificador local a lo largo de una jerarquía de clases predefinida. El paquete se puede encontrar en R Forge en 'hie-ran-forest'. El paquete ya está operativo, aunque está fallando una de las pruebas de cran (para MAC), no estoy seguro exactamente por qué. Además de ejecutar randomForest para cada nodo padre en la jerarquía, el paquete también contiene funciones de predicción y funciones de rendimiento. Una de las medidas de rendimiento en realidad explica la estructura jerárquica de clases.

El paquete aborda la interacción entre niveles al ejecutar primero un bosque aleatorio como el clasificador local en cada nodo padre de la jerarquía de clases. Luego, la función de predicción recupera la proporción de votos fuera de bolsa que cada caso recibió en cada clasificador local. Luego, hay dos formas de convertir la proporción de votos en una clasificación nítida: 1. una regla de mayoría gradual: comience con el clasificador local más cercano a la raíz del árbol y seleccione el elemento secundario de este clasificador que recibió la mayor proporción de votos. A continuación, observe todos los elementos secundarios del nodo seleccionado y vuelva a seleccionar el elemento secundario que recibió la mayor proporción de votos en el clasificador local relevante. Continúe hasta llegar a un nodo terminal. 2)

La proporción multiplicativa de votos es comparable a la proporción de votos producida por un bosque aleatorio regular

Yoni Gavish
fuente
2
¿Puede aclarar que su paquete aborda las "interacciones entre niveles" y, de ser así, cómo lo hace? Solo decir que existe un paquete no es una gran respuesta (no quiero ser demasiado crítico aquí, pero CV está buscando construir un repositorio permanente de información de alta calidad y el hecho de que exista un paquete no bastante cumplir con ese estándar.)
gung - Restablecer Monica
Tenga en cuenta que su nombre de usuario, con un enlace a su página de usuario, se adjunta automáticamente a cada publicación que haga aquí. Por lo tanto, no es necesario firmar sus publicaciones; de hecho, preferimos que no lo haga. Si desea que las personas puedan contactarlo, puede publicar un método (por ejemplo, su dirección de correo electrónico) en su página de usuario.
gung - Restablece a Monica
Eso es genial, gracias @YoniGavish. ¿Por qué no edita su respuesta y agrega esa información?
gung - Restablece a Monica
¿Eso es mejor @gung?
Yoni Gavish
Sí, eso lo hará, @YoniGavish, +1. Bienvenido al sitio.
gung - Restablecer Monica
3

En un solo árbol de clasificación, estos grupos se codifican igual que cualquier otra variable categórica. Esto a menudo se realiza como codificación binaria o simplemente usando un número entero. Hay diferentes argumentos para usar cualquiera. En bosques aleatorios si está utilizando codificación binaria, algunos grupos serán incluidos / excluidos para cualquier árbol dado. Entonces puede tener un indicador para country_2pero no country_3. Si deja la variable de grupo como un entero, el orden también puede afectar el resultado. ¿Qué significa para country > 5y country < 12? ¿Cómo cambia eso si se vuelve a etiquetar aleatoriamente los países con nuevos enteros?

En cada paso en el crecimiento de un árbol, el algoritmo busca la división que optimiza los criterios. Si hay grandes diferencias entre los grupos, entonces la variable de agrupación será importante, pero si solo es moderadamente importante y poda un árbol, entonces la variable puede esencialmente excluirse.

Como la mayoría de los otros algoritmos de aprendizaje automático, CART y los bosques aleatorios no necesariamente tienen en cuenta la dependencia entre las observaciones dentro de los grupos de la manera que esperaría en un modelo de regresión jerárquica. Si no es la dependencia entre las observaciones, debe ser capturada por el algoritmo aleatorio forestal a través de la generación de muchos árboles que utilizan la variable de agrupación. Sin embargo, si otras variables demuestran una mayor discriminación, la variable de agrupación puede ignorarse.

En su caso, countryy populationson perfectamente colineales. No se obtiene información al usar ambas variables en su modelo. Entonces puede pensar en cómo un modelo de bosque aleatorio trataría estas variables en sus datos.

Ellis Valentiner
fuente