Bosques Aleatorios en 2023 Extensiones Modernas de un Método Poderoso

Bosques Aleatorios en 2023 Extensiones Modernas de un Método Poderoso en el Mundo de la Belleza y la Moda

Random Forests han recorrido un largo camino

Características de los métodos modernos de Random Forest. Fuente: Autor.

En términos de líneas de tiempo de Machine Learning, Random Forests (RFs), introducidos en el artículo seminal de Breimann ([1]), son antiguos. A pesar de su edad, siguen impresionando con su rendimiento y son un tema de investigación activo. El objetivo de este artículo es resaltar lo versátil que se ha vuelto el conjunto de herramientas de los métodos de Random Forest, enfocándonos en Generalized Random Forest (GRF) y Distributional Random Forest (DRF).

En resumen, la idea principal subyacente en ambos métodos es que los pesos producidos implícitamente por RF se pueden usar para estimar objetivos diferentes a la expectativa condicional. La idea de GRF es utilizar un Random Forest con un criterio de división adaptado al objetivo que se tiene en mente (por ejemplo, media condicional, cuantiles condicionales o el efecto de tratamiento condicional). La idea de DRF es adaptar el criterio de división para que se pueda estimar toda la distribución condicional. A partir de este objeto, se pueden derivar muchos objetivos diferentes en un segundo paso. De hecho, hablo principalmente sobre DRF en este artículo, ya que estoy más familiarizado con este método y es algo más simplificado (solo se ajusta un bosque para una amplia gama de objetivos). Sin embargo, todas las ventajas indicadas en la figura anterior también se aplican a GRF y, de hecho, el paquete DRF en R se basa en la implementación profesional de GRF. Además, el hecho de que el criterio de división de los bosques de GRF se adapte al objetivo significa que puede tener un mejor rendimiento que DRF. Esto es particularmente cierto para Y binario, donde se debe utilizar probability_forests(). Entonces, aunque hable principalmente sobre DRF, se debe tener en cuenta GRF en todo este artículo.

El objetivo de este artículo es proporcionar una visión general con enlaces a lecturas más profundas en las secciones correspondientes. Pasaremos por cada uno de los puntos en la figura anterior en sentido de las agujas del reloj, haremos referencia a los artículos correspondientes y lo resaltaremos con un pequeño ejemplo. Primero, resumo rápidamente los enlaces más importantes para una lectura más detallada a continuación:

Versatilidad/Rendimiento: Artículo VoAGI y Artículos Originales (DRF/GRF)

Valores Faltantes Incorporados: Artículo VoAGI

Medidas de Incertidumbre: Artículo VoAGI

Importancia de Variables: Artículo VoAGI

El Ejemplo

Tomamos X_1, X_2, X_4, …, X_10 independientemente uniformemente entre (-1,1) y creamos una dependencia entre X_1 y X_3 tomando X_3=X_1 + error uniforme. Luego simulamos Y como

## Cargar paquetes y funciones necesariaslibrary(drf)library(mice)source("drfnew_v2.R")## La función drfnew_v2.R está disponible a continuación, o en ## https://github.com/JeffNaef/drfupdate## Establecer parámetrosset.seed(10)n<-1000##Simular datos que experimentan un cambio tanto en la media como en la desviación estándar# Simular a partir de Xx1 <- runif(n,-1,1)x2 <- runif(n,-1,1)x3 <- x1+ runif(n,-1,1)X0 <- matrix(runif(7*n,-1,1), nrow=n, ncol=7)Xfull <- cbind(x1,x2, x3, X0)colnames(Xfull)<-paste0("X", 1:10)# Simular variable dependiente YY <- as.matrix(rnorm(n,mean = 0.8*(x1 > 0), sd = 1 + 1*(x2 > 0)))##También agregar valores faltantes MAR usando ampute del paquete miceX<-ampute(Xfull)$amphead(cbind(Y,X))           Y         X1          X2          X3          X4           X51 -3.0327466 -0.4689827  0.06161759  0.27462737          NA -0.6244630792  1.2582824 -0.2557522  0.36972181          NA -0.04100963  0.0095180473 -0.8781940  0.1457067 -0.23343321          NA -0.64519687 -0.9454263054  3.1595623  0.8164156  0.90997600  0.69184618 -0.20573331 -0.0074042985  1.1176545 -0.5966361          NA -1.21276055  0.62845399  0.8947034226 -0.4377359  0.7967794 -0.92179989 -0.03863182  0.88271415 -0.237635732          X6         X7          X8         X9        X101 -0.9290009  0.5401628  0.39735433 -0.7434697  0.88075582 -0.2885927  0.3805251 -0.09051334 -0.7446170  0.99353113 -0.5022541  0.3009541  0.29424395  0.5554647 -0.53418004  0.7583608 -0.8506881  0.22758566 -0.1596993 -0.71619765 -0.3640422  0.8051613 -0.46714833  0.4318039 -0.86740606 -0.3577590 -0.7341207  0.85504668 -0.6933918  0.4656891

Ten en cuenta que con la función ampute del paquete mice, agregamos valores faltantes Missing not at Random (MAR) en X para resaltar la capacidad de GRF/DRF para lidiar con valores faltantes. Además, en el proceso anterior, solo X_1 y X_2 son relevantes para predecir Y, todas las demás variables son variables “ruido”. Este tipo de configuración “escasa” podría ser común en conjuntos de datos de la vida real.

Ahora elegimos un punto de prueba para este ejemplo que utilizaremos a lo largo:

x<-matrix(c(0.2, 0.4, runif(8,-1,1)), nrow=1, ncol=10)print(x)     [,1] [,2]      [,3]      [,4]      [,5]      [,6]    [,7]      [,8][1,]  0.2  0.4 0.7061058 0.8364877 0.2284314 0.7971179 0.78581 0.5310279           [,9]     [,10][1,] -0.5067102 0.6918785

Versatilidad

DRF estima la distribución condicional P_{Y|X=x} en forma de pesos simples:

A partir de estos pesos, se pueden calcular una amplia gama de objetivos o se pueden utilizar para simular la distribución condicional. Una buena referencia de su versatilidad es el artículo de investigación original aquí, donde se utilizaron muchos ejemplos, así como el correspondiente artículo de VoAGI.

En el ejemplo, primero simulamos a partir de esta distribución:

DRF<-drfCI(X=X, Y=Y, B=50,num.trees=1000, min.node.size = 5)DRFpred<-predictdrf(DRF, newdata=x)## Muestra de P_{Y| X=x}Yxs<-Y[sample(1:n, size=n, replace = T, DRFpred$weights[1,])]hist(Yxs, prob=T)z<-seq(-6,7,by=0.01)d<-dnorm(z, mean=0.8 * (x[1] > 0), sd=(1+(x[2] > 0)))lines(z,d, col="darkred"  )
Histograma de la distribución condicional simulada superpuesto con la verdadera densidad (en rojo). Fuente: Autor.

La gráfica muestra las aproximaciones de la distribución condicional superpuestas con la verdadera densidad en rojo. Ahora usaremos esto para estimar la expectativa condicional y los cuantiles condicionales (0.05, 0.95) en x:

# Calcular la predicción de cuantil como cuantiles ponderados desde Yqx <- quantile(Yxs, probs = c(0.05,0.95))# Calcular la predicción de la media condicionada mux <- mean(Yxs)# Verdaderos cuantilesq1<-qnorm(0.05, mean=0.8 * (x[1] > 0), sd=(1+(x[2] > 0)))q2<-qnorm(0.95, mean=0.8 * (x[1] > 0), sd=(1+(x[2] > 0)))mu<-0.8 * (x[1] > 0)hist(Yxs, prob=T)z<-seq(-6,7,by=0.01)d<-dnorm(z, mean=0.8 * (x[1] > 0), sd=(1+(x[2] > 0)))lines(z,d, col="darkred"  )abline(v=q1,col="darkred" )abline(v=q2, col="darkred" )abline(v=qx[1], col="darkblue")abline(v=qx[2], col="darkblue")abline(v=mu, col="darkred")abline(v=mux, col="darkblue")
Histograma de la distribución condicional simulada superpuesta con la verdadera densidad (en rojo). Además, la expectativa condicional estimada y los cuantiles condicionales (0.05, 0.95) están en azul, con los valores verdaderos en rojo. Fuente: Autor.

Del mismo modo, se pueden calcular muchos objetivos con GRF, solo que en este caso para cada uno de esos dos objetivos se tendría que ajustar un bosque diferente. En particular, regression_forest() para la expectativa condicional y quantile_forest() para los cuantiles.

Lo que GRF no puede hacer es manejar objetivos multivariados, lo cual es posible con DRF también.

Rendimiento

A pesar de todo el trabajo en nuevos métodos (no paramétricos) poderosos, como las redes neuronales, los métodos basados en árboles son consistentemente capaces de superar a los competidores en datos tabulares. Vea, por ejemplo, este fascinante artículo, o este artículo más antiguo sobre la fortaleza de RF en la clasificación.

Siendo justos, con la afinación de parámetros, los métodos de árboles mejorados, como XGboost, a menudo toman la delantera, al menos cuando se trata de predicción clásica (que corresponde a la estimación de la expectativa condicional). No obstante, el rendimiento robusto que suelen tener los métodos RF sin ninguna afinación es notable. Además, también se ha trabajado en mejorar el rendimiento de los Bosques Aleatorios, por ejemplo, el enfoque de Bosques Aleatorios cobertizados.

Incorporación de Valores Faltantes

El criterio “Missing incorporated in attributes” (MIA) de este artículo es una idea muy simple pero muy poderosa que permite que los métodos basados en árboles manejen datos faltantes. Esto se implementó en el paquete R GRF y también está disponible en DRF. Los detalles también se explican en este artículo de VoAGI. Tan simple como es el concepto, funciona notablemente bien en la práctica: En el ejemplo anterior, DRF no tuvo problemas para manejar una falta sustancial de datos faltantes MAR en los datos de entrenamiento X (!)

Medidas de Incertidumbre

Como estadístico, no solo quiero estimaciones puntuales (incluso de una distribución), sino también una medida de incertidumbre de estimación de mis parámetros (incluso si el “parámetro” es toda mi distribución). Resulta que un simple subsampling adicional incorporado en DRF/GRF permite una cuantificación de incertidumbre con fundamentos para muestras grandes. La teoría detrás de esto en el caso de DRF se deriva en este artículo de investigación, pero también lo explico en este artículo de VoAGI. GRF tiene toda la teoría en el artículo original.

Adaptamos esto para el ejemplo anterior:

# Calcular incertidumbrealpha<-0.05B<-length(DRFpred$weightsb)qxb<-matrix(NaN, nrow=B, ncol=2)muxb<-matrix(NaN, nrow=B, ncol=1)for (b in 1:B){Yxsb<-Y[sample(1:n, size=n, replace = T, DRFpred$weightsb[[b]][1,])]qxb[b,] <- quantile(Yxsb, probs = c(0.05,0.95))muxb[b] <- mean(Yxsb)}CI.lower.q1 <- qx[1] - qnorm(1-alpha/2)*sqrt(var(qxb[,1]))CI.upper.q1 <- qx[1] + qnorm(1-alpha/2)*sqrt(var(qxb[,1]))CI.lower.q2 <- qx[2] - qnorm(1-alpha/2)*sqrt(var(qxb[,2]))CI.upper.q2 <- qx[2] + qnorm(1-alpha/2)*sqrt(var(qxb[,2]))CI.lower.mu <- mux - qnorm(1-alpha/2)*sqrt(var(muxb))CI.upper.mu <- mux + qnorm(1-alpha/2)*sqrt(var(muxb))hist(Yxs, prob=T)z<-seq(-6,7,by=0.01)d<-dnorm(z, mean=0.8 * (x[1] > 0), sd=(1+(x[2] > 0)))lines(z,d, col="darkred"  )abline(v=q1,col="darkred" )abline(v=q2, col="darkred" )abline(v=qx[1], col="darkblue")abline(v=qx[2], col="darkblue")abline(v=mu, col="darkred")abline(v=mux, col="darkblue")abline(v=CI.lower.q1, col="darkblue", lty=2)abline(v=CI.upper.q1, col="darkblue", lty=2)abline(v=CI.lower.q2, col="darkblue", lty=2)abline(v=CI.upper.q2, col="darkblue", lty=2)abline(v=CI.lower.mu, col="darkblue", lty=2)abline(v=CI.upper.mu, col="darkblue", lty=2)
Histograma de la distribución condicional simulada superpuesta con la densidad real (en rojo). Además, la expectativa condicional estimada y los cuantiles condicionales (0,05, 0,95) están en azul, con los valores reales en rojo. Además, las líneas rojas punteadas son los intervalos de confianza para las estimaciones calculadas por DRF. Fuente: Autor.

Como se puede ver en el código anterior, esencialmente tenemos B subárboles que se pueden utilizar para calcular la medida cada vez. A partir de estas B muestras de medias y cuantiles, luego podemos calcular las varianzas y utilizar una aproximación normal para obtener intervalos de confianza (asintóticos) vistos en la línea punteada en la Figura. Nuevamente, todo esto se puede hacer a pesar de los valores faltantes en X(!).

Importancia de las variables

Un aspecto importante final de Random Forests es el cálculo eficiente de las medidas de importancia de las variables. Si bien las medidas tradicionales son algo ad hoc, tanto para Random Forests tradicional como para DRF, ahora hay medidas fundamentadas disponibles, como se explica en este artículo de VoAGI. Para Random Forests, el método Sobol-MDA identifica de manera confiable las variables más importantes para la estimación de la expectativa condicional, mientras que para DRF, el MMD-MDA identifica las variables más importantes para la estimación de la distribución en general. Como se discute en el artículo, utilizando la idea de Random Forests proyectados, estas medidas se pueden implementar de manera muy eficiente. Lo demo

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce a Gemini el innovador modelo multimodal de IA de Google que redefine el futuro de la inteligencia artificial

La última incursión de Google en la inteligencia artificial, Gemini, representa un salto significativo en la tecnolog...

Inteligencia Artificial

Las 10 principales startups de IA generativa en el mundo

Introducción La inteligencia artificial generativa está atrayendo la curiosidad de personas de todo el mundo. Los per...

Inteligencia Artificial

Desvelando GPTBot La audaz movida de OpenAI para rastrear la web

En un torbellino de innovación digital, OpenAI ha dado un golpe sorprendente al lanzar GPTBot, un rastreador web dise...

Inteligencia Artificial

Microsoft lanza Orca 2 Pionera en la lógica avanzada en modelos de lenguaje más pequeños con estrategias de entrenamiento personalizadas

Los LLM (Modelos de Lenguaje Grande) se entrenan en grandes volúmenes de datos textuales para comprender y producir l...

Inteligencia Artificial

Ayudando a la Visión por Computadora y a los Modelos de Lenguaje a Comprender lo que Ven

El Instituto de Tecnología de Massachusetts y otros investigadores desarrollaron una técnica que utiliza datos genera...