¿Cómo elegir la división en bosque aleatorio para predictores categóricos (características)?

8

Entiendo cómo se elige la mejor división para bosque aleatorio para predictores numéricos (características).

Los predictores numéricos se ordenan para cada valor, se calcula la impureza o entropía de Gini y se elige un umbral que proporciona la mejor división. Pero, ¿cómo se elige la mejor división para el predictor categórico ya que no hay un pedido específico?

Ajay
fuente

Respuestas:

9

La implementación habitual de vainilla intenta todas las combinaciones posibles de sus categorías. Expresa estas combinaciones como un número entero que representa qué categorías se seleccionan y cuáles se excluyen en la división. Va de izquierda a derecha. Por ejemplo, si tiene una variable con las clases "Gato", "Perro", "Vaca", "Rata", se desplazaría a través de posibles divisiones, lo que significa algo como:

Perro contra el resto = 0100 (recuerde, lea de izquierda a derecha)

Gato vs el resto = 1000

Por sí mismos, pero también

Perro y Gato vs Vaca y Rata = 1100

Vaca y Gato vs Perro y Rata = 1010

Y luego, como se mencionó, usa números enteros para manejar esto, para representar la división:

library(R.utils)
> intToBin(12)
[1] "1100"
JEquihua
fuente
0

El bosque es un método conjunto de árboles. Entonces, creo que su pregunta se basa más en el algoritmo de árboles sobre la división de variables. Hay dos tipos de predictores categóricos, factor ordenado y factor no ordenado.

El factor ordenado es similar a la variable numérica y el bosque aleatorio encontrará el punto de corte, mientras que el último usa otro algoritmo como se muestra a continuación.

Intentará detectar el primer nivel del factor como la división e intentará adaptarse al modelo y encontrar el rendimiento con la función de pérdida. Luego intente encontrar el segundo nivel y vuelva a ajustarlo y encuentre el rendimiento, etc. Al final, encuentra las mejores combinaciones de niveles de división según el mejor rendimiento.

Por lo tanto, encontrará que lleva mucho más tiempo y memoria para que el modelo de árboles o el modelo de bosque aleatorio se ajuste a factores que numéricos.

Vincent
fuente
0

Si sus características son categóricas, la primera idea que se me ocurre es crear una característica binaria para cada valor posible en la categoría.

Por lo tanto, si tiene una función correspondiente a "marca de teléfono móvil" que solo puede ser "Samsung, Apple, HTC o Nokia", la representaría en cuatro categorías (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0) y (0, 0, 0, 1) respectivamente. De esta forma, el umbral seleccionará entre ser una marca o cualquiera de los otros en cada división, sin tener efectos extraños.

¡Espero que esto ayude!

Cristina
fuente
0

Elija algunas categorías aleatorias y use la categoría que ofrezca la mejor división, o elija algunas combinaciones aleatorias de categorías y use la combinación que proporcione la mejor división.

Creo que realmente no importa cuál de los dos métodos elija, ya que la división en una combinación de categorías en un solo nodo se puede simular dividiendo en una sola categoría en varios nodos.

Germán
fuente