46 votos

Cómo lidiar con jerárquica / datos anidados en el aprendizaje de máquina

Voy a explicar mi problema con un ejemplo. Supongamos que se desea predecir el ingreso de un individuo, dado que algunos atributos: {Edad, Género, País, Región, Ciudad}. Usted tiene un conjunto de datos de entrenamiento, como así

train <- data.frame(CountryID=c(1,1,1,1, 2,2,2,2, 3,3,3,3), 
             RegionID=c(1,1,1,2, 3,3,4,4, 5,5,5,5), 
             CityID=c(1,1,2,3, 4,5,6,6, 7,7,7,8), 
             Age=c(23,48,62,63, 25,41,45,19, 37,41,31,50), 
             Gender=factor(c("M","F","M","F", "M","F","M","F", "F","F","F","M")),
             Income=c(31,42,71,65, 50,51,101,38, 47,50,55,23))
train
   CountryID RegionID CityID Age Gender Income
1          1        1      1  23      M     31
2          1        1      1  48      F     42
3          1        1      2  62      M     71
4          1        2      3  63      F     65
5          2        3      4  25      M     50
6          2        3      5  41      F     51
7          2        4      6  45      M    101
8          2        4      6  19      F     38
9          3        5      7  37      F     47
10         3        5      7  41      F     50
11         3        5      7  31      F     55
12         3        5      8  50      M     23

Ahora supongamos que deseamos predecir el ingreso de una nueva persona que vive en la Ciudad 7. Mi conjunto de entrenamiento tiene la friolera de 3 muestras con la gente en la Ciudad 7 (se supone que esto es un montón), por lo que probablemente puede utilizar el promedio de los ingresos en la Ciudad de 7 a predecir el ingreso de este nuevo individuo.

Ahora supongamos que deseamos predecir el ingreso de una nueva persona que vive en la Ciudad 2. Mi conjunto de entrenamiento sólo tiene 1 muestra la Ciudad con 2 por lo que el ingreso promedio en la Ciudad 2 probablemente no es un predictor fiable. Pero yo probablemente puede utilizar el promedio de los ingresos en la Región 1.

Extrapolando esta idea un poco, puedo transformar mi conjunto de datos de entrenamiento como

    Age Gender CountrySamples CountryIncome RegionSamples RegionIncome CitySamples CityIncome
 1:  23      M              4         52.25             3        48.00           2    36.5000
 2:  48      F              4         52.25             3        48.00           2    36.5000
 3:  62      M              4         52.25             3        48.00           1    71.0000
 4:  63      F              4         52.25             1        65.00           1    65.0000
 5:  25      M              4         60.00             2        50.50           1    50.0000
 6:  41      F              4         60.00             2        50.50           1    51.0000
 7:  45      M              4         60.00             2        69.50           2    69.5000
 8:  19      F              4         60.00             2        69.50           2    69.5000
 9:  37      F              4         43.75             4        43.75           3    50.6667
10:  41      F              4         43.75             4        43.75           3    50.6667
11:  31      F              4         43.75             4        43.75           3    50.6667
12:  50      M              4         43.75             4        43.75           1    23.0000

Así, el objetivo es combinar de alguna manera el promedio de CityIncome, RegionIncome, y CountryIncome mientras que utilizando el número de muestras de formación para cada uno a dar un peso/credibilidad a cada valor. (Idealmente, incluyendo la información de la Edad y el Género.)

¿Qué son los consejos para resolver este tipo de problema? Yo prefiero usar el árbol basado en modelos como el bosque aleatorio o gradiente de impulsar, pero estoy teniendo problemas para conseguir estos para realizar el bien.

ACTUALIZACIÓN

Para cualquier persona dispuesta a tomar una puñalada en este problema, he generado datos de la muestra para probar la solución que usted propone aquí.

24voto

Randel Puntos 3040

He estado pensando acerca de este problema por un tiempo, con inspiraciones de las siguientes preguntas en este sitio.

Permítanme introducir primero los modelos de efectos mixtos para jerárquica/anidada de los datos y empezar a partir de un sencillo de dos niveles (modelo de muestras anidada dentro de las ciudades). Para el $j$-ésima muestra en la $i$-ésimo de la ciudad, se escribe el resultado $y_{ij}$ como una función de las covariables $\boldsymbol x_{ij}$ (una lista de variables, como el género y la edad), $$ y_{ij}=f(\boldsymbol x_{ij})+{u_i}+\epsilon_{ij},$$ donde ${u_i}$ es el intercepto aleatorio para cada ciudad, $j=1,\ldots,n_i$. Si asumimos $u_i$ $\epsilon_{ij}$ siguen distribuciones normales con media 0 y las varianzas de las $\sigma^2_u$$\sigma^2$, el empírico Bayesiano (EB), la estimación de $u_i$ es $$\hat{u}_i=\frac{\sigma^2_u}{\sigma^2_u+\sigma^2/n_i}(\bar{\mathbf{y}}_{i.}-f(\bar{\boldsymbol x}_{i.})),$$ where $\bar{\mathbf{y}}_{i.}=\frac{1}{n_i}\sum_i^{n_i}y_{ij}$, $f(\bar{\boldsymbol x}_{i.})=\frac{1}{n_i}\sum_i^{n_i}f(\boldsymbol x_{ij}).$ If we treat $(\bar{\mathbf{y}}_{i.}-f(\bar{\boldsymbol x}_{i.}))$ as the OLS (ordinary least square) estimate of $u_i$, then the EB estimate is a weighted sum of 0 and the OLS estimate, and the weight is an increasing function of the sample size $n_i$. The final prediction is $$\hat{f}(\boldsymbol x_{ij})+\hat{u}_{i},$$ where $\hat{f}(\boldsymbol x_{ij})$ es la estimación de los efectos fijos de regresión lineal o método de aprendizaje de la máquina como el bosque aleatorio. Esto puede ser extendido fácilmente a cualquier nivel de los datos, dicen muestras anidada en las ciudades y, a continuación, las regiones y los países. Otros que el árbol basado en los métodos, no es un método basado en SVM.

Para el azar-el bosque-basado en el método, puede intentar MixRF() en nuestro paquete de R MixRF en CRAN.

9voto

dmartin Puntos 1030

Dado que sólo tiene dos variables y sencillo de anidación, me gustaría hacerme eco de las observaciones de los demás mencionar jerárquico Bayesiano del modelo. Se menciona una preferencia por los árboles, métodos, pero hay una razón particular para ello? Con un número mínimo de factores, me parece que la linealidad es a menudo una suposición válida que funciona bien, y cualquier modelo de mala especificación puede ser fácilmente controlados a través de gráficos de residuos.

Si usted tuvo un gran número de factores, RF ejemplo basado en la EM enfoque mencionado por @Randel sin duda sería una opción. Otra opción que no he visto todavía es utilizar el modelo basado en aumentar (disponible a través de la mboost paquete en R). En esencia, este método permite la estimación de la forma funcional de sus efectos fijos, utilizando diversas bases de estudiantes (lineal y no lineal), y el de efectos aleatorios, las estimaciones se aproximan mediante el uso de un canto basado en pena para todos los niveles en ese factor en particular. Este papel es un buen tutorial (efectos aleatorios base de los educandos se discuten en la página 11).

Eché un vistazo a la muestra de datos, pero parece que sólo tiene el de efectos aleatorios de las variables de la Ciudad, la Región y el País. En este caso, sólo sería útil para calcular el Empírico de Bayes estimaciones de los factores, independientes de cualquier predictores. Que en realidad podría ser un buen ejercicio para comenzar con, en general, como tal vez el más alto de los niveles (País, por ejemplo), tienen un mínimo de varianza explicada en el resultado, y por lo que probablemente no vale la pena añadir en su modelo.

5voto

Maran Puntos 2283

Esto es más de un comentario o sugerencia en lugar de una respuesta, pero creo que hacer una pregunta importante aquí. Como alguien que trabaja exclusivamente con los datos de múltiples niveles, puedo decir que he encontrado muy poco acerca de la máquina de aprendizaje con datos de múltiples niveles. Sin embargo, Dan Martin, un reciente graduado en psicología cuantitativa en la Universidad de Virginia, hizo su tesis doctoral sobre el uso de los árboles de regresión con datos de múltiples niveles. A continuación hay un enlace a un paquete de R que escribió para algunos de los siguientes propósitos:

https://github.com/dpmartin42/mleda/blob/master/README.md

También, usted puede encontrar su tesis aquí:

http://dpmartin42.github.io/about.html

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