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.](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*FBb3Z6GdjDWpqxMSlTHkpA.png)
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)
- Desbloquea el potencial de la ciencia de datos con tu portátil
- Introducción a Giskard Gestión de calidad de código abierto para modelos de inteligencia artificial
- Este artículo de IA tiene movimientos Cómo los modelos de lenguaje se adentran en el aprendizaje por refuerzo sin conexión con los pasos de baile de ‘LaMo’ y el aprendizaje de pocos disparos
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.](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*iPArBRb5TKPHk1iShEcvWg.png)
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.](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*er3AqUPXIkth0Ifrp9OF5w.png)
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.](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*51q42CSUNthXU1yF2bFsWw.png)
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Ahora, ¿por qué deberíamos preocuparnos por los Sistemas de Recomendación…? Con una introducción suave a Thompson Sampling
- Los Mejores Documentos Importantes de Visión por Computadora de la Semana del 30/10 al 5/11
- Reseña de HitPaw Photo Enhancer ¿El mejor Mejorador de Fotos de IA?
- 5 formas en las que puedes utilizar ChatGPT Vision para el análisis de datos
- xAI lanza PromptIDE Una nueva frontera en la ingeniería de prompts y transparencia de la inteligencia artificial
- Descifrando la verdad de los datos Cómo los modelos de lenguaje grandes utilizan las personas para modelar la veracidad
- OpenAI desvela GPT-4 Turbo Un avance personalizable hacia el futuro de la inteligencia artificial