¿La selección de características de Boruta (en R) tiene en cuenta la correlación entre las variables?

8

Soy un poco novato en R y en la selección de funciones, y he probado el paquete Boruta para seleccionar (disminuir) mi número de variables (n = 40). Pensé que este método también tenía en cuenta la posible correlación entre las variables, sin embargo, dos (de las 20 variables seleccionadas) están altamente correlacionadas y otras dos están completamente correlacionadas. ¿Esto es normal? ¿No debería el método Boruta haber clasificado a uno de los dos como sin importancia?

Charlotte
fuente

Respuestas:

10

..., dos (de las 20 variables seleccionadas) están altamente correlacionadas, y otras dos están completamente correlacionadas. ¿Esto es normal? ¿No debería el método Boruta haber clasificado a uno de los dos como sin importancia?

Si es normal. Boruta tiende a encontrar todas las características relevantes para la variable de respuesta . Hablando rigurosamente, se dice que una variable predictora es relevante para si e no son condicionalmente independientes dadas algunas otras variables predictoras (o no se les da nada, lo que simplemente significaría que e no son independientes).yxiyxiyxiy

Considere este simple ejemplo:

set.seed(666)
n <- 100
x1 <- rnorm(n)
x2 <- x1 + rnorm(n,sd=0.5)
x3 <- rnorm(n)
y <- x2 + rnorm(n) 

Usted ve que , entonces es relevante para , porque y no son independientes. También ve que y luego no es independiente de . La única variable que no es relevante para es , porque:y=x2+noisex2yyx2x2=x1+noiseyx2yx3

  • y y son independientesx3
  • y y son condicionalmente independientes dadox3x1
  • y y son independientes de la condición dadax3(x1,x2)

Entonces Boruta encuentra el resultado esperado:

> library(Boruta)
> Boruta(data.frame(x1,x2,x3), y)
Boruta performed 30 iterations in 2.395286 secs.
 2 attributes confirmed important: x1, x2.
 1 attributes confirmed unimportant: x3.

Existe una alta correlación entre y , pero a Boruta no le importa eso:x1x2

> cor(x1,x2)
[1] 0.896883
Stéphane Laurent
fuente
7

Se encuentra en la naturaleza del algoritmo. Supongamos que tenemos dos características significativasX1 y X2 que están fuertemente correlacionados

Del artículo http://arxiv.org/abs/1106.5112 (The All Relevant Feature Selection with Random Forest, Miron B. Kursa, Witold R. Rudnicki) podemos hacer una breve descripción del algoritmo boruta:

"Para abordar este problema, desarrollamos un algoritmo que proporciona criterios para la selección de atributos importantes. El algoritmo surge del espíritu del bosque aleatorio: nos enfrentamos a los problemas agregando más aleatoriedad al sistema. La idea esencial es muy simple: nosotros haga una copia aleatoria del sistema, combine la copia con el original y cree el clasificador para este sistema extendido. Para evaluar la importancia de la variable en el sistema original, la comparamos con la de las variables aleatorias. Solo variables cuya importancia es mayor que el de las variables aleatorias se consideran importantes ".

Esencialmente, el algoritmo de Boruta entrena un bosque aleatorio en el conjunto de características originales y aleatorias. Este bosque aleatorio durante el entrenamiento, como todos los bosques aleatorios, solo ve un subconjunto de todas las características en cada nodo. Por lo tanto, a veces no podrá elegir entreX1 y X2 al elegir la variable para el nodo actual y no puede preferir una de las dos variables X1 y X2 sobre el otro.

Esta es la razón por la cual Boruta no puede clasificar una de las variables X1 y X2como sin importancia Uno tendría que modificar el algoritmo de bosque aleatorio subyacente para ver siempreX1 y X2 con sus variables de sombra al azar X^1 y X^2en cada nodo Entonces, el bosque aleatorio a menudo podría, por ejemplo, seleccionar las variablesX1 y X^2 lo que resultaría en Boruta seleccionando variable X1 y rechazando X2. (AquíX2 es rechazado porque X^2 tiene mayor importancia que X2)

MaxBenChrist
fuente
¿Cómo se crean características aleatorias a partir de una característica dada
Milan Amrut Joshi
Si está familiarizado con Python / pandas.DataFrames puede encontrar una solución aquí: stackoverflow.com/questions/15772009/…
MaxBenChrist
3

Si es normal. El algoritmo de Boruta arroja atributos que no tienen valor para el clasificador, dejando el conjunto de atributos 'todos relevantes', que bien pueden incluir los correlacionados. Contraste eso con el conjunto 'mínimo-óptimo' (que no debe contener correlacionado).

Entonces, ¿por qué, entonces, debería uno usar este método para la selección de características? Puede encontrar útil esta cita del documento original :

Encontrar todos los atributos relevantes, en lugar de solo los no redundantes, puede ser muy útil en sí mismo. En particular, esto es necesario cuando uno está interesado en comprender los mecanismos relacionados con el tema de interés, en lugar de simplemente construir un modelo predictivo de caja negra.

Por ejemplo, cuando se trata de los resultados de las mediciones de expresión génica en el contexto del cáncer, la identificación de todos los genes relacionados con el cáncer es necesaria para una comprensión completa del proceso, mientras que un conjunto de genes mínimo óptimo puede ser más útil como marcadores genéticos.

Entonces, si su objetivo principal es comprender los vínculos causales entre los predictores y los resultados, considerar solo el conjunto óptimo de variables puede llevarlo por mal camino y debe estudiar el conjunto relevante.

Sin embargo, si lo que está buscando es un modelo eficiente para adaptarse, es mejor que use el conjunto óptimo mínimo.

Óskar Halldórsson Holm
fuente