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 voted
es 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, glm
por supuesto , es más apropiado, pero cuando hay muchas variables, interacciones y / o valores faltantes, y / o conjuntos de datos a gran escala, etc., glm
no 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).
fuente
Respuestas:
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
country
es 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).fuente
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
fuente
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_2
pero nocountry_3
. Si deja la variable de grupo como un entero, el orden también puede afectar el resultado. ¿Qué significa paracountry > 5
ycountry < 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,
country
ypopulation
son 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.fuente